我想创建1个用户,并且能够为该用户添加多个图像。我正在考虑添加content_group以使用GROUP UP。这是正确的数据库结构吗?
USER
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 1 | TESTNAME |
|---------------------|------------------|
CONTENT
|---------------------|------------------|------------------|
| id . | user_id | picture | content_group
|---------------------|------------------|------------------|
| 1 | 1 | 1 .jpg | xxxxxx
|---------------------|------------------|------------------|
| 2 | 1 | 2 .jpg | yyyyyy
|---------------------|------------------|------------------|
答案 0 :(得分:1)
这看起来相当不错。如果要添加“内容组”,则应该继续使用相同的模式。
我想我希望你的数据模型看起来更像这样。我重命名了一些字段。这是超主观的,但这就是我可能期望调用字段的方式。
CREATE TABLE user (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);
CREATE TABLE content (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT
user_id INT UNSIGNED NOT NULL,
image_filename VARCHAR(50),
category_id INT UNSIGNED
);
CREATE TABLE content_category (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);
您可能想要添加一些外键,但它最终是可选的。不是每个人都在MySQL中使用它们。
上述数据模型假设共享类别。如果类别属于特定用户,则该表还应获得user_id
字段。
此外,如果类别是每个用户,并且content
中的每个项都需要存在类别,则表示user_id
表中不需要content
字段,因为你可以通过类别表找到它。
所以这里有一个替代方案,其中类别是每用户和所需的:
CREATE TABLE user (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);
CREATE TABLE content (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT
image_filename VARCHAR(50),
category_id INT UNSIGNED NOT NULL
);
CREATE TABLE content_category (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
user_id INT UNSIGNED NOT NULL,
name VARCHAR(50)
);