我有一个包含数千本书(标题、年份、作者等)的数据库表。用户可以将他们已阅读的书籍添加到列表中。如果数据库中不可用,我想让他们能够添加他们拥有的书籍,并且它们仅适用于该用户。我应该创建一个新表,还是只将他们的书籍添加到带有“is_custom”和“user_id”列的主表中?第二种方式对我来说似乎更容易管理(例如,在搜索方面,加入两个表似乎很愚蠢..),但我问的是因为(我的书和用户的书)都会变得非常大..
谢谢!
我会首先设计简单性和可维护性,并且只有在您知道有问题时才引入性能改进。
“相当大”对不同的人意味着不同的事情——但如果你必须解决这个问题,如果你将数据拆分到两个表中,你可能需要解决两次,或者——可能更糟——有不同的管理解决方案“books”表比“userBooks”表。
理论上最好的方法是为一个实体使用一个表。所以变体 1.“用户” - 通过链接表(多对多)的另一个表。您自己的书籍归预定义的固定用户所有(更好,或者没有用户链接)。
在 OOP 数据库中,您可以使用父表和两个子表。但乍一看,你的情况甚至不需要。