我有2个表 - 一个存储用户信息(id,用户名,密码),第二个表存储有关事件的信息(id,名称,描述,日期,用户名(代表创建事件的用户))。我想实现“最喜欢的事件”功能。这将允许用户存储他喜欢的事件,然后将其显示在列表中。我不确定如何在设计方面实现这一点。我需要一个简单的解决方案类似于将喜欢的事件的ID存储在用户表中的字段中。我正在使用mysql和PHP。有人能指出我正确的方向吗?
答案 0 :(得分:4)
您希望有一个表链接来自用户和事件表的外键。
用户表:
id, username, password
活动表:
id, name, description, date, username
收藏夹表:
id, user_id, event_id
通过这种方式,您可以轻松访问喜爱的活动列表。
SELECT events.name, events.description, events.date
FROM events, users, favorites
WHERE favorites.user_id = users.id
AND favorites.event_id = events.id
答案 1 :(得分:0)
您需要的是最经典和最基本的many-to-many关系。
您需要额外的表格(例如:user_event_ref
)来存储用户和事件ID。
User:
id
name
Event:
id
name
UserEventRef:
user_id
event_id
在usereventref
中,每列都是Foreign Key,两列都是主键的一部分。
答案 2 :(得分:-1)
总是可以选择将一个tiny-int字段添加到Events表中,将事件标记为收藏夹。这并不违反规范化,因为偶数是否是最喜欢的,对其他事件没有影响。如果事件被删除,它还具有从收藏夹中自动删除事件的额外好处。
如果收藏夹需要排序方案,您仍然可以以相同的方式修改事件表。如果需要有关“收藏夹”的详细信息,例如当它被添加到列表中时等,那么您应该使用建议的附加表。