基础数据库设计问题

时间:2011-04-19 14:29:45

标签: database database-design

我正在为我正在构建的WCF服务设计数据库,并对如何设计它有疑问:
我有一个Subscriptions表,一个Events表和一个lu_Type表。

**Subscription**                  **lu_EventType**
SubscriptionId int  ID PK         TypeId      int ID PK
CustomerId     int  FK            Description nvarchar
TypeId         int? FK  
Description    nvarchar

**Event**  
EventId        int  ID PK  
CustomerId     int  FK
SubscriptionId int  FK  
EventTime      datetime
TypeId         int?
Description    nvarchar  

Customer可以有多个Subscription TypeId可以为空,因为客户可以订阅两种类型的订阅。已知事件,来自lu_Type表和未知事件,其中Subscription具有null TypeId且仅具有描述。
记录Event后,它将显示在基于Customer的网站中。

  1. 对于已知事件,当Event有一个TypeId时,我应该在记录中包含Description的{​​{1}}吗?或者我应该留下Event空白?如果我将其包含在内,它会占用更多的空间,但它会使检索/显示更容易。我不了解内部工作情况,知道其中任何一个是否是非问题。或者是否可能有更好的路径? (我只能有一个Description表,它必须是通用的。)思考?

2 个答案:

答案 0 :(得分:1)

如果以下情况属实:

  • 事件的描述与类型
  • 直接相关
  • 相同类型的所有事件应具有相同的描述
  • 对事件类型描述的更改应反映在现有事件

您应该在事件中包含Description,而是加入事件类型表以获取它。

否则,描述应包含在事件记录中,因为它与事件类型没有直接关系。

答案 1 :(得分:1)

  • 客户可以订阅许多活动
  • 一个活动可以发送给许多客户
  • 活动可以已知未知。已知事件是事件(子类型)。
  • 已知事件将所有列都包含为未知事件和更具体的列。

enter image description here