我在users
表中有大约100万个数据。
现在我希望每个用户都可以拥有多种颜色。
示例user_id = 1
类似颜色blue, green, yellow, black
等。那么这里存储此颜色值的数据库结构是什么?
答案 0 :(得分:2)
如果每个用户可以有任意数量的颜色,那么您应该创建另一个表,如下所示:
CREATE TABLE userColors (
userID INT,
color VARCHAR(16),
FOREIGN KEY (userID) REFERENCES users(user_id)
);
然后每个用户可以有任意数量的颜色,因此如果用户有三种颜色与他们相关联,那么他们将在userColors
表中有三个条目。
答案 1 :(得分: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映射到红色的id。
答案 2 :(得分:0)
你可能有一个文本组成颜色用户喜欢在文本中附加每种颜色,然后将Text That文本存储在表格中,并且在检索时使用一些逻辑来取回它们,你可以使用StringTokenizer或Convert String通过循环进入String of String ...然后从该数组中可以访问用户的颜色......