キーとは何なのか?(ExcelでRDBその6)

ExcelRDB(リレーショナルデータベース)を操作してみようという連載のその6です。前回の記事はこちらです。

hirocom777.hatenadiary.org

キーというものありけり

 ところでRDB(リレーショナルデータベース)を理解するのに重要なアイテム『キー』というものがあるようです。今日は、この『キー』について僕なりに深堀りしていきたいと思います。そもそもキーというものは何なんでしょうか?
f:id:HiroCom777:20200913192548j:plain
・キー
キーとは、テーブルにおいて、レコードを一意に識別するための項目もしくは項目の集合ってことです。一意ってのは、一つに確定しているってことです。項目とはフィールドの項目ですね。RDBのテーブルではレコードを『キー』を使って特定するってことですね。

いや、この『キー』って言葉が何なのか調べるのに苦労しました。まぁ、こんな意味なんだろうとは想像がついていましたが、なかなか書いてあるものがない。検索で調べると、ほとんどが『主キー』って言葉に引っかかっちゃうんですね。これが大事だってことは何となく想像できるのですが、その前に『キー』って言葉を理解しておくことが大切だと思うんですけれどねぇ・・・

・主キー(primary key)
で、その『主キー』って何なのかというと、レコードを一意に識別するための項目って『キー』と同じじゃないですか・・・どうやら『キー』の代表が『主キー』って事ですね。テーブルの中にどんな時も必ずレコードを一つに特定できる『キー』が必要で、それが『主キー』です。レコードを特定しなければならないので、別々のレコードに同じ値が設定されることはありません。また、『主キー』には空白(NULL)値は許されないという制約があります。どんな時でも特定できなければいけないわけなので、当たり前と言えば当たり前です。で、その主キーにも種類があるようで・・・

ナチュラルキー
 データベースにある項目のうち、既にある項目を主キーと決めて設定した主キーのことを『ナチュラルキー』って言います。会社なんかで社員に社員番号を付けている場合がありますが、この場合社員番号だけで社員を特定できるので社員番号が主キーとして使用できるわけです。

サロゲート(代理)キー
テーブルに主キー専用の項目を新たに追加して機械的に連番を振った主キー。あー、これよく見ますね。テーブルの一番左に"ID"とかの項目があって連番が振ってあるやつ。どうしてこの項目があるんだろうって、いつも疑問に思っていたんですが、主キーとして設定しておいて、レコードを一意に特定できるようにしてあるんですね。

以上が主キーの代表です。で、この主キーがあるとテーブルのレコードを一意に特定できるわけで、これを使って他のテーブルからデータを参照できるんですね。それが・・・

・外部キー
RDBではテーブルから他のテーブルとの関係を持つことが出来るのですが、この時に関係先のテーブルの主キーを参照するのです。テーブルに関係先テーブルの主キーを記述する項目を設けておいて、その項目を使って関係先テーブルのレコードを特定するってことです。この項目を『外部キー』って言います。

お、何だかRDBらしさが出てきたんじゃないですか?キーについては他にも色々な言葉が出てきて理解するのが大変でした。でも、今のところ覚えておく必要があるのはこれだけだと思います。

データベース例を作ってみよう

次回は、ADOXを使用してテーブルの関係性を持つデータベースファイルを作ってみようと思います。主キーや外部キーの設定ってどうやるんでしょう?お楽しみに!!
hirocom777.hatenadiary.org



ExcelVBAでAccessファイルを操作する連載はコチラから