test131
test131

Reputation: 93

how to add multiple user with multiple times

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

Answers (1)

Evert
Evert

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

Related Questions