创建值列表作为字段

时间:2014-12-28 01:11:08

标签: mysql

我是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字段上创建外键,所以它是不可能的。 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:0)

您的问题绝对不清楚您的最终目标是什么,但如果您正在寻找一种方法来创建用户和群组之间的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 演示

答案 1 :(得分:0)

如果每个用户属于一个组,那么您只需要从组表中删除用户ID,如下所示:

TABLE USER FIELDS:
user_id - PK
group_id - FK

TABLE GROUP FIELDS:
group_id - PK

如果您打算让每个用户属于多个组,那么peterm answer所示的连接表就是您的选择。