2012-01-05 62 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