SQL: Как спроектировать базу данных, когда один столбец имеет несколько категорий? - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь настроить базу данных для коми c веб-сайта. Я планирую иметь:

  • Таблица № 1: Комиксы (id, title, genre_id, ...)
  • Таблица № 2: Жанры (id, name, .. .)

Однако каждый коми c может иметь несколько жанров одновременно (романс, приключение и т. Д. c.).

Так что, если я настрою базу данных, как указано выше, мне придется создать несколько строк для 1 comi c в Table1, которые имеют такую ​​же другую информацию:

(id, title,...) 

, но просто имеют разные genre_id.

Это кажется неправильным ... есть ли лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 12 февраля 2020

Вы можете создать таблицу отношений "многие ко многим", называемую жанрами.

В этой таблице жанров хранятся все жанры, частью которых является книга комиксов c.

Книга комиксов c может быть частью нескольких жанров, а жанр - частью нескольких комиксов c. Таким образом, вы можете нормализовать таблицу комиксов c без создания дубликатов.

Пример таблицы Genre_mapping:

comic_id genre_id 
1           1   
1           2
2           2
3           1
3           5
3           5

Таблица жанров:

genre_id genre_name
1           Comedy
2           Action
3           Romance
4           Adventure
5           Thriller
0 голосов
/ 12 февраля 2020

Требуется связь или соединение таблица:

create table comic_genres (
    comic_genres id generated always as identity primary key,
    comic_id int references comics(comic_id),
    genre_id int references genres(genre_id)
);

Вы можете включить в таблицу дополнительную информацию - например, дату создания каждой строки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...