【りれーしょなるでーたべーす】

リレーショナルデータベース とは?

最終更新:
💡 表を基本に、データを検索・更新するDB

行と列からなる表を基本としてデータを扱うデータベース。リレーショナルのrelationは、表に対応する数学的な「関係」を指す。SQLで検索や更新を行い、主キー・外部キーなどの制約やJOINを利用できる。

📌 このページのポイント
表を基本にデータを扱う relationは表に対応する数学的な「関係」 顧客表 注文表 ID 名前 C1 田中 C2 鈴木 注文 顧客ID O1 C1 O2 C1 O3 C2 外部キー:顧客IDの参照を守る JOIN:IDの一致で組み合わせる 注文 顧客名 O1 田中 O2 田中 O3 鈴木
顧客C1の注文が2件ある例。外部キーは参照の制約、JOINは行を組み合わせる操作。relation自体は表に対応する概念。
ひよこ ひよこ
リレーショナルって、表同士が関係すること?
ペンギン先生 ペンギン先生
名前のrelationは、表に対応する数学的な「関係」を指すよ。顧客の表なら、各行に顧客IDや名前を持たせる。表同士を結び付けることもできるけれど、外部キーがある表だけがリレーショナルという意味ではないんだ。
ひよこ ひよこ
主キーと外部キーは何をするの?
ペンギン先生 ペンギン先生
主キーは表の行を一意に識別する列、または列の組だよ。例えば顧客IDだね。注文の顧客IDを顧客表へ参照させる外部キー制約を設ければ、存在しない顧客IDを注文に入れることを防げる。外部キーは重複しないことを保証するものではないよ。
ひよこ ひよこ
外部キーを作れば、顧客名も自動で注文に付く?
ペンギン先生 ペンギン先生
外部キーは参照の整合性を守る制約で、表示結果を作る操作とは別だよ。注文の顧客IDと顧客表のIDが一致する行をJOINすれば、注文と顧客名を一緒に取得できる。JOIN自体は外部キーの宣言がなくても使えるんだ。
ひよこ ひよこ
データの正しさは全部DBに任せられる?
ペンギン先生 ペンギン先生
設計した制約はDBが検査できるけれど、業務上の規則が自動で全部分かるわけではないよ。複数の更新をまとめて確定するトランザクションも役立つ。どんな値を許し、どの更新を一つの処理にするかを設計する必要があるんだ。
ひよこ ひよこ
NoSQLよりいつでも良いの?
ペンギン先生 ペンギン先生
一律には決められないよ。必要なデータの形、検索、更新、整合性、規模などで選ぶ。表の設計とSQLだけでなく、制約やトランザクションの仕様も確かめよう。「RDBは必ず遅い」「NoSQLは必ず速い」という区分では判断できないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リレーショナルデータベース」って出てきたら「表を基本にデータを扱い、SQLで検索や更新をするDB」と思えばだいたいOK!
📖 おまけ:英語の意味
「Relational Database」 = 関係データベース
💬 relationは表に対応する数学的な「関係」を指し、表同士のつながりだけを意味しない。E.F. Coddが1970年に発表した関係モデルが基礎になっているよ。

参考資料

← 用語集にもどる