| English | 意味 |
|---|---|
| table/ˈteɪbl/ | 表 |
| relational database/rɪˈleɪʃənl ˈdeɪtəbeɪs/ | リレーショナルデータベース |
| flat files/flæt faɪlz/ | フラットファイル |
| data redundancy/ˈdeɪtə rɪˈdʌndənsi/ | データ冗長性 |
| data inconsistency/ˈdeɪtə ˌɪnkənˈsɪstənsi/ | データ不整合 |
| integrity/ɪnˈteɡrɪti/ | 完全性 |
| field/fiːld/ | フィールド |
| entity/ˈentɪti/ | エンティティ |
| record/ˈrekɔːd/ | レコード |
| tuple/ˈtuːpl/ | タプル |
| attribute/ˈætrɪbjuːt/ | 属性 |
| primary key/ˈpraɪməri kiː/ | 主鍵 |
| composite key/ˈkɒmpəzɪt kiː/ | 複合鍵 |
| candidate key/ˈkændɪdeɪt kiː/ | 候補鍵 |
| secondary key/ˈsekəndəri kiː/ | セカンダリーキー |
| indexing/ˈɪndeksɪŋ/ | インデックス付け |
| foreign key/ˈfɒrən kiː/ | 外部鍵 |
| referential integrity/ˌrefəˈrenʃl ɪnˈteɡrɪti/ | 参照整合性 |
| one-to-many/wʌn tə ˈmeni/ | 一対多 |
| many-to-many/ˈmeni tə ˈmeni/ | 多対多 |
IBMが望まなかった論文
- 1970年、IBMの研究員エドガー・コッドは、データを共有値によってリンクされた単純なテーブル形式で保存し、ディスク上の場所ではなく何が必要かを指定する言語でアクセスすることを提案する12ページの論文を発表した。
- IBMは既にファイルレイアウトに紐づいたツリー構造でデータを格納するデータベースを販売しており、数年間彼を無視した。ファイルレイアウトが変わるたびに、そのファイルに対応するすべてのプログラムを書き換える必要があった。
- 1980年代には、すべての銀行、航空会社、政府機関がコッドのテーブル方式へ移行していた。半世紀後でも、現在もそれらで動作している。
- この教訓とは、ファイルベースアプローチの問題点、それらを解決するリレーショナルデータベース、そして正確に用いるべき用語である。
ファイルベースアプローチ
- データベース以前、各プログラムは独自のフラットファイルを保持していた。販売プログラムには顧客ファイル、会計プログラムには別のファイル、配送プログラムには別のファイルがあった。
- 各ファイルには固定されたレイアウトがあり、プログラムのコードに依存しており、プログラム外からは中身を知ることはできなかった。
- It works for one small program. The trouble starts when the second program needs the same data.

3つのプログラム、顧客情報の3つのコピー
限界
- データ冗長性: 顧客住所といった同一のデータが複数のファイルに重複して格納され、ストレージ容量と労力が無駄になる。
- データ不一致: コピーが個別に更新されるため、内容が乖離し、どちらが正しいかわからなくなる。
- データ依存性: プログラムがファイル形式に依存しているため、レイアウトの変更に対して使用该ファイルのすべてのプログラムを書き換える必要がある。
- 整合性の維持が難しく、データを安全に共有できず、ファイル間での検索が遅く、フィールド単位でのセキュリティ設定ができない。
顧客の住所を複数の別ファイルに格納すると、以下のような問題が生じます:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
多数の場所に同じデータを保持する(重複)ことは、個別に更新されて不整合になる可能性があります。
フラットファイルシステムでは、同じデータが複数のファイルに重複しており、片方のコピーのみが更新された場合に不整合になることがあります。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
この重複とそれに伴う不整合こそが、リレーショナルモデルが解決する核心的な問題です。
ファイルベースアプローチの限界はどれか。すべて選択してください。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
重複、不整合、データ依存性が3つの限定要因として挙げられる。テーブルと結合は、これらを置き換えるリレーショナルアプローチに属する。
リレーショナルデータベースが这些问题にどう答えるか
- リレーショナルデータベースは、DBMSと呼ばれる一つのソフトウェアによって管理されるテーブルにデータを格納し、すべてのプログラムがこれを利用する。
- 各事実は一度だけ格納されるため、冗長性と不一致が消滅する。住所を一处で変更すれば、すべてのプログラムがその変更を確認できる。
- プログラムは名前によってDBMSにデータを要求するため、ストレージの変更伴随伴随着program change without the programs changing: データ独立性。
- 整合性ルール、アクセス権限、バックアップは中央で強制され、任意のテーブルを他のどのテーブルでも検索または結合できる。

