DBプチヲタ その4 名前の話

前回は男女の仲にいきなり踏み込んでみましたが、データベースのつくりについて触れないといけません。なぜなら1対多とか、突然出てきたからです(後付けです(^_^;))

最初のデータベースは、メモの山を分類したように、階層構造でした。ちょうどそれは「わたし」の仲良しのA子ちゃんはすぐ隣にいるのに、呼んで遊ぶためには「お母さんのお父さんの息子の子供」と家系図をたどらなくてはいけないようなものでした。これは階層型と呼ばれています。階層型の場合は、目的の情報にたどり着くためには、その経路を知らないといけませんでした。

次にいとこなんだから「いとこ」と呼ぼうということになりました。お母さんのお父さんは「お爺ちゃん」お爺ちゃんの息子は「叔父さん」と、「わたし」からダイレクトの呼び名をつけましょうという形です。ずいぶん楽になりました。ネットワーク型と呼ばれています。この場合はA子ちゃんの呼び方は「いとこ」「叔父さんの子供」「母の父の息子の子供」など何通りもあります。ただしこれも呼び方を知らないとたどり着けないという難点があります。

ところが遊び盛りの子供ですから、仲良しのA子ちゃんがいとこだろうが、A子ちゃんのお父さんは「叔父さん」だろうが知ったことではありませんね。「わたし」にとって何に当たるのかを知らないと呼べないのも不便です。そこで、関係は詳しい人が知ってて、その人に聞けばいいじゃん、もし「叔父さん」がリコンしちゃって、「私」歳の離れた姉と結婚しちゃったとしても(フクザツです(^_^;))あのA子ちゃんはいつまでもA子ちゃんのままなのですから。これがリレーショナル型と呼ばれ、今の世の中の主流となっています。

前回でたオラクル、ACCESS、MySQLなどは全てリレーショナル型です。そのデータベースを使ってデータを管理するみなさんの会社の会計システムも、ほとんどリレーショナル型データベースにしか対応してません。同じ型どうしであれば、例えばオラクル対応の会計システムをMySQL対応にするのは比較的簡単で、ゴルフクラブをドライバーからアイアンに持ち変えるようなもんなのですが(?)、これを階層型データベースにも対応させるにはゴルフから剣道にかえるようなもんです。大変なのです(???)

さて、リレーショナル型が優れていて、今の主流だということは分かりました。世の中を物事とその関係を使って表現しよう、というのですから理にかなっているわけです。ですが、人間にとって分かりにくくなってしまいました。私とA子ちゃんの件はリレーショナル型ではどうすればよいのでしょうか?

ここからはデータベース設計のノウハウになってくるのでややこしいです。あまり考えず、そういう考え方もあるのかー、てかデータベース設計ってなんか無理やり感あるよなーとか思って流してくださいね(^_^;)

一般的には文章で説明した時の名詞に注目します。上記の例は「わたしとA子ちゃんの関係は続柄で表す」と説明できますよね?この文章の名詞は「わたし」「A子ちゃん」「関係」「続柄」です。これらはDBプチヲタ初回に登場した「テーブル」の候補となります。

よく見ると「わたし」「A子ちゃん」は人ですから、人テーブルとしてまとめても良いでしょう。ここでテーブルの部品について名前が決まっていますので確認しましょう。

1.テーブル:同じ種類のデータをたくさん入れておく箱
2.行:テーブル内の1つ1つのデータのこと。行はいくつでも持てて、それはデータの件数ということになります。
3.列:データがもつ項目のこと人テーブルにおける「名前」列てな具合です。もし人テーブルに年齢も格納するのであれば「年齢」列として2つ目の列を追加します。列はいくつでも持てます。

結果、じゃあA子ちゃん問題はリレーショナル型ではどうなる?という問いに対する答えですが、一例を挙げてみます。実は正解は一つではありません。後からそのデータをどう使うかによって変わる可能性もあるからです(逃げたようですいません(汗))名前を決めてませんでしたが、適当に「母:さざえ」「お爺ちゃん:なみへい」としますね。

 テーブルにデータを入れるときは、重複した行を入れないルールです。人テーブルに「わたし」が3行あったとしたら、関係の「わたし」と「はは」の組み合わせに登場する「わたし」はその3行のどれ?と困ったことになるからです。それは続柄についても言えて、今回は影が薄いのか登場しませんでしたが「わたし」の父「マスオ」がいる場合、「わたし」と「マスオ」は「父」となり、「マスオ」と「なみへい」も「父」となりますが、続柄としては1種類ですから続柄テーブルは1行だけ「父」を持てばよいことになります。

関係テーブルの使い方は「わたしとA子の関係は?」と聞いて、Fromが「わたし」とToが「A子」に一致する行を拾うと「いとこ」という1行が返ってくるわけです。「わたし」は関係を知らなくても関係テーブルに聞けばちゃんと答えてくれるって寸法です。

どうでしょうか?リレーショナル型の雰囲気はつかめましたでしょうか?世の中のあれこれを無理やり箱に入れ込んで機械的に扱うなんて、デリカシーのない!と怒らないでくださいね(^_^;) この関係テーブル、日本全国の人の続柄が登録できたとしたら、気になるアノ人との続柄もたどることが可能かも知れませんね。「叔父のいとこの姉の息子の・・・え、意外と近いカモ」なんて。。。

【まとめ】データベースは名詞も好き。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする