設計者の発言

業務システム開発とデータモデリングに関する語り

リレーションとリレーションシップの誤用に注意

 RDBやデータモデリングに関する説明の中で「リレーションシップ」と言うべきところで「リレーション」と表現する誤用が目立つ。どうでもいいような違いに思われるかもしれないが、これらは明確に区別されるべきだ。そうでないと、RDBの用語の意味がわからなくなるからだ。

 IBMのフェローであったE.F.コッド(1923-2003)による1970年のの歴史的論文 "A Relational Model of Data for Large Shared Data Banks" (大規模共有データバンク向けデータのリレーショナル・モデル。杉本さんによる対訳)によって、世界で初めてRDBの理論的枠組みが示された。この論文で使われている用語"relation"が、RDB(relational database)の呼称の由来である。

 relationとは何か。その論文でコッド博士は、1個のテーブルに格納された行(tuples)の集まりをrelationと呼んだ。つまり、「あるテーブルのある瞬間における全行のまとまり」がrelationであって、これを基礎とするデータの保管・操作に関する数学的枠組みが、relational modelなのである。ちなみに彼は、論文執筆当時に話題になっていた「米ソ関係(US-Soviet relations)」にヒントを得てこの用語を選んだと生前に語っている。

 relationの意味がわかれば、relationshipの意味もわかってくる。それは「2つのrelation同士の関連」に他ならない。2人のfriendの間にfriendshipがあるし、2人のsportsmanの間にsportsmanshipがある。同様に、2つのrelationの間にrelationshipがある(図1)。いったんこれを理解すれば、リレーションとリレーションシップが似て非なる概念であることも、それらを誤用することの問題もよくわかるだろう。

f:id:dbconcept:20210705162008p:plain

図1.friendshipとrelationship

 ではなぜ、これらの用語は誤用されがちなのだろう。まずは翻訳の問題がありそうだ。リレーショナル・モデルは「関係モデル」と訳されることが多いが、「関係」ではrelationなのかrelationship(テーブル同士の関連)なのかがよくわからない。関係モデルと聞けば、ふつうの日本人技術者は「テーブル同士の関係」、つまりどちらかといえば「relationshipに関するモデル」だと思ってしまうだろう。

 そもそも、relationとrelationshipを区別できる熟した日本語が存在しないのが悩ましい。データモデリングの世界ではそれぞれを関係、関連と呼び分けてはいるが、無理やり感は否めない。もう日本語ではなく、リレーション、リレーションシップと呼び分けるほうが適切なのかもしれない。

 しかしカタカナ表記でも問題が生じており、MS Accessではじっさいに誤用があった。現在のバージョンでは修正されているが、古いバージョンではテーブル同士の関連(relationship)のことをリレーションと呼んでいた。翻訳の問題なのか、もともとの誤用なのかはわからないが、小さからぬ影響を与えたのではないだろうか。

 こういったややこしい経緯ゆえに、個々の誤用に対していちいちケチをつけてもしょうがない。とはいえ、コッド博士の最大の業績といわれる「リレーショナル・モデル」に対するリスペクトがあるならば、こういった初歩的な誤用は避けたいとは思うのだ。