3

基本的ではあるが非常に重要なトランザクション データベースの設計に関する質問があります。実世界の 4 つのエンティティをモデル化するトランザクション データベースを設計しています。これらの各エンティティには所有者属性があります。ユーザーがエンティティを作成するとき、そのエンティティの所有者を指定します。この所有者は後で変更できます。理論的には、各所有者は現実世界のシナリオに基づいて異なる可能性がありますが、エンティティの多くを所有する同じ人物を持つ少数の所有者が予想されます。

現在の設計では、所有者は基本的な所有者テーブルに格納され、4 つのエンティティのそれぞれがこの同じ所有者テーブルに結合され、所有者 ID がエンティティ テーブルの FK になります。所有者テーブルは基本的なものです。それは OwnerID と Name です。OwnerID は PK であり、OwnerID は各エンティティ テーブルの FK です。

これはトランザクション データベースの間違ったアプローチであり、私が取っているアプローチは、所有者がこれらのエンティティのディメンションであるレポート データベース (スター スキーマ) を設計しているかのように感じます。現在の設計では、エンティティが所有者に属しているように見えますが、逆ではありません。

別の方法として、各エンティティ テーブルに所有者を格納するか、エンティティごとに所有者固有のテーブルを作成します。つまり、テーブル EntityOne は、EntityID が EntityOneOwner テーブルの FK である EntityOneOwner に結合します。

私がここで意味を成していることを願っています。考え?

4

1 に答える 1

4

実際、これは OLTP データベースの正しいアプローチです。正規化された優れたデータベースのように思えます。

レポート データベース (OLAP など) は、クエリを容易にするために、さまざまなテーブルで繰り返される所有者の名前で非正規化されます。

于 2012-04-13T11:19:11.643 に答える