我应该创建一个或两个db表吗?

时间:2012-04-13 10:04:34

标签: mysql sql pdo

我有一个包含数千本书(标题,年份,作家等)的数据库表。用户可以将他们已阅读的书籍添加到列表中。如果它们在数据库中不可用,我想让它们能够添加自己的书籍,并且它们仅适用于该用户。我应该创建一个新表,还是仅使用“is_custom”和“user_id”列将其书籍添加到主表中?第二种方式对我来说似乎更容易管理(例如,在搜索方面,加入两个表似乎很愚蠢..),但我要问,因为两者(我的书和用户书籍)会变得相当大.. < / p>

谢谢!

2 个答案:

答案 0 :(得分:0)

理论上,最好的方法是为一个实体使用一个表。所以变种1。 '用户' - 通过链接表(多对多)的另一个表。您自己的图书归预定义的常量用户所有(更好,或者没有指向用户的链接)。

在OOP数据库中,您可以使用父表和两个子项。但首先看一下你的情况不会出现这种情况。

答案 1 :(得分:0)

我首先设计了简单性和可维护性,只有在您知道自己遇到问题后才会介绍性能改进。

“相当大”对不同的人意味着不同的东西 - 但是如果你必须解决这个问题,如果你将数据分成两个表,或者 - 甚至可能更糟 - 有不同的话,你可能必须解决它两次管理“books”表的解决方案比“userBooks”表的解决方案。