我是 mysql 新手,尝试做类似的事情: 我需要一个可以容纳无限数量的用户 ID 的表,我认为我可以这样做:
TABLE USER FIELDS:
user_id - PK
group_id - FK
TABLE GROUP FIELDS:
group_id - PK
user_id - FK
当然它不会工作,因为主键是唯一的,所以我现在得到了 1:1 关系,完全没有任何关系, 我试图不将 group_id 设置为 PK ,而不是我可以有类似 n:n 关系的东西,但你不能在 NOT UNIQUE 字段上创建外键,所以这是不可能的。 有人可以帮助我吗?
最佳答案
从你的问题中绝对不清楚你的最终目标是什么,但如果你正在寻找一种在用户和组之间创建 N:N 关系的方法,你可以通过引入这样的数据透视表来实现
CREATE TABLE users
(
user_id INT NOT NULL PRIMARY KEY,
user_name VARCHAR(255)
);
CREATE TABLE groups
(
group_id INT NOT NULL PRIMARY KEY,
group_name VARCHAR(255)
);
CREATE TABLE group_user
(
group_id INT NOT NULL,
user_id INT NOT NULL,
PRIMARY KEY (group_id, user_id),
FOREIGN KEY (group_id) REFERENCES groups (group_id),
FOREIGN KEY (user_id) REFERENCES users (user_id)
);
这是一个 SQLFiddle 演示
关于mysql - 创建值列表作为字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27672934/