2012-06-28 38 views
1

我正在設計一個健康護理表格數據庫。我們使用各種表單,用戶標識和年份是唯一標識符。目前我每個表格都有一個表格,每個表格都有一個用戶ID和一個主鍵年份:ex,表格health_form_1,pk(user_id,year)各種特定於表格的列。表health_form_2,pk(user_id,year)各種特定於表格的列。可以在每個表中使用相同的主鍵嗎?

我覺得奇怪的是一組表都有相同的主鍵。有一個更好的方法嗎?

+0

我知道這個問題存在爭議,但我非常贊同每個表都應該有自己的唯一鍵,但不一定是自然鍵(但它可能是),因爲RedFilter和Brian Driscoll都指出出。特別是因爲業務需求發生變化,因此,naturla密鑰會發生變化,這是維護的噩夢。我已經看到了它,否則在真的很糟糕的應用程序中,很小的變化就會變成一個完全重寫的東西。 – David

回答

2

數據庫表不應映射到您的表單。相反,表格應該映射到您的系統正在建模的真實世界實體。

舉例來說,如果你在一個醫療結算系統的工作,那麼你可能有這樣的表:

  • 患者
  • 臨牀醫生
  • 發票

等等

這些表中的每一個都有自己的主鍵。

1

該方法的問題是,如果業務需求發生變化(例如,用戶可以在一年內多次創建相同的表單),那麼您需要更改主鍵的位置,當它也被用作其他地方的外鍵時,這可能是特別有問題的。

相反,我會爲每個表創建一個代理自動增量主鍵,然後在UserID和Yeart列上創建一個unqiue索引或約束。

此外,許多ORM使用單個PK工作得更好,並且它可以使您的查詢更加簡潔。

相關問題