私はWebアプリの開発者であり、データベース設計の経験が少ないので、どなたかご意見をいただければ幸いです。
このWebアプリを初めて作成したとき、アプリは少数のプロパティ(列)を持つ1種類のオブジェクト(テーブル)を管理していました。アプリが成長するにつれて、非常に類似したオブジェクトのタイプが追加されたため、オブジェクトタイプごとに追加のテーブルを作成しました。 (すべてのオブジェクトタイプは同じクラス/プロトタイプから継承すると言えます。)各オブジェクトタイプが同じプロパティタイプの約90%を共有しているため、各オブジェクトタイプのテーブルはすべてほぼ同じであることがわかりました。たとえば、テーブルにはほぼ同じ列名(&データ型)があるかもしれませんが、1つのテーブルには、そのオブジェクトタイプに固有のプロパティを参照するために、1〜2個の追加列がある場合があります。
すべてのオブジェクトタイプが非常に似ているため(Dog、Cat、およびMouseがすべてAnimalクラスから継承されるのと同じように)、これらすべてを同じテーブルに配置し、一部の列にNULL値を含めることを許可するのが賢明でしょう。列はそのタイプに関連していませんか?それとも、私が考慮していない他の代替案はありますか?
参考までに、これまでに確認した同様の投稿をいくつか紹介します。
2) https://stackoverflow.com/questions/9021838/database-design-multiple-tables-vs-a-single-table
すべての動物が共有する情報を含むAnimal
テーブルを作成します。 Animal
テーブルにtype
または同様の名前の別の列を追加します。ここでは、動物が猫、犬、マウス、または何であるかを指定します。
次に、Cat
ID(主キー)を外部キーとして持つDog
、Mouse
、およびAnimal
テーブルを作成します。これらの各テーブルには、猫、犬、マウスに固有の列があります。 Mouse
テーブルには列Favorite_cheese
などの通常の動物のテーブルにはありません。完全なマウスレコードを取得するには、2つのテーブルを結合できます。
これにより、サブクラス化機能をサポートしながら、比較的無駄のないAnimal
テーブルを作成できます。