代码之家  ›  专栏  ›  技术社区  ›  nocksock

如何正确设计一个简单的收藏夹和被阻止的表?

  •  0
  • nocksock  · 技术社区  · 15 年前

    我目前正在Rails中编写一个webapp,用户可以在其中将项目标记为收藏夹并阻止它们。我想出了两种方法,想知道哪一种更常见/更好。

    1。分离联接表

    有两张桌子可以吗?像:

    users_favorites
      - user_id
      - item_id
    
    users_blocked
      - user_id
      - item_id
    

    2。单人桌

    users_marks (or so)
      - users_id
      - item_id
      - type (["fav", "blk"])
    

    这两种方法似乎都有优势。你会用哪一个?为什么?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Pascal MARTIN    15 年前

    第二个至少有优势 (如果主键是 users_id + item_id ) 以确保没有用户同时拥有收藏和阻止的项目。

    我想我会得到第二个解决方案的 --特别是考虑到第一个解决方案中的两个表具有相同的结构,这似乎很奇怪。 ;而且它还允许您将所有信息放在同一位置,这在某些情况下可能会有所帮助。 (例如,报告?) .

        2
  •  1
  •   Adriaan Stander    15 年前

    我会和2一起去。

    它将所有适当的数据保留在一个表中。

    否则,您可能需要使用联合或不同的联接来获取完整的详细信息列表。

        3
  •  1
  •   Frank Heikens    15 年前

    这只是一个项目的不同状态,因此2将完成这项工作。如果是颜色你会怎么做?两张不同的桌子?我不这么认为;)

    编辑:您可能希望状态在不同的表中,并将其与外键链接,但这取决于您自己。这取决于你期望拥有多少不同的地位。就这两个还是其他许多?