目次

「表で表すものがリレーショナルデータベース」ではない

これは違う

「情報B」の教科書に「データを表で表すものがリレーショナルデータベースである」と書いてあるものがあり、とてもびっくりしました。この定義では表計算ソフトもリレーショナルデータベースを扱っていることになってしまいます。データベースに初めて触れる人も疑問に思うはずです。

1980年代、まだWindowsがなかった時代に dBASE Ⅲ というソフトウェアが販売されていて、「リレーショナルデータベース」であることを売り物にしていました。R-BASE という対抗ソフトも出てこれも「リレーショナルデータベース」であることを標榜していました。それに対して「リレーショナルデータベース」でないデータベースは、日本では「カード型データベース」と呼ばれていました。

「リレーショナルデータベース」を謳う製品は高価で使い方も難しそうだったのでほとんど触ったことはありませんでしたが、それでも雑誌の記事などで盛んに特集されていて、カード型データベースとの違いを読んで知っていましたから、ただの表がリレーショナルデータベースだというのは、とんでもない間違いだと直感したわけです。

カード型データベースはコンピュータ以前に使われていたカードをコンピュータ化したものです。たとえば図書館の蔵書カードは書名、著者名、発行年月日、出版社、分類番号、大きさ、ページ数といったデータが1冊の本ごとに1枚つくられます。1枚のカードのデータを表計算の1行に対応させれば表になります。これも表を使うのでリレーショナルデータベースだというのなら、カード型データベースとの区別が成り立ちません。

なぜこんなことになったのか

ウィキペディアでは(2013年3月現在)、「関係モデル(リレーショナルデータモデル、後述)にもとづいて設計、開発されるデータベースである」とあります。この"後述"を見てもリレーショナルデータモデルがなかなかわかりにくい。

「関係モデル」の説明で表に表せるような関係をリレーションと呼ぶと書いてあったりするので、「だからリレーショナルデータベースと言うのか」と納得してしまったものだと思います。dBASE Ⅲ の標榜していた「リレーショナル」は表同士のリレーションのことでした。

この誤解はかなり蔓延していて、IT用語辞典 e-Words (e-words.jp)でも「リレーショナルデータモデルの理論に従っている。1件のデータを複数の項目(フィールド)の集合として表現し、データの集合をテーブルと呼ばれる表で表す方式。」と書いてあります。これは1枚の表そのものですね。

どう理解すればいいのか

「複数の表から結合演算ができるデータベースがリレーショナルデータベース」という理解の仕方が妥当と思います。もちろん「結合演算」は複数の表を関連付けてデータを自由に取り出せる仕組みなどと噛み砕いた言い方をしてもいいでしょう。

表計算ソフトとの違いを理解して目的に合わせて使い分けるための知識を持つことが大切です。表計算でもlookup関数などで表の関連付けができますが、限界がありますし効率も悪くなります。逆にリレーショナルデータベースを表計算感覚で使ってしまえばその能力を発揮させることはできません。

リレーショナルデータベースに触れるならば少なくとも複数の表を関連付けて必要なデータを取り出せるように設計することまで理解させるわけですから、リレーショナルデータベースとはなにかという説明もそれに沿ったものであるべきでしょう。

表に似たものとは

ウィキペディアの関係モデルの説明に「データは表に似た構造で管理され、複数のデータ群が関係(リレーション)と呼ばれる構造で相互連結可能である。」とあります。表に似ているけど表ではないと読めます。また複数の表でなく複数のデータ群と表現して「表」を避けています。

「表に似ているけど表ではない」と言うと、関係モデルと呼ばれるためには表に何か条件を加えないとならないように感じてしまいますが、逆に表には関係モデルに不要な条件が加えられている部分もあります。それは行の順序と列の順序です。関係モデルに本来は含まれていない行と列の順序を加えることで表に書き表すことができるのです。

というわけで、「データを表で表すものがリレーショナルデータベースである」という言い方はさらに間違っていることになります。順序をつけてはいけないという理由で表で表せないものを排除してしまうことになります。

私も最初は「リレーショナルデータベースはデータを表形式で表す」という説明は間違ってはいないと思っていました。これを「データを表で表すものがリレーショナルデータベースである」と安易に逆にするから間違ったのだと思っていました。でも表形式で表すのは必須ではないので厳密にはこちらも間違っていることになります。