データは一つ、管理者も一つ
リレーショナルデータベースは、どうやってデータの不整合を解消するか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
1つのコピー、1回の更新、ズレなし。DBMSはすべてのプログラムに同一の現在値を提供する。
用語:テーブル、行、列
- テーブル(関係)は行と列のグリッドであり、各エンティティ(データを保存する対象となるもの)ごとに一つのテーブルを持つ:
CUSTOMER、ORDER、PRODUCT。 - レコードとは一つの行、エンティティの一種实例です。形式名称はタプルである。
- フィールドとは一つの列、各レコードに関する情報の一つである。形式名称は属性である。

行はレコード、列はフィールドであり、一つの列が他テーブルに伸びている
SELECTを使ってリレーショナルテーブルを読み込む
リレーショナルテーブルは単に行(レコード)と列(フィールド)から構成されます。WHERE句は条件に一致する行を保持し、SELECT句は要求した列のみを抽出します。
用語:キー
- プライマリ キーとは、各レコードを一意に識別するフィールド、あるいは複数のフィールドの組み合わせであり、必ず null にならず、重複しない。複数のフィールドからなるプライマリ キーをコンポジット キーという。
- キャンディデート キーとは、プライマリ キーとして機能し得る任意のフィールドまたは組み合わせである。セカンダリ キーとは、高速な検索のためにインデックス付けされた非プライマリ フィールドであり、インデックス付けとは、フィールドにインデックスを作成して照合や結合を高速化することである。
- フォアリン キーとは、値が他テーブルのプライマリ キーと一致して二つを結びつけるフィールドである。略記法では、プライマリ キーは下線付きとし、フォアリン キーを注記する:
CUSTOMER(CustomerID, Name, Phone)
ORDER(OrderID, CustomerID, OrderDate) -- CustomerID is a foreign key → CUSTOMER
主キーとは:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
主キーは各行を一意に識別する。外部キーは、他のテーブルへのリンクとなるものである。
各キーの種類とその定義を対応させよ。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
主キーは行を特定し、外部キーは他のテーブルにリンクし、複合キーは複数のフィールドの組み合わせ、候補キーは主キーの可能性があることを示す。
他のテーブルの主キーの値に一致するフィールドを ______ キーという。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
外部キーこそが、2つのテーブル間の関係性を形成するものである。
演習例:図書館データベースの構成要素を名付ける
- 図書館は自らの蔵書、会員、および各貸出を記録している。エンティティを特定し、それぞれにプライマリ キーを与え、外部キーも示せ。
- エンティティ:
BOOK、MEMBER、LOAN。プライマリ キー:BookID、MemberID、LoanID。これらは各レコードに対して一意であり、かつ空白にならないため選ばれた。タイトルや名前だけでは不十分である。なぜなら、複数の図書が同じタイトルを持つ可能性があるからである。 LOAN(LoanID, BookID, MemberID, DateOut, DateDue):BookIDとMemberIDは外部キーであり、それぞれ自身のテーブルのプライマリ キーと一致する。会員の電話番号はMEMBERに含めるべきであり、すべての貸出记录に必要ではない。
LOAN(LoanID, BookID, MemberID, DateOut)において、BookIDとMemberIDは ____ キーである。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
それぞれBOOKおよびMEMBERという他のテーブルの主キーに一致し、loanをそれらにリンクさせる。
関係性と参照整合性
- 関係とは二つのエンティティを結びつけるものである。一一対応:各会員には一つの図書カードがある。一対多:一人の会員が多数の貸出を持つ;各貸出は一人の会員に属する。多対多:一つの図書には多数の著者がおり、一つの著者は多数の図書を書く。
- 参照整合性とは、すべての外部キー値が、参照先テーブル内の既存のプライマリ キーと一致することを意味する。存在しない会員に対する貸出は認めず、孤児レコードも発生させない。
- DBMS がこれを強制する。未知の外部キーを含む挿入を拒否し、他のレコードがまだ参照しているレコードの削除も拒否する。
参照整合性は、以下を確保する:
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
孤児レコードの発生を防ぐ——存在しない主キーを参照することはできない。
各関係性とその種類を対応させよ。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
一方のエンティティに対して、もう一方のエンティティからいくつリンク可能かを数えよ。多対多の関係は、格納するためにリンク表が必要である。
演習例:参照整合性が防止すること
CUSTOMERテーブルから未済注文を三つ持つ顧客が削除される。参照整合性がどのように適用されるかを説明せよ。- 各注文の
CustomerIDは外部キーであり、既存の顧客と一致しなければならない。顧客を削除すると、三つの注文がもう存在しないレコードを指すことになり、孤児レコードが残る。 - そのため、DBMS は注文が削除されるか再割り当てされるまで、またはカスケード設定がされている場合は注文も同時に削除されるまで、顧客の削除を拒否する。いずれの場合でも、注文がいない顧客を指すことは決してない。
- このルールが何であるかを述べ、何がそれを破るか、そして DBMS はどうするかを答えよ。
参照整合性により、別のテーブルの注文がまだその顧客を参照していても、顧客を削除することが可能になる。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
それは孤児レコードを生む。DBMSは削除を拒否するか、注文にもカスケード処理を行い、すべての外部キーが有効なレコードを指し続けるようにする。
採点基準として許容される定義
| 用語 | 定義 |
|---|---|
| エンティティ | データが保存される対象であり、一つのテーブルで表現される |
| 属性 | エンティティに関するデータの一項であり、一つの列 |
| タプル | テーブルの一行、一つのレコード |
| プライマリ キー | 各タプルを一意に識別する属性、あるいは属性の組み合わせ |
| キャンディデート キー | プライマリ キーとして選択され得る属性、あるいは属性の組み合わせ |
| セカンダリ キー | テーブルを高速に検索するためにインデックス付けされた属性 |
| フォアリン キー | 一つのテーブルにある属性であり、他テーブルのプライマリ キーとして関係を作る |
| 参照整合性 | すべての外部キー値が既存のプライマリ キーを参照する |
見落としやすいポイント
- タプルは行であり、属性は列である。これらを混同すると両方の得点が失われる。
- 「一意」だけでプライマリ キーを定義することはできない。各レコードを識別し、かつ必ず null にならないことが条件である。
- フォアリン キーは重複してもよい。一つの顧客、多数の注文である。重複してはいけないのはプライマリ キーのみである。
- セカンダリ キーは高速検索のためのものであり、識別のためのものではない。「第二のプライマリ キー」と呼ぶな。
理解できましたか
- ファイルベース方式は冗長、不一致、データ依存性に陥り、整合性、共有、検索、セキュリティが弱い。
- リレーショナル データベースは、一つの DBMS で管理されるテーブルに各事実を一度だけ格納するため、プログラムは格納方法に依存せず、ルールは中央で強制される。
- エンティティ → テーブル ・ タプル → レコード、行 ・ 属性 → フィールド、列 ・ プライマリ キーは識別、フォアリン キーは連結、キャンディデートは識別可能、セカンダリは検索用インデックス付き
- 参照整合性:すべての外部キーが既存のプライマリ キーと一致するため、孤児レコードは生じない