RDB の変更点


#author("2022-10-01T11:46:57+09:00","default:k1rou","k1rou")
#author("2022-10-01T11:48:20+09:00","default:k1rou","k1rou")
*RDB [#y20a7700]
-Relational DataBase
-関係データベース

*RDB の構造 [#v41147b4]
-表
--列と行の2次元の表
-列
--属性、アトリビュート(Attribute)
-行
--組、タプル(Tuple)

*RDB の仕組み [#n9af3bd4]
**キー [#g8f342a7]
-スーパーキー
--super key
--データ(行)を一意に特定することができる属性(列)

-候補キー
--candidate key
--スーパーキーの中で、データ(行)を一意に特定する上で必要最小限の属性(列)
--候補キーの性質
---一意制約が設定される
---1つの表に候補キーが1つとは限らない

-主キー
--primary key
--候補キーの中から代表で選ばれたもの
--候補キーの性質
---一意制約が設定される
---NOT NULL制約が設定される

-代理キー
--alternate key
--候補キーの中から代表で選ばれなかったもの

-外部キー
--foreign key
--他の表を参照する属性(列)
--一般的には被参照表(外部キーによって参照される表)の主キーを参照する
--外部キーの参照制約
---被参照表に値が存在することを保証すること
--外部キーの性質
---NOT NULL制約が設定されていなければNULLは許可される

-代用キー
--surrogate key
--主キーが複数の属性(列)で構成されている場合に、連番などで追加する属性のこと
--代用キーを設ける場合、代理キー以外の属性は非キー属性の代理キーにする

*RDB の正規化 [#fb2ca039]
**関係従属 [#vbf7e9b9]
-部分関数従属
-完全関数従属
-推移的関数従属

**正規化の手順 [#gef886b1]
-第1正規化
--表の繰り返し部分を排除した第1正規形の表を作成する
--繰り返し部分を別の表に分解する
--分解された表は結合により元の表を再現できる
-第2正規化
--第1正規形の表の全ての非キー属性が候補キーに完全関数従属した第2正規形の表を作成する
--候補キーの一部に部分関数従属する非キー属性を別の表に分解する
-第3正規化
--第2正規形の表の全ての非キー属性が候補キーに関数従属した第3正規形の表を作成する
--非キー属性間の関数従属をなくした状態にする
--候補キーに推移的関数従属している非キー属性を別の表に分解する

*RDB の演算 [#r7712011]
**集合演算 [#g2cbaf3c]
-和 ※UNION / UNION ALL
-共通(積) ※INTERSECT
-差 ※EXCEPT
-直積

**関係演算 [#cd836602]
-選択・射影
-結合
--内結合 ※INNER JOIN
--外結合 ※OUTER JOIN
---左外結合 ※LEFT OUTER JOIN
---右外結合 ※RIGHT OUTER JOIN
---完全外結合 ※FULL OUTER JOIN


*RDBMS [#ra095e9a]
-RDBのデータベース管理システム

**RDBMS([[パブリックドメイン]]) [#x9967e01]
-[[SQLite]]

**RDBMS([[OSS]]) [#n4be42d7]
-[[Apache Derby]]
-[[Firebird]]
-[[MySQL]]
-[[MariaDB]]
-[[Percona Server]]
-[[PostgreSQL]]

**RDBMS(有償) [#u62cba9b]
-Access -Microsoft
-[[Amazon Aurora]] -[[Amazon]]
-[[DB2]] -[[IBM]]
-[[Cloud Spanner]] -[[Google]]
-[[Oracle]]
-[[SQL Server]] -Microsoft
-[[Sybase]]

*関連用語 [#ld8f0dee]
-[[データベース]]
-[[トランザクション]]
-[[SQL]]