Вопрос № 40765: Мне надо сделать видеотеку. У каждого фильма есть жанр, режиссёр и название. Причём жанров и режисёров может быть не один. Какие и сколько таблиц надо сделать, чтобы получить оптимальное решение???...
Вопрос № 40.765
Мне надо сделать видеотеку. У каждого фильма есть жанр, режиссёр и название. Причём жанров и режисёров может быть не один. Какие и сколько таблиц надо сделать, чтобы получить оптимальное решение???
Отправлен: 19.04.2006, 18:44
Вопрос задал: Stamm (статус: Студент)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 7)
Отвечает: Doctor013
Здравствуйте, Stamm!
Три справочника - режиссеры, жанры, фильмы и две таблички на связь фильм - режиссер, фильм-жанр
--------- Большинство ответов на вопросы в рассылках находиться через Яндекс за 1 мин.
Ответ отправил: Doctor013 (статус: Студент)
Ответ отправлен: 19.04.2006, 18:56 Оценка за ответ: 4 Комментарий оценки: А можно по конкретнее......
Отвечает: Ерёмин Андрей
Здравствуйте, Stamm!
Дык по одному и сделать. Таблица `films`, поля `genre`, `director`, `title`. А если значений несколько - то просто разделять их символом ("|" например), а при чтении - разделять строку на составляющие. В PHP это может сделать с помощью функции explode().
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор) Россия, Тула WWW:Программирование на DELPHI: Всё для программиста. ICQ: 286837644 ---- Ответ отправлен: 19.04.2006, 19:13 Оценка за ответ: 5 Комментарий оценки: А если нужно найти по режисёру его фильмы, если притом записей в таблице много около 100000. Сколько будет время запроса???
Отвечает: SQL_Deamon
Здравствуйте, Stamm!
1. Я совершенно согласен с Ерёминым Андреем. Так как в таблице всего три поля (Название, режисер, жанр), то избыточного дублирования данных не будет. По-этому метод "декомпозиции без потерь" совершенно излишний, а разбивание данной таблицы на несколько и связь их по ключевым полям только увеличит время обработки запросов.
2. Время запроса на выборку данных по определенному режисеру (жанру, названию или любому другому принципу) зависит исключительно от мощьности Вашего процессора и количества оперативной памяти. Например, на моем компьютере (Celeron 1 GHz, SDRAM 256 MB) данный запрос займет около 1-2 секунд при 100000 записей.
Ответ отправил: SQL_Deamon (статус: 1-ый класс)
Ответ отправлен: 19.04.2006, 22:05
Отвечает: Игорь Елизаров
Здравствуйте, Stamm!
Я бы сделал три таблицы (или четыре)
- справочник жанров
код жанра
название и описание жанра
- справочник режиссерор (при желании эти таблички можно объединить, но это лишняя морока)
код режисера
ФИО
краткая инфа о режиссере
- справочник-описатель фильма
содержит идентификатор фильма,
его название,
описание,
ну и какую-то дополнительную информацию, например, номер кассеты
- таблица связи между фильмом, режиссерами и жанрами
эта таблица содержит три (лучше 4 ) поля
- код жанра
- код режиссера
- код фильма
- ну и на всякий случай примечание
В этой табличке как раз и ставится в соответствие одному фильму несколько жанров и режиссеров, то есть одному фильму может соответствовать несколько записей в этой табличке.
Вот вроде и все. Удачи.
Ответ отправил: Игорь Елизаров (статус: 3-ий класс)
Ответ отправлен: 20.04.2006, 09:09