我正在设计一个简单的数据库并且有一个关于关系的问题。到目前为止,我有用户、书籍、亮点和书签。关系规则如下:
- 每个用户都可以“订阅”一本书。
- 每本书可能有许多用户“订阅”它。
- 每个用户都可以为他“订阅”的书籍添加亮点和书签。
到目前为止我的架构:
我对最后一个关系有疑问。到目前为止,我所考虑的是使用单个主键而不是 2 个键作为表的复合键,book_users
然后将其作为表中的外键highlights
引用bookmarks
。
我朋友推荐的另一种方法是additions
在表中添加另一个名为book_users
字段的字段,TEXT
并以 JSON 格式存储信息。后者看起来更干净,我无法预见任何问题,但我只想确认此方法是否可以实施。
我想知道是否有更有效的方法来做到这一点?
谢谢你的时间。
我认为你的第一个设计有两个额外的表
highlights
和更好bookmarks
。从长远来看,设计以 JSON 格式保存数据会很困难,假设您需要搜索书签或搜索亮点,我在想什么是 sql 查询。或者假设您需要显示突出显示的页面,您将如何显示。
即使您以某种方式解决了上述问题,性能问题仍将是一个问题。第一个设计提供
indexes
甚至可以快速获取长期运行的大表数据。检查
id
表中列的数据类型books_users
,它将是INT
,