📘 CodingMarble Learn

データベースの基礎:DBMS・リレーション・キー

データをバラバラのファイルで管理すると、同じデータの重複、内容のずれ、守りの弱さが起こります。データベースは関連するデータを1か所にきちんと整理して保存するもので、DBMS(MySQLなど)はそれを管理するソフトです。リレーショナルモデルでは、データを表(リレーション)に入れます。表は列(属性)と行(タプル)でできていて、ドメインは1つの列に入れてよい値の集まりです。候補キーはどの行も一意に区別できる列で、その中から1つを主キーに選び、残りが代替キーになります。

🎬 ステップ別ストーリー

  1. ファイルを別々に持つとデータが重複し、内容がずれていく。データベースなら本物のコピーは1つだけ。
  2. DBMSは利用者とデータの間に立って、すべてを管理する。
  3. 表がリレーション。列が属性、行がタプル。
  4. ドメインは、その列に入れてよい値の集まり。
  5. 候補キーは各行を区別できる。1つが主キーになり、残りは代替キー。
  6. あなたの番:各列がキーになれるかどうか試してみよう。

ヒント:3Dをドラッグすると回せます。2本指で拡大・縮小できます。

🤔 よくある疑問をスッキリ解決

表計算ソフトはもうデータベースじゃないの?

表計算ソフトにも表は入れられますが、DBMSは大勢が同時に使える共有、ルール(キーやドメイン)、安全性、強力な問い合わせを追加で備えています。

行をタプルと呼ぶのはなぜ?

数学では、順番のある値の組をタプルと呼びます。各行は、属性1つにつき1つの値が並んだ順番のある組だからです。

ドメインは誰が決めるの?

データベースの設計者が、現実のルール(クラスは9〜12、点数は0〜100など)をもとに決めます。すると、DBMSはその外の値を受け付けません。

AdmNo も Email も一意なのに、なぜ AdmNo を選ぶの?

短くて、変わらず、どの生徒にもあるからです。メールアドレスは変わったり、無かったりします。

キーを2つの列で作ることはできる?

できます。1つの列だけでは一意にならないときは、(Class, RollNo) のような組をキーにできます。これが複合キーです。

なぜデータベースが必要なのか

ファイルシステムでは、部署ごとに自分のファイルを持ちます。すると次のような困りごとが起こります。

データベースは、関連するデータを1か所にまとめて整理したものです。だから共有でき、内容をそろえられ、守ることもできます。

データベース管理システム(DBMS)

DBMSは、データベースを作り、保存し、更新し、検索し、管理するためのソフトで、誰が使えるかも決めます。例:MySQL、Oracle、PostgreSQL、SQLite、Microsoft Access。

よいところ:重複が少ない、内容がそろう、大勢で共有できる、パスワードや権限で守れる、バックアップと復元ができる、問い合わせ言語(SQL)で簡単に検索できる。

身近な使い道:銀行、鉄道の予約、学校の記録、ネットショッピング、病院。

リレーショナルモデル:リレーション・属性・タプル・ドメイン

リレーショナルデータモデルでは、データを表に入れます。

決まり:列の名前はすべて異なる。行や列の順番は関係ない。まったく同じ行は2つない。1つのセルには1つの値だけ(または NULL。NULL は「不明」の意味)。

キー:候補キー・主キー・代替キー

例:STUDENT(AdmNo, Name, Class, Email)。Name は重複し、Class も重複するので、キーではありません。AdmNo と、(いつも入力され、すべて異なるなら)Email が候補キーです。AdmNo を主キーに選ぶと、Email は代替キーになります。

ほかにも役立つ言葉:複合キーは2つ以上の列を組み合わせたキー(たとえば Class + RollNo)。外部キーは、ある表の列が別の表の主キーを指しているもので、2つの表をつなぎます。

やってみよう:IDカードでキーを探す

学校のIDカードや通学定期を見てください。項目(名前、クラス、出席番号、学籍番号、電話番号)をすべて書き出します。それぞれについて2つ質問します。「2人の生徒が同じ値になることはある?」「空欄になることはある?」。どれが候補キーかを書き、主キーに選ぶものを決めましょう。そのあと、3Dのステップ6で同じ考え方を試してください。

重要な公式と用語

例題

1. ある表は5列、30行です。次数と基数を答えなさい。

次数 = 5、基数 = 30。

2. 4 × 10(次数4、基数10)の表に2行と1列を追加すると、新しい値はいくつ?

次数 = 5、基数 = 12。

3. EMPLOYEE(EmpID, Name, Aadhaar, Dept)。候補キー、主キー、代替キーを見つけなさい。

EmpID と Aadhaar は一意なので候補キー。EmpID を主キーに選ぶと、Aadhaar は代替キー。Name と Dept は重複することがある。

4. STUDENT で Name を主キーにできないのはなぜ?

同じ名前の生徒が2人いることがあり、1つの行を一意に特定できないから。

5. 1文字で保存する属性 Gender のドメインを答えなさい。

{"M", "F", "O"}(または学校が認めているコード)。

よくある間違い

練習クイズ

1. リレーションの1行は何と呼ばれる?
2. リレーションの列の数は何と呼ばれる?
3. 主キーに選ばれなかった候補キーは何?
4. DBMSはどれ?
5. 同じデータが多くのファイルに保存されていることを何という?

練習:自分で答えてみよう

答えを入力するか選んで、「チェック」を押そう。困ったらヒントを見てね。解答は答えたあとに表示されます。

よくある質問

データベースが必要なのはなぜ?

別々のファイルで起こるデータの重複と不整合を避け、データを共有し、守り、簡単に検索するためです。

候補キー、主キー、代替キーの違いは?

候補キーはどれも行を一意に特定できます。そのうち選ばれた1つが主キーで、残りが代替キーです。

次数と基数とは?

次数はリレーションの列(属性)の数、基数は行(タプル)の数です。

学ぶ場所

ItalySecondaria di secondo grado – classe 3ªTools and foundations
ItalySecondaria di secondo grado – classe 4ªTools and foundations
NetherlandsHAVO 5 (eindexamenjaar)Elective theme: Databases
NetherlandsVWO 6 (eindexamenjaar)Elective theme: Databases
PolandLiceum ogólnokształcące, klasa IIProgramming and solving problems with computers
RomaniaClasa a X-aDatabases
RomaniaClasa a XII-aModule 1: Databases (compulsory)
RomaniaClasa a XII-aModule 2: Database management systems (optional)
RomaniaClasa a XII-aModern user skills
RomaniaClasa a XII-aWorking with a database application
Ukraine9 класInformation systems and data management
Ukraine10 класBase module: database systems
CBSE (India)Class 11Database Concepts and SQL
CBSE (India)Class 11RDBMS
England (GCSE, A level)Year 113.7 Relational databases and SQL
Japan高校1年Networks and data
Japan高校(専門学科)1〜3年Using Software
Japan高校(専門学科)1〜3年Computer Systems Technology
Japan高校(専門学科)1〜3年Databases
South Korea고등학교 2학년Understanding data science
South Korea고등학교 3학년Data and information
Germany (Bavaria)Jahrgangsstufe 10Data modelling and relational databases
FranceSecondeThemes
FrancePremièreTabular data
FranceTerminaleSpecific option — management information systems
Russia9 классTheoretical foundations
Russia11 классInformation technologies

先に学ぼう

次に学ぼう