私の表形式でない関係のイメージは次のようなものです。言葉遣いも組(行に相当)、属性(列に相当)としておきます。

表に代わる言葉

組と属性での説明は説明図が場所をとってしまいますが、なんとか書けます。問題は表に代わるわかりやすい言葉がないことです。関係(リレーション)というのは学問的定義としては良いとしても一般人には曖昧になってしまいます。組の中ですでに複数の関係があるように見え、組の集合の間にもリレーションという関係があります。データ群ではあまりにも漠然としています。

学問的定義で押し通すというならそれはそれで賛成できます。物理にも「力」や「仕事」など日常生活でいい加減に使っているものをきちんと定義して教えています。でも教科「情報」ではそれだけの気合もないようです。

定義につかうのでなければ表という言葉はなかなか

不正確でもだいたい概念がつかめるということを考慮すると、表(テーブル)という言葉はかなり良いと思います。

列も行も選択や並べ替えによって自由に変えられることを理解すれば順序が付いているように見えてもさほど大きな問題ではないでしょう。

また、SQLなどでは、「表」、「テーブル」が定着していて、いまさら抗うのはあまり意味のないことでしょう。

私としては「関係表」としていこうと思います。

「組、(行、レコード)」と「属性、(列、フィールド)」

「表」という言葉を使うならば「行」「列」が自然です。

「レコード」と「フィールド」という言いかたは少し専門的な言葉として受け取られているように感じますが、記憶装置の構造から来ている言葉なので時代に逆行していると思います。

ディスクの容量が飛躍的に大きくなった結果、読み書きの単位とレコードの関係も崩れてしまっています。いくつかのセクタをまとめて読み書きするようになりましたし、セクタ自体の大きさも最近大きくなりつつあります。データベースの方も可変長の文字列を扱えるようになるなど固定長のフィールドのイメージは合わなくなってきています。

SQLの用語も考慮すると、いろいろな呼び方があることは説明しておく必要があるでしょう。

新課程の教科書はどう説明しているか

「情報B」の時代より良くなっている。複数の表、関連付けのうち少なくともひとつは入っていて、単なる「表になったものはリレーショナルデータベース」という短絡的な表現はなくなっている。数研のものは表を(リレーション)と読ませて、表がただの表でないことを示して上手にかわしている。表が1つしかなければ絶対にリレーショナルデータベースという事ができないのかという問に対して正しく答えられるのはこれかもしれない。

出版社 記号番号 書名 リレーショナルデータベースの説明
東京書籍 情科301 情報の科学 蓄積管理する情報を複数の表で整理して管理するデータベースを関係データベースという
実教出版 情科302 最新情報の科学 行と列によって構成された表形式のデータの集合(テーブル)を,互いに関連付けているデータ構造。
実教出版 情科303 情報の科学 最も利用されているリレーショナル型データベースを想定している。複数の二次元の表形式で管理し、項目同士を関連付けて...
数研出版 情科304 高等学校情報の科学 各データを表(リレーション)で表したデータベースをリレーショナルデータベースという。
日本文教出版 情科305 情報の科学 いくつかの表に分けて管理するようなデータベースをリレーショナルデータベース(関係データベース)という。

表、行、列などをどのように教えているか

まちまちである。実社会での混乱をそのまま反映している。併記をするとともに将来を見据えて標準を示したいが、難しい。リレーション、タプル、属性が学問の観点からすれば正しいのだろうが、まだ一般的ではないしSQLでは使われていないのでメリットが感じられない。

出版社 記号番号 書名 リレーショナルデータベースの呼び方 表の呼び方 行の呼び方 列の呼び方 扱い 例の内容
東京書籍 情科301 情報の科学 関係データベース テーブルと呼ばれる表 (条件を満たすデータだけ) 項目(属性,フィールド) SQL 図書/分類
実教出版 情科302 最新情報の科学 リレーショナル型データベース 表(テーブル) 行(レコード) 列(フィールド) 表計算でlookup 生徒/図書貸出/書籍
実教出版 情科303 情報の科学 リレーショナル型データベース レコード フィールド(説明では項目も) 表計算でlookup 生徒/図書貸出/書籍
数研出版 情科304 高等学校情報の科学 リレーショナルデータベース リレーション, 表 タプル(レコード) 属性(フィールド) 関係演算の概念のみ 生徒/部活動/電話番号
日本文教出版 情科305 情報の科学 リレーショナルデータベース レコード(行,データ単位) フィールド(列,項目) 簡単なデータベースの作成 修学旅行お勧めスポット/推薦人/場所

