「初級システムアドミニストレータ/データベース」の版間の差分

削除された内容 追加された内容
編集の要約なし
タグ: 差し戻し済み モバイル編集 モバイルウェブ編集
M 学生よ 働きなさい (会話) による編集を取り消し、Tomzo による直前の版へ差し戻す
タグ: 巻き戻し
134 行
=== 関数従属(かんすうじゅうぞく) ===
「<b>AならばBだ</b>。だが、BだからといってAとは限らない」場合、「Bは、Aに関数従属する」と呼びます。<br>
<b>ゴミ学生表</b>
<table border>
<tr><th><u>学籍番号</u></th><th>名前</th></tr>
147 行
この式の場合「x=2ならy=12だ。だが、y=12だからといって、x=2とは限らない(-2かもしれない)」です。これと同じイメージでとらえておくと良いかと思います。
<br>
 
=== 推移的関数従属(すいいてきかんすうじゅうぞく) ===
「AならばBだ。<b>そしてBならばCだ</b>」といった、関数従属が何段もつながっている状態を、推移的関数従属と呼びます。<br>
204 ⟶ 203行目:
なお、この例題を解く際の条件として、
* 入学時に与えられた学籍番号は、卒業(退学)まで不変とします。
* あるゴミクズ学生と同じ学籍番号を、卒業(退学)生や他のゴミクズ学生が持つ事は無いものとします。
* この学校には、同じ苗字(属性[名前])のゴミクズ学生が複数名在学することもあります。
* 今回の課題には該当者がいませんが、在学中の苗字(属性[名前])変更もありえます。ただし今回の課題では、名前変更の手続き(変更日管理など)は考慮しません。
* 同じ資格に複数回合格しても、1行しか登録しないものとします(例:辻村さん(B090)は、平成15秋と平成16春にシスアドに合格し、今後も引き続き同じ試験の受験を考えているようです)。
216 ⟶ 215行目:
この例のように7行6列の“資格取得一覧テーブル”程度のデータだと、表計算ソフトで作るほうがはるかに手軽です。ですが、ここでは練習のため、RDBMSで扱うことを考えましょう。<br>
このテーブルを見ると、資格名の列には、似たデータが何箇所も出てきます。仮にこれが何千人・何万人となったら、そのムダも無視できません。<br>
 
=== 正規化を行うメリット ===
; データをコンパクトに格納する
245 ⟶ 243行目:
<tr><td>B3</td><td>簿記3級</td></tr>
</table>
これだけで、資格コード“AD”を持つ全ゴミクズ学生が、“初級シスアド”に書き換わったのと同じことになります。こうやって、<b>データを“確実に、ラクに”書き換えられるよう、テーブルを分けるのが、正規化をする最大のメリット</b>です(これを「データの更新時異状を防ぐ」と呼びます)。
<br>
こうやって、テーブル間を“○○コード”“△△番号”を基にしてつなげておき、その番号つながり(リレーションシップ)で別のテーブルへと必要なデータを取りに行くこと。これが、関係(リレーショナル)データベースの基本的な考え方です。
<br>
 
=== 正規化を進める ===
==== 第1正規形への正規化 ====