#author("2022-10-01T11:48:20+09:00","default:k1rou","k1rou") #author("2024-09-24T22:57:43+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]] -[[TiDB]]