2012-03-27 77 views

回答

2

如果每个用户可以拥有任意数量的颜色,那么你应该创建另一个表,是这样的:

CREATE TABLE userColors (
    userID INT, 
    color VARCHAR(16), 
    FOREIGN KEY (userID) REFERENCES users(user_id) 
); 

然后每个用户可以有任意数量的颜色,所以如果用户相关联的三种颜色与他们一起,他们将在userColors表中有三个条目。

+0

无需'pk'或'fk'? – 2012-03-27 13:15:07

+1

不能在这两列中的任何一列上使用“PRIMARY KEY”,因为它是多对多关系,因此您可以*和*将重复每行中的值。你可以在'userID'字段使用'FOREIGN KEY'。 – Travesty3 2012-03-27 13:23:04

0

你可能有一个文本由......组成的色彩,用户如同追加该文本,然后存储在表中的文本类型文本,并在检索的时候使用一些逻辑,让他们回来每一种颜色,你可以使用的StringTokenizer或转换字符串转换成String数组通过循环...,然后从该阵列可以访问你的用户的颜色...

2

从“复选框”挂在嘴边,我假设你有颜色的时候,可以选择一个预先定义的列表从在沿行的表:

CREATE TABLE colors (
    color_id INT NOT NULL, 
    name VARCHAR(100), 
    PRIMARY KEY (color_id) 
) 

所以你基本上要一个Many-to-Many关系赌注吐温两个,您可以与像表表示:

CREATE TABLE user_color_likes (
    user_id INT NOT NULL, 
    color_id INT NOT NULL, 
    FOREIGN KEY(user_id) REFERENCES users(user_id), 
    FOREIGN KEY(color_id) REFERENCES colors(color_id) 
) 

然后,如果用户检查框表示喜欢蓝色和红色,你加两行到该表,一个映射用户的id来的标识颜色为蓝色,另一个将用户的ID映射到红色的ID。

相关问题