用于从列表中选择主元素的数据库设计

时间:2012-03-29 01:40:36

标签: database-design

用户有一个书籍列表,但他的个人资料中只能显示一本书,因为他应该选择它作为他最喜欢的书。如何设计我的架构以将书籍设为“书”?

如果我在图书实体中有一个字段IsFavourite,那么所有图书都可以标记为收藏。如果我在1上设置收藏夹,我必须检索他最喜欢的书并将其标记为收藏(3个数据库调用)。

如果我有一个引用书籍的偏好实体,我可以将该书设置为最喜欢的;

User -< Preferences >- Book >- User
User -< Book

你如何完成这些事情?我还缺少另一种方法吗?哪个最好?我正在使用代码优先的实体框架,所以我对我的模型进行编码。

1 个答案:

答案 0 :(得分:0)

三个表/模型

Users
Books
UserBooks (join table, user id and book id, and favorite flag)

用户和书籍之间存在一对多关联。

而不是第三个表中的收藏标志,你可以有一个参考用户(和他们最喜欢的书)的偏好模型,但它取决于你想在那里放置的其他东西,以确定这是否可行或如何看。