情報B(旧課程)の教科書の表記の比較

新課程のものがかなり良くなっていて、この程度で「間違っている」と言ったのかと言われそうだ。そこで旧課程のも改めてまとめてみた。

最近の平成18年の検定のものを調べましたが、年によって小さな訂正はあるかもしれません。

出版社 記号番号 書名 リレーショナルデータベースの説明
実教出版 情科069 最新情報B データを2次元の表形式にしたものがリレーショナル型である。
開隆堂出版 情科070 新版 情報B 情報の科学的な理解 関係型データベース:データを複数の2次元の表形式でまとめたもので,表どうしを関連付けることにより一つのデータベースとして利用することができます。リレーショナル型データベースとも呼ばれています。
啓林館 情科071 高等学校 情報B 最新版 関係データベースでは,複数のテーブルのデータを組み合わせて一覧表や名簿などを作成できる。そのため,テーブルを分割しても,必要な情報をまたつくり出すことができる。
数研出版 情科072 三訂版 情報B 情報の世界の仕組み 住所録のような,表をデータモデルとするデータベースをリレーショナルデータベースという。
日本文教出版 情科073 新・情報B 探求する楽しさ リレーショナル型データベースは,一覧表どうしを関係付けたものといえる。
第一学習社 情科074 高等学校 三訂版 情報B データどうしの関係を,表の形にモデル化したものをリレーショナル(関係)データモデルとよび,この考え方を利用したデータベースを,リレーショナル(関係)データベースという。

もちろん複数の表を関連づけることは他の場所で説明しているのですが、生徒が「リレーショナルデータベース」とは何かを教科書から抜き書きした場合にはこのようになってしまうというわけです。ひょっとしたら教師もやってしまうかもしれません。

啓林館のはちょっと説明が必要です。抜き書きの部分は本文の途中にあり「定義」ではなく「特徴」のように書かれています。そして目立ちません。関係データベースが話の中心にはないのです。まず、ひとつの表で表されるデータベースを使って図書貸し出し表を表計算で扱います。次にデータが多くなると関係データベースを使うとよいと話を運び、この時点では関係データベースの何たるかを説明しない。図書貸し出し表を図書の表、生徒の表、貸し出しの表に分けて記録する方法とそれが有利な理由を説明する。そして上記の関係データベースは分割したテーブルから元の表をつくることができるものであると話を運ぶ。「複数の表を関連づけて」だとどのように関係づけるのかはわからないが、この説明ではもともと一つの表だったのですんなり理解できる。よくできていると思う。新課程では啓林館は情報の教科書を出さない。

追記:メールで意見をいただきました

メールで次のようなご意見をいただきました。

  1. 「関係モデル」の理論においては表が複数存在することを要請してはいません。
  2. 「カード型データベース」は「RDB」と比較できる種類の言葉ではないが、 内部的に表のような形式でデータを保持しているなら「RDB」であると言えると思う。

「複数の表から結合演算ができるデータベースがリレーショナルデータベース」という理解の仕方が妥当 というのが当時の私の結論として書いたものですが、 書くうちに「表が1つしかないときにはリレーショナルデータベースといえないのか」 という問にどう答えようか迷っていました。ですから、1つ目の指摘はそのとおりです。

「複数の表から結合演算ができる」というのは能力であって、必ず複数なければならないという要請ではないと言い逃れることは可能ですが、わかりやすく説明するという観点では失敗しています。

「カード型データベース」も「レーショナルデータベース」であるという指摘はちょっと愕然としました。考えてみれば、私の根拠は当時のリレーショナルデータベースソフトの販売元の比較宣伝であるわけで、学問的根拠ではないと思い至ったからです。たしかにPC用ソフトウェアの発展をつぶさに見てきた事実はありますが、その時代を生きただけで正しい理解を持っているとは言えないということですね。

確かにリレーションを持つという条件だけでなら、表計算のような表にまとめてもリレーショナルデータベースと言わなければならないでしょう。

ただし、「表になっているだけではリレーショナルデータベースでない場合がある」ということも事実です。

聖愛中学高等学校
安達順一
http://www.seiai.ed.jp/
Mar. 2013