OSS-DB Silver 暗記 A-2
Contents
一般知識(16%):::RDBに関する一般知識【重要度:4】
DBMS
DBMS(Data Base Management System)の主な機能
- データベース言語 : SQL(RDBMS)でDBを定義・操作・制御する
- データ整合性 : 不正データの登録・更新を防ぐ
- トランザクション処理: 一貫性のあるDB操作
- セキュリティ : 不正アクセス対策
- 障害復旧 : バックアップとログ
暗記
- 専用言語(SQL)でシステムを操作
- データを守る
- 不正データ、不正アクセス、システムダウン
- 複数同時処理(トランザクション)
DB設計
- 概念設計: 現実世界分析、ER図、クラス図
- 論理設計: テーブル定義、正規化
- 物理設計: マシン構成・設定
関係・属性・組
- 関係・属性・組の別称
- 関係:テーブル、表
- 属性:列(column:カラム)
- 組 :行(row)、タプル
暗記
- 「関係」とは「テーブル」のこと
- 「属性」とは「列:column」のこと
暗記
- DB設計、最初は図、次にテーブル
- 要件を満たすか図を作って考える(ER図)
- テーブルにする(正規化)
SQL
- DDL(Definition:定義) テーブルを定義
- DML(Manipulation:操作)テーブルの行操作
- DCL(Control:制御) トランザクション制御
DMC を覚えれば何とかなりそうですが、CMD が覚えられない(すぐ忘れる)ので、語呂にしました。
- MCD:マクドナルドのティッカーシンボル・・・???
- CMD:コマンド・・・・・・・・・・・・・・・SQL-CMD(SQLコマンド)!
※ティッカーシンボル:株式売買で銘柄を識別するための略称。アップル(AAPL)・・・
暗記
- SQLコマンド(CMD)・マクド(MCD)もあるよ!
SQLの分類(SQL-CMD:マクド)
- DDL(Data Definition Language)
- テーブル定義:create, alter, drop
- データベースオブジェクト定義
- DML(Data Manipulation Language)
- テーブルの行操作:select, insert, update, delete
- DCL(Data Control Language)
- テーブルの権限(grant, revoke)
- トランザクション(commit, rollback)
暗記
- 英語のニュアンスとして
- 上位 ↑:Control は管理する(全体を)
- 下位 ↓:Manipulation は操作する(個々を)
- 強さで例えると
- 最強:Definition:テーブル自体を作成削除(改変)
- 上位:Control:テーブルを管理(権限を操作)
- 下位:Manipulation:テーブルの(個々の)行操作
※例えは、適宜読み替えてください
正規化
候補キー、主キー、非キー属性
- 候補キー :行を一意に識別できる属性
- 主キー :候補キーの中の一つ
- 非キー属性:候補キー以外の属性
例:市町村テーブル
- 市町村テーブルにおいて
- 候補キー :市町村コード と { 市町村名, 都道県名 }
- 主キー :候補キーの内のどちらか
- 非キー属性:男、女、計、世帯数
※属性の集合は { } で括る
暗記
- 非キー属性(列)は、候補キー以外の属性(列)
関数従属性
- 定義:
- R を関係(テーブル)として、X と Y をそれぞれ R の属性(列)とすると、
- X の値を決めれば、Y の値がただ1つ決まるとき、
- 属性 Y は属性 X に関数従属するという
- 表記:
- X → Y と表記し、X を決定項、Y を従属項とよぶ
- 例 :
- 市町村テーブル
- 市町村コード → 世帯数
- 市町村コード → 女
- { 市町村名, 都道県名 } → 計
- { 市町村名, 都道県名 } → 男
- ・・・, etc.
- 市町村テーブル
完全関数従属
- 定義:
- X → Y で、かつ X の任意の真部分集合 P について
- P → Y が成立しない場合、
- 属性 Y は 属性 X に完全関数従属するという
- X の真部分集合 P :
- 例えば、属性 X が { A, B } であるとすると、
- 真部分集合 P は以下となる
- { A }, { B }, { Φ }
※Φ は空集合のこと。
例:従業員台帳
- 従業員台帳
- 候補キーが、{ 会社コード, 従業員番号 } だとすると、
- { 会社コード, 従業員番号 } → 従業員名 で、かつ
- { 会社コード } → 従業員名は成立しない、{ 従業員番号 } → 従業員名は成立しないので
- 従業員名は { 会社コード, 従業員番号 } に完全関数従属している
部分関数従属
- 定義:
- X → Y で、かつ X のある真部分集合 P について
- P → Y が成立する場合、
- 属性 Y は 属性 X に部分関数従属するという
- X の真部分集合 P :
- 例えば、属性 X が { A, B } であるとすると、
- 真部分集合 P は以下となる
- { A }, { B }, { Φ }
- 従業員台帳
- 候補キーが、{ 会社コード, 従業員番号 } だとすると、
- { 会社コード, 従業員番号 } → 代表者名 で、かつ
- { 会社コード } → 代表者名が成立するので
- 代表者名は { 会社コード, 従業員番号 } に部分関数従属している
推移関数従属
- 定義:
- X → Y かつ Y → Z で、Y → X が成立しないとき、
- 属性 Z は 属性 X に推移関数従属するという
例:車台番号テーブル
- 自動車には一意の車台番号が付いている(マイナンバーのようなもの)
- 車台番号テーブル
- 候補キーは、車台番号である
- 車台番号 → 車両モデル で、かつ 車両モデル → 排気量 が成立していて、
- 車両モデル → 車台番号 が成立していないので
- 排気量は車台番号に推移関数従属している
正規形
- 非正規形 : 関係(表)がベクトル値を持つ
- 第1正規形: 関係がスカラ値のみを持つ
- 第2正規形: すべての非キー属性が、すべての候補キーに対して完全関数従属する
- 部分関数従属する部分を別の関係(表)に分割
- 第3正規形: すべての非キー属性が、すべての候補キーにたいして非推移的に関数従属する
- 推移関数従属する部分を別の関係(表)に分割
- ボイスコッド正規形:
参考
- IT資格といえばLPI-Japan | LinuC/OSS-DB/HTML5/ACCEL/OPCEL
- PostgreSQL 11.5文書
- OSS教科書 OSS-DB Silver Ver2.0対応
- 徹底攻略OSS-DB Silver問題集[Ver.2.0]対応
- スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)