gpt4 book ai didi

mysql - 两个表之间的关系?

转载 作者:行者123 更新时间:2023-11-29 06:34:06 28 4
gpt4 key购买 nike

我有表visitors 和表users。每个访问者只能由一个用户创建,并包含字段 visitors.userId

因此,users 表中的任何其他用户都可以编辑或删除一个或多个访问者。

我创建了第三个表events_log用于记录编辑/删除等操作:

访客日志

id | userId | visitorId | action

此表存储有关通过表visitors执行操作的用户的信息。

visitors_log 和其余两个表:usersvisitors 之间应该存在哪种关系?

现在我有这个 Db 方案:

enter image description here

我的观点是:visitors_log 可以有一行或多行。所以关系是一对多。同时 visitors_log 可以包含一个或多个用户。那么,我哪里错了?现在是一对一的关系。

最佳答案

访问者的 user_id 是否有可能改变?

如果答案是肯定的,那么您最好采取安全方法并在日志中保留两个外键,引用相关访问者提交操作的用户。

在 MySQL 中:

CREATE TABLE visitors_log (
idVisitorLog INT AUTO_INCREMENT,
idVisitor INT NOT NULL,
idUser INT NOT NULL,
action VARCHAR(100) NOT NULL,
date_action DATETIME NOT NULL,
PRIMARY KEY (idVisitorLog),
FOREIGN KEY (visitor_log_idVisitor) REFERENCES visitors(idVisitor),
FOREIGN KEY (visitor_log_idUser) REFERENCES users(idUser)
);

PS:您可能还需要日志表中的日期列,我添加了一个。


另一方面,如果分配给访问者的用户永远不会随着时间的推移而改变,那么您的设计就可以简化。在日志表中,您可以只存储访问者表的外键。由于访问者存储(固定)用户 ID,因此您无需在日志中复制该信息。

关于mysql - 两个表之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54756342/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com