我設計了一個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
具有空TypeId並且只有說明。
一旦登錄了Event
,它將顯示在基於Customer
的網站上。
- 對於已知的事件,當
Event
將有TYPEID,我應該包括在記錄中的Event
的Description
?或者我應該讓Description
保持空白?如果包含它,它會佔用更多的空間,但它會使檢索/顯示更容易。我對內部運作知之甚少,無法知道其中的任何一個是否存在問題。或者有沒有更好的途徑? (但我只能有一個Event
表,它需要是通用的。)想法?
是的,是的,是的。你讓我意識到我不需要事件上的TypeId或Description,因爲我有SubscriptionId,並且可以加入。 - - - 所以在一般的db設計中,做JOIN總比重複列更好,是正確的? – Marcus 2011-04-19 15:10:18
@G_M:**絕對**。如果可以避免的話,您永遠不想複製數據庫中的數據,並且幾乎可以避免所有(如果不是全部)情況下的數據。這是關係數據庫「關係」的一部分;您使用實體之間的關係來檢索數據,而不是複製數據。 – 2011-04-19 15:15:23