2012-01-05 68 views
0

我正在設計一個用戶可以列表的數據庫。棘手的部分(對我來說)是每個用戶都可以製作一個具有相同標題的列表,並在其上具有相似的項目。我的解決辦法是這樣的創建3個表:數據庫設計缺陷?

User- 
ID/ 
name/ 
email 

Title- 
ID/ 
name/ 
date/ 
userID [FK] 

List- 
ID/ 
userID [FK]/ 
titleID [FK]/ 
text 

,我能想到的獲取列表信息是查詢user IDtitle ID得到他們的具體名單(文字)爲標題的最好方法。現在它不會讓我將titleID作爲FK添加,因爲它無法添加或更新子行,因此提出問題,是否有更好的方法來設置它以使查詢更容易獲取列表?

+0

當你說他們可以擁有相同的標題時,概率是多少?如果這是一種非常常見的情況,那麼標題的單獨表格肯定會有助於冗餘。 – 2012-01-05 00:28:06

+0

你真的需要'Title'表嗎?爲什麼不用'list',userID [FK],title,...''來創建'User'和'List'呢? – 2012-01-05 00:30:16

+0

是的,這將是一個非常高的事件,這就是爲什麼我有標題表。並且用戶也將擁有多個列表 – 2012-01-05 00:37:29

回答

2

「標題」是一個非常模糊的實體名稱。我建議用戶,列表,ListItems。另外,請考慮將您的PK字段更改爲UserID,ListID。它會使你的sql語句更具可讀性。

你說「現在它不會讓我添加titleID作爲FK,因爲它不能添加或更新子行」,是數據庫尖叫還是應用程序? MS訪問還是類似的?

+0

是的我使用phpmyadmin – 2012-01-05 00:50:19