我目前在rails中编写一个webapp,用户可以将项目标记为收藏夹并阻止它们。我提出了两种方法,并想知道哪种方式更常见/更好。
为此设置2个表是明智的吗?像:
users_favorites
- user_id
- item_id
users_blocked
- user_id
- item_id
users_marks (or so)
- users_id
- item_id
- type (["fav", "blk"])
两种方式似乎都有优势。你会使用哪一个?为什么?
答案 0 :(得分:2)
第二个至少具有(如果主键为users_id + item_id
)的优势,以确保没有用户将某个项目都设为收藏和阻止。
我想我会得到第二个解决方案 - 特别是考虑到第一个解决方案中的两个表将具有相同的结构,这似乎很奇怪;它还允许您将所有信息放在同一个地方,这可能会有所帮助,在某些情况下(例如报告?)。
答案 1 :(得分:1)
我会选择#2。
它将所有适当的数据保留在一个表中。
否则,您可能不得不求助于联合或不同的联接来获取完整的详细列表。
答案 2 :(得分:1)
这只是一个项目的不同状态,所以#2将完成这项工作。如果它是颜色你会怎么做?两张不同的桌子?我不这么认为;)
编辑:您可能希望状态位于不同的表中并将其与外键相关联,但这取决于您。这取决于您期望拥有多少不同的状态。只是这两个或许多其他人?