首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个键作为多个表的外键

问一个键作为多个表的外键
EN

Stack Overflow用户
提问于 2013-11-07 12:21:15
回答 1查看 2.8K关注 0票数 1

有许多类似的问题,但这有点不同。

我有一个表,它有一个外键,它将引用两个表。我使用下面的查询进行测试。

代码语言:javascript
复制
CREATE TABLE users
(
    id int NOT NULL,
    username varchar(255) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE admins
(
    id int NOT NULL,
    username varchar(255) NOT NULL,
    PRIMARY KEY (id)
);


CREATE TABLE info
(
    id int NOT NULL,
    fullname int NOT NULL,
    user_id int,
    PRIMARY KEY (id),
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (user_id) REFERENCES admins(id)
);

​

​

上面的查询工作正常。但是,当我试图在mysql工作台中绘制模型时,它会在info表中创建我不想要的新字段。我希望user_id应该工作,并将关系显示为用户和管理员表的外键。

还有一件事,我是不是想这么做是不标准的?同时也提出了一种正确的方法。

表名仅用于示例用途。这里没有逻辑。我试图为一个键寻找解决方案,作为多个表的外键,并面临mysql工作台的问题。

EN

回答 1

Stack Overflow用户

发布于 2013-11-07 12:36:52

试试这个:

  1. 将DDL保存在文件中。
  2. 在MySQL工作台中创建新模型
  3. 文件>导入>逆向工程MySQL创建脚本
  4. 浏览到步骤1中创建的文件。确保选中了“将导入的对象放在关系图上”。
  5. 单击“执行”

从数据建模的角度来看,最好将用户指定为管理员,在users表中添加一个额外的列。因此:

代码语言:javascript
复制
CREATE TABLE users
(
    id int NOT NULL,
    username varchar(255) NOT NULL,
    isAdmin boolean not null default false,
    PRIMARY KEY (id)
);

CREATE TABLE info
(
    id int NOT NULL,
    fullname int NOT NULL,
    user_id int,
    PRIMARY KEY (id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19835804

复制
相关文章

相似问题

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