有许多类似的问题,但这有点不同。
我有一个表有一个外键,它将引用两个表。 我使用下面的查询进行测试。
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工作台中绘制模型时,它会在信息表中创建我不想要的新字段。我希望user_id可以工作并将关系显示为用户和管理员表的外键。
还有一件事,我试图这样做是不是很标准?还建议采用正确的方法。
表名仅用于示例目的。这里没有逻辑。我试图找到一个键的解决方案作为多个表的外键,并面临与mysql工作台的问题。
答案 0 :(得分:1)
试试这个:
从数据建模的角度来看,通过在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)
);