繁体   English   中英

如何设计这个简单的数据库?

[英]How to design this simple database?

我有2个表-一个表存储用户信息(ID,用户名,密码),第二个表存储有关事件的信息(ID,名称,描述,日期,用户名(代表创建事件的用户))。 我想实现“收藏夹事件”功能。 这将允许用户存储他最喜欢的事件,然后在列表中显示它们。 我不确定如何从设计上实现这一点。 我需要一个简单的解决方案。 类似于将喜欢的事件的ID存储在用户表的字段中。 我正在使用mysql和PHP。 谁能指出我正确的方向?

您希望有一个表链接用户表和事件表中的外键。

用户表:

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

您需要的是最经典,最基本的多对多关系。

您将需要额外的表(比如说user_event_ref )来存储用户和事件ID。

User:
  id
  name

Event:
  id
  name

UserEventRef:
  user_id
  event_id

usereventref每列都是外键 ,这两列都是主键的一部分。

始终可以选择在事件表中添加一个tiny-int字段,以将事件标记为收藏。 这不违反规范化,因为偶数是否为收藏夹对其他事件没有影响。 如果事件被删除,它具有从收藏夹中自动删除事件的附加好处。

如果收藏夹需要排序方案,您仍然可以以相同的方式修改事件表。 如果需要有关“收藏夹”的详细信息(例如何时将其添加到列表等),则应按照建议使用其他表格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM