Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите спроектировать БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: проектирование базы данных
Чечако
Отправлено: 04 Марта, 2011 - 13:15:37
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




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

Проблема такова: представим себе такую ситуацию, когда надо загнать в бд фильмы и их жанры. как правильно скомпоновать таблицы? в моем понимании проблема в том, что у фильма может быть больше одного жанра (если 1 то все легко решается добавлением в таблицу с фильмами поля ид_жанра)

вижу 2 решения и оба кажутся некрасивыми и неправильными

Решение №1. создание 3-х таблиц

"фильмы" - с полями ид, имя фильма - в этой таблице будут фильмы, каждый с уникальным ид
"жанры"- с полями ид, имя жанра - в этой жанры с уникальным ид
"фильмы_жанры" - с полями ид, ид фильма, ид жанра
проблема в том, что эта таблица будет выглядеть так:

1 терминатор боевик
2 терминатор фантастика

если в среднем у фильма 2 жанра, а фильмов всего 5000 то в этой таблице будет 10к записей, из которых куча полей будут повторами

Решение №2. создание 2-х таблиц

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

1 терминатор 1,2

где 1,2 это уникальные ид жантров из таблицы жанров.
потом с помощью пхп получаем из этого значения 2 ид жанров, берем из бд их название и получаем фильм и его жанры. решение покрасивее первого, но что-то смущает.

Как правильно решить мою проблему? совсем не силен в проектировании бд, поэтому думаю что есть красивое и верное решение для этой проблемы
 
 Top
SAD Модератор
Отправлено: 04 Марта, 2011 - 13:27:20
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




это уже обсуждалось на форуме
 
 Top
poskrobka
Отправлено: 04 Марта, 2011 - 13:32:59
Post Id


Новичок


Покинул форум
Сообщений всего: 31
Дата рег-ции: Сент. 2009  


Помог: 0 раз(а)




первый вариант лучше - второй вариант не нормализованная база получается - так делать не стоит - принцип одно поле -одно значение
 
 Top
Чечако
Отправлено: 04 Марта, 2011 - 14:08:12
Post Id


Новичок


Покинул форум
Сообщений всего: 38
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




SAD пишет:
это уже обсуждалось на форуме


я не нашел, дай пожалуйста ссылку
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB