イチから全部作ってみよう(29)3つのノート整理法からたどるRDBMSの基礎知識山浦恒央の“くみこみ”な話(198)(3/3 ページ)

» 2026年02月18日 08時00分 公開
前のページへ 1|2|3       

4.3 解答例3:リレーショナル構造

 リレーショナル構造とは、同じ意味のデータを同じグループにまとめ、グループ同士を共通する印(データやID)で関係付ける(リレーション)方法です(表3)。

表3 表3 リレーショナル構造の例[クリックで拡大]

 表3のデータでは、「顧客データには顧客ID」「注文データには注文ID」という印を付けていますね。この印を、「主キー」と呼びます。また、注文データ側にある、「顧客ID」は、顧客データの主キーを設定していますね。このように、他のデータの主キーを参照する項目を「外部キー」と言います。

 キーを導入するメリットは、注文データに顧客の住所を含めなくても、「ID:0001は山本さん」「ID:0002は谷口さん」という注文者を特定することができる点です。結果、データの重複がなくなり、書き間違いが起きにくい構造になりました。

 加えて、リレーショナル構造の最大の特徴は、バラバラのグループにあるデータを必要な時だけガッチャンコ(結合)できることです(表4)。「顧客IDを基に、Excelの表を横方向につなぐ」と考えれば、分かりやすくなると思います。

表4 表4 注文データと顧客データを結合した表[クリックで拡大]

 表4は、注文データの顧客IDと、顧客データの顧客IDが一致する行を結合した例です。このように、バラバラのグループに管理して正確性を保ちつつ、使うときだけまとめる機能を備えたシステムを、「リレーショナルデータベース(RDBMS)」と言います。

 皆さんは、ここまでたどり着けましたでしょうか?

5.解答例の振り返り

 解答例を簡単に振り返ります。皆さんは、どれが最適だと思いましたか。どれが使いやすそう? どれが、変更や追加に強いと思いましたか?

  • 日記帳スタイル:今すぐ開店できそうで、抜けは防ぎやすいが、検索性と再利用性が非常に低い
  • ツリー構造スタイル:検索性は向上するが、重複と整合性の問題が発生する
  • リレーショナル構造:重複を排除しつつ、必要なときに情報を組み合わせられる。

 次のように考えた読者の方はいませんか。「リレーショナルデータベースが、技術的にも、性能的にも優れているのなら、なぜ、Windowsのファイルシステムは、RDBMS方式にしないで、ツリー構造なのだろう?」

 Windowsのファイルシステムでの最優先項目は、「検索の容易性(どこに何を入れたかが分かる)」と「作成が簡単である(PCを買ったその日に、ファイルシステムを作れる)」ことです。RDMBSを作るには、既にあるデータからデータ構造をキチンと設計して、グループにまとめる必要があります。例えば、「日記方式のデータ」の内容を解析して、「顧客のグループ」「商品のグループ」などに分割し、再編成しなければなりません。

 今回の例のように、ノートでRDBMSを実現するのは非常に大変です。図書館では、もっと大変でしょう。図書館の蔵書の並べ方がツリー構造になっているのは、何万冊もの本を瞬時に移動できないし、どこにどの本があるか、ユーザーには直感的に、簡単に検索できないからですね。

6.おわりに

 今回は、「店長の頭を設計せよ」というお題を使って、RDBMSの基礎知識を説明しました。正直なところ、「ノート1冊」というアナログな制限下においては、リレーショナル構造を使用する(実装する)のは、ページを行ったり来たりするので大変かもしれませんね。

 ですが、コンピュータはこの「行ったり来たり(結合)」を、何万件というデータに対しても一瞬で、正確に処理するのが大得意です。 プロが提示した300万円という金額は、この「絶対に矛盾が起きない仕組み」を作り上げ、あなたがボタン一つで「山本さんの全履歴」や「今年の売り上げ」を呼び出せるようにするための知恵と技術代だったのです。

山浦先生執筆の書籍が販売中です!

 本連載で取り上げた「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の書籍「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から好評発売中です。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しています。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。

 前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。

ソフトウェア技術者のためのバグ検出テキストソフトウェア技術者のためのバグ検出ドリル 画像クリックで出版社のWebサイトへ

 両書とも興味のある方は、Amazon.comや書店でチェックしてください!

【 筆者紹介 】
山浦 恒央(やまうら つねお)

人間環境大学 環境情報学科 教授(工学博士)


1977年、日立ソフトウェアエンジニアリングに入社、2006年より、東海大学情報理工学部ソフトウェア開発工学科助教授、2007年より、同大学大学院組込み技術研究科准教授、2016年より非常勤講師。2025年4月より、人間環境大学環境情報学科教授。

主な著書・訳書は、「Advances in Computers」 (Academic Press社、共著)、「ピープルウエア 第2版」「ソフトウェアテスト技法」「実践的プログラムテスト入門」「デスマーチ 第2版」「ソフトウエア開発プロフェッショナル」(以上、日経BP社、共訳)、「ソフトウエア開発 55の真実と10のウソ」「初めて学ぶソフトウエアメトリクス」(以上、日経BP社、翻訳)。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

特別協賛PR
スポンサーからのお知らせPR
Pickup ContentsPR
Special SitePR
あなたにおすすめの記事PR