質問: Webアプリの開発を一人でしているものです。今まで、アプリケーション側をメインに触ってましたが、いざDB設計をしようと思ったら分からないことだらけで、上手く情報を見つけることすらできず困っています。 現在、Web上でユーザ同士をマッチングするアプリケーションを開発しています。 全てのユーザはそれぞれ、AとBどちらかのユーザ属性を選ぶことが可能で、どちらかにしか所属できません。またユーザ属性に応じてテーブルの持つカラムが異なります。 一方で、全てのユーザはメールアドレスとパスワードのような共通の値も必要です。 そこで現在の設計では、最初にメールアドレスとパスワードのような共通の値をもつテーブル(ユーザテーブル)を作成し、その後、A属性のテーブルとB属性のテーブルがユーザテーブルを参照する形にしています。 上手く伝わっているのかも微妙ですが、果たしてこれで良いのか自信がありません。 「何が言いたいのかまとまってないので、まずはこれをやって整理してみろ」等なんでも構いません。何かお力添えいただければ幸いです。 ※私としては、現在、DBの設計パターン集のようなものが見つかれば参考になるだろうと思い探しているのですが見つかりません。併せてご教授頂ければ幸いです。
回答: あなたが記述されているのはおそらく「サブクラス化」と言われる、DB設計では一般的な技法で、記述からわかる範囲では特に危惧するような点はないように思います。「DB設計 サブクラス化」などで検索されれば、あれやこれや情報が見つかるかと思います。 私自身は学生時代にRDBの基礎理論を学習した後、ん十年を経て実際にDB設計に携わることになるまで(なった後も)「DBの設計パターン集」的なものを参照したことがないので、残念ながらこれが良いというアドバイスはできません。(「サブクラス化」なんて言い方も後付けで他の人から教えらられたものです。)