数据库设计:交易设计方法

时间:2012-04-13 11:15:51

标签: sql database database-design

我有一个基本但非常重要的事务数据库设计问题。我正在设计一个模拟四个真实世界实体的事务数据库。这些实体中的每一个都具有Owner属性。当用户创建实体时,他们将指定该实体的所有者是谁。然后,该所有者可以在以后更改。虽然从理论上讲,每个所有者可能会根据现实世界的情况而有所不同,但我希望少数拥有同一个人的所有者拥有许多实体。

在当前设计中,所有者存储在基本所有者表中,并且4个实体中的每一个都连接到同一所有者表,其中所有者ID是实体表中的FK。所有者表是基本的;它是OwnerID和Name,其中OwnerID是PK,OwnerID是每个实体表中的FK。

我有一种偷偷摸摸的感觉,这是一个交易数据库的错误方法,我采取的方法就好像我正在设计一个报告数据库(星型模式),其中所有者是这些实体的维度。在当前的设计中,它看起来像实体属于所有者而不是相反的方式。

另一种方法是我将所有者存储在每个实体表上,或者为每个实体创建所有者特定表,即表EntityOne然后加入EntityOneOwner,其中EntityID是EntityOneOwner表中的FK。

希望我在这里有意义。想法?

1 个答案:

答案 0 :(得分:3)

实际上,这是OLTP数据库的正确方法 - 听起来像一个很好的规范化数据库。

报告数据库(例如,OLAP)将被非规范化,并且在不同的表中重复所有者名称以便于查询。