我有visitors桌和users桌。每个访问者只能由一个用户创建,并且包含字段visitors.userId。
因此,表users中的任何其他用户都可以编辑或删除一个或多个访问者。
我已经为编辑/删除之类的日志记录操作创建了第三个表events_log:
Visitors_log
id | userId | visitorId | action此表存储有关在表visitors上执行操作的用户的信息。
表visitors_log和rest 2之间应该是哪种关系:users和visitors
现在我有了这个Db计划:

我的观点是:visitors_log可以有一个或多个行。因此,关系是一对多的。同时,visitors_log可以包含一个或多个用户。那么,我哪里错了?现在它是一对一的关系。
发布于 2019-02-19 00:48:37
游客的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时,您不需要在日志中复制该信息。
https://stackoverflow.com/questions/54756342
复制相似问题