一键作为多表的外键

时间:2013-11-07 12:21:16

标签: mysql mysql-workbench

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

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

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)
);

enter image description here

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

还有一件事,我试图这样做是不是很标准?还建议采用正确的方法。

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

1 个答案:

答案 0 :(得分:1)

试试这个:

  1. 将DDL保存在文件中。
  2. 在MySQL Workbench中创建新模型
  3. 文件>导入>逆向工程MySQL创建脚本
  4. 浏览到在步骤1中创建的文件。确保选中“在图上放置导入的对象”。
  5. 点击“执行”
  6. 从数据建模的角度来看,通过在users表上添加一个额外的列,最好将用户指定为管理员。因此:

    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)
    );