php - 用于保存数组的 SQL 结构?

标签 php sql multidimensional-array

如何将一个表与另一个表中的多条记录关联起来?

基本上,我有一个“事件”表,如何跟踪哪些“用户”(在他们自己的单独表中)参与特定事件?现在,我在“事件”表中只有一列,其中包含已加入该“事件”的用户 ID 的逗号分隔列表。

一定有更好的方法来做到这一点......对吗?

最佳答案

通常,您有一个名为 users_in_event 的表,该表为与 events 表建立多对多关系的每个用户保存一行。因此,对于每个事件,您都会有许多表行单独映射到用户。

CREATE TABLE users_in_event
( 
  user_id INT,
  event_id INT,
  FOREIGN KEY user_id REFERENCES users (user_id) ON UPDATE CASCADE,       
  FOREIGN KEY event_id REFERENCES events (event_id) ON UPDATE CASCADE
  -- Optionally, use ON DELETE CASCADE for the events foreign key
  -- FOREIGN KEY event_id REFERENCES events (event_id) ON UPDATE CASCADE ON DELETE CASCADE
)

要了解哪些用户参与了事件,请执行以下操作:

SELECT 
  users_in_event.user_id,
  users.name
FROM users JOIN users_in_event ON users.user_id = users_in_event.user_id
WHERE event_id=1234;

关于php - 用于保存数组的 SQL 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129084/

相关文章:

php - 什么是行长 "soft limit",我如何在 PSR-2 约定中解释它?

php - 如何停止 PHP SoapClient 转换 s1 :char arguments to 0 or 1 in request

php - 即使在 php 中设置时区后,服务器中的时间戳也会给出错误的时间

sql - 当插入事件发生时,我可以将列值更新到触发器中吗?

javascript - 返回最大数数组

javascript - 访问对象内多维数组内的对象元素

python - 反转 ndarray 中的任意维度

php7.3 : Compile error with two traits that define the same property

PHP:将 POST 请求 curl 到外部 Oauth2 API

php - 在 PhpMyAdmin 中监控