【AP試験】エンティティが多対多の関係をRDBでそのまま実装できず中間テーブルが必要になる

情報処理

システム開発をしている人からすれば当たり前な話ですが、ある本に「RDBは多対多の関係を実装できないので中間テーブルが必要になる」って書いてありました。

このことを言葉で表現すると、つまりはそういうことなんだなーと、妙に関心をしました。この手のデータベース設計を「このテーブルは多対多の関係だから中間テーブルが必要だ」とはほとんど無意識に近い感じで設計していましたが、RDBだとこの場合は中間テーブルを追加しないと実装できないな―」というようなことは考えてなかったので、言葉にされるとびっくりしました。うまくこの驚きを伝えられないですが。あ、言葉で説明するならこういうことになるんだと新しい発見がありました。

ちなみに…もうすこし具体例をあげて説明をしておくと…

例えば、SNSにおけるユーザが誰とフレンドであるか?をRDBで表現する時にどのような設計を行いますか?ちなみにフレンドとはTwitterのフォローと違って一方向ではなく双方向の関係です。ユーザテーブルとユーザテーブルをつなげて表現(実装をすること)はできませんので、フレンドという関係を表す中間テーブルが必要になるでしょう。

つまりは「ユーザテーブル」ー「フレンドテーブル」ー「ユーザテーブル」という感じになるのではないでしょうか?新たにテーブルを追加しないと関係性をうまく表現ができないことがあるというのは、RDB設計に取り組んでみないと気づかないことだと思います。

※フレンドテーブルに2つのユーザIDをもたせることは参照性が悪い気もするので改善の余地がある気がしますが、今は深く考えないでおきます。

コメント

タイトルとURLをコピーしました