首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两张桌子之间的关系?

两张桌子之间的关系?
EN

Stack Overflow用户
提问于 2019-02-18 22:32:35
回答 1查看 49关注 0票数 0

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

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

我已经为编辑/删除之类的日志记录操作创建了第三个表events_log

Visitors_log

代码语言:javascript
复制
id | userId | visitorId | action

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

visitors_log和rest 2之间应该是哪种关系:usersvisitors

现在我有了这个Db计划:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-19 00:48:37

游客的user_id有可能永远改变吗?

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

在MySQL中:

代码语言:javascript
复制
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时,您不需要在日志中复制该信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54756342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档