Reputation: 93
I want to make 1 user and be able to add multiple images for this user. I'm thinking about adding content_group for using GROUP UP. Is this the correct database structure?
USER
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 1 | TESTNAME |
|---------------------|------------------|
CONTENT
|---------------------|------------------|------------------|
| id . | user_id | picture | content_group
|---------------------|------------------|------------------|
| 1 | 1 | 1 .jpg | xxxxxx
|---------------------|------------------|------------------|
| 2 | 1 | 2 .jpg | yyyyyy
|---------------------|------------------|------------------|
Upvotes: 0
Views: 72
Reputation: 99687
This looks reasonably well. If you are adding 'content groups', you should continue the same pattern though.
I think I would expect your data model to look a little bit more like this. I renamed some fields. This is super subjective, but this is how I'd probably expect the fields to be called.
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)
);
You might want to add some foreign keys, but it's ultimately optional. Not everyone uses them in MySQL.
The above data-model assumes that categories are shared. If categories belong to specific users, then that table should also get a user_id
field.
Furthermore, if categories are per-user and a category is required to exist for every item in content
, it means that the user_id
field is not needed in the content
table, because you can find it through the categories table.
So here's an alternative where categories are per-user and required:
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)
);
Upvotes: 1