Я пытаюсь создать базу данных для комического сайта. Я планирую иметь:
Однако каждый комикс может иметь несколько жанров одновременно (романтика, приключения и т. Д.).
Поэтому, если я настрою базу данных, как указано выше, мне нужно будет создать несколько строк для 1 комикса в Таблице 1, которые имеют ту же самую другую информацию:
(id, title,...)
но просто есть другой genre_id
.
Это кажется неправильным ... есть ли лучший способ сделать это?
Всего 2 ответа
Вы можете создать таблицу отношений «многие ко многим», называемую жанрами.
В этой таблице жанров хранятся все жанры, частью которых является комикс.
Комикс может быть частью нескольких жанров, а жанр может быть частью нескольких комиксов. Таким образом, вы можете нормализовать таблицу комиксов, не создавая дубликатов.
Пример таблицы 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
Вы хотите таблицу связей или соединений :
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)
);
Вы можете включить в таблицу дополнительную информацию, такую как дата создания каждой строки.