![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
Axielandr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 10.5.2008 Репутация: нет Всего: нет |
Хочу создать Базу данных по фильмам в mysql у себя на локальом сайте. Как сделать там чтобы, например в поле "жанр фильма" заносить несколько значений, напрмер, боевик, фантастика, комедия, И потом, чтобы на сайте у определенного фильма отображалось несколько жанров.
|
|||
|
||||
bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 9 Всего: 315 |
заносить несколько значений: боевик, фантастика, комедия
какая разница сколько текста записывать в поле? |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Axielandr, прочитайте в документации по такие типы данных, как множество и перечисление (SET и ENUM).
Под жанры отводите отдельную таблицу, с уникальным идентификатором записей. В поле ganre фильма заносите множество уникальных ключей, соответствующих жанрам. В принципе, реализвация может быть и другой, но с точки зрения технологии копать надо в сторону множеств. |
|||
|
||||
Axielandr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 10.5.2008 Репутация: нет Всего: нет |
Mal Hack,
спасибо, что подсказали в каком направлении "копать". Просто я новичек в этом деле еще. |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Всегда пожалуйста ![]() Вы даже не представляете себе, какие извращенные способы еще могут быть использованы в качестве реализации ![]() Побитовые маски, множество, яки строки ![]() Тем не менее это может позволить очень сильно оптимизировать многие вещи. |
|||
|
||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: нет Всего: 9 |
Очевидным минусом множеств является то, что множества не могут содержать более 64 элементов, и должны быть заранее предопределены значения. Но для данной задачи с фильмами вполне пойдёт.
-------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
HackMan, можно использовать связку ENUM+SET, ну или как я говорил выше, реализовывать множество черезу другие типы данных, как концепцию.
|
|||
|
||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: нет Всего: 9 |
Интересно взглянуть на реализацию. Я вообще стараюсь избегать типы SET и ENUM (возможно и неоправданно). Что это за тип данных такой, концепция? Я бы предложил вариант с промежуточной таблицей связей. Примерно так:
Таблица "filmgenrelinks" реализует связь "много-много",то есть к каждому из фильмов можно привязать несколько жанров, чего и требовалось. Правда, целостность данных и исключение повторений (в отличии от SET и ENUM) - всё это ложится на программиста. Это сообщение отредактировал(а) HackMan - 8.8.2008, 21:32 -------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
DmitryChess |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 17.7.2008 Репутация: нет Всего: нет |
Хм.. HackMan, а не проще ли следующим образом:
Таблица1 - Films 1. id - код 2. name_film - название фильма 3. id_genrу - код жанра 4. year - год выпуска 5. description - описание Таблица2 - Genres 1. id_genry - код жанра 2. name_genry - название жанра |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 7 Всего: 140 |
поддерживаю DmitryChess, можно поступить и без третей таблицы filmgenrelinks
-------------------- Amazing ![]() |
|||
|
||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: нет Всего: 9 |
DmitryChess, это реализация связи "один-ко-многим". Больше одного жанра к одному фильму ты не прикрутишь.
-------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
HackMan |
|
|||
![]() Юзверь-программист ![]() ![]() Профиль Группа: Участник Сообщений: 391 Регистрация: 18.6.2005 Где: .ua Репутация: нет Всего: 9 |
source777, ага, спасибо, не подумал про такой ключ. Повторения он исключит, но разве он исключит возможность создавать записи с несуществующими filmid и genreid?
Это сообщение отредактировал(а) HackMan - 8.8.2008, 22:29 -------------------- Завтра - это самый загруженный день недели ![]() ![]() ![]() |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: нет Всего: 56 |
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Axielandr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 10.5.2008 Репутация: нет Всего: нет |
Вот допутим я создал отдельну таблицу по жанрам из двух полей id и ganre_name. А в таблицу с фильмами в поле ganre ("set") я заношу несколько значений: 1,5,6 и т..д (т.е. заношу номер id определенного жанра из таблицы со жанрами). Потом я делаю запрос к БД и получаю результат в котором несколько значений, например 1,5,6. У меня здесь вопрос: Как из этого результата выбрать по одному значению, т.е. я хочу чтобы было примерно так
если в результате существеут '1' то выводить 'комедия' если в результате существеут '3' то выводить 'ужасы' вот чтото в этом роде Оговорюсь сразу, что владею знанием по php_mysql только на уровне новичка (знаю только простейшие функции) Это сообщение отредактировал(а) Axielandr - 9.8.2008, 07:00 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |