mysql/php:如何订阅/加入

q3qa4bjr  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(319)

关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。

两年前关门了。
改进这个问题
在我的应用程序中,用户可以创建一个事件,指定数量的人可以加入这些事件。
我能想到的最好的方法是将列命名为joined1,joined2,joined3。。以此类推,然后输入加入该列的用户的id号。
我的问题是,如何将用户id输入到一个未使用的连接点中?连接点的数量并不重要,但访问用户ID的权限却很重要。
谢谢你的帮助!

guykilcj

guykilcj1#

您开始进入关系数据的一些更复杂的方面。最终,您需要将用户/事件订阅存储在第三个表中,通常称为“lookup”或“join”表,或“manytomy”关系。
考虑到以下数据集:

USER table
id | name
---------
2  | bob
3  | alice

EVENT table
id | creator_id | name
-------------------
9  | 2          | party

您需要创建第三个表,存储参加聚会的人:

EVENT_USERS table
event_id | user_id
------------------
9        | 2
9        | 3

这被称为manytomyne关系,具有许多复杂性,包括如何防止重复(定义索引中同时包含事件id和用户id的唯一索引),以及如何检索正确的数据(更复杂的联接)。
示例连接以检索将要执行的操作:

SELECT host.name, e.name, guest.name 
FROM user host
LEFT JOIN event e 
    ON host.id = e.creator_id
LEFT JOIN event_users eu
    ON eu.event_id = e.id
LEFT JOIN user guest
    ON guest.id = eu.user_id

RESULT:
host.name | e.name | guest.name
-------------------------------
bob       | party  | alice
bob       | party  | bob

相关问题