Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как реализовать базу данных по фильмам, Реализовать БД по фильмам 
:(
    Опции темы
Axielandr
Дата 7.8.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.5.2008

Репутация: нет
Всего: нет



Хочу создать Базу данных по фильмам в mysql у себя на локальом сайте. Как сделать там чтобы, например в поле "жанр фильма" заносить несколько значений, напрмер, боевик, фантастика, комедия, И потом, чтобы на сайте у определенного фильма отображалось несколько жанров.
PM MAIL ICQ   Вверх
bars80080
Дата 7.8.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



заносить несколько значений: боевик, фантастика, комедия
какая разница сколько текста записывать в поле?
PM MAIL WWW   Вверх
Mal Hack
Дата 7.8.2008, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Axielandr, прочитайте в документации по такие типы данных, как множество и перечисление (SET и ENUM). 
Под жанры отводите отдельную таблицу, с уникальным идентификатором записей. В поле ganre фильма заносите множество уникальных ключей, соответствующих жанрам.

В принципе, реализвация может быть и другой, но с точки зрения технологии копать надо в сторону множеств.
PM ICQ   Вверх
Axielandr
Дата 7.8.2008, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 10.5.2008

Репутация: нет
Всего: нет



Mal Hack
спасибо, что подсказали в каком направлении "копать". Просто я новичек в этом деле еще.
PM MAIL ICQ   Вверх
Mal Hack
Дата 7.8.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Цитата(Axielandr @  7.8.2008,  21:43 Найти цитируемый пост)
Mal Hack, 
спасибо, что подсказали в каком направлении "копать". Просто я новичек в этом деле еще. 

Всегда пожалуйста smile
Вы даже не представляете себе, какие извращенные способы еще могут быть использованы в качестве реализации smile))
Побитовые маски, множество, яки строки smile
Тем не менее это может позволить очень сильно оптимизировать многие вещи.
PM ICQ   Вверх
HackMan
Дата 8.8.2008, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: нет
Всего: 9



Очевидным минусом множеств является то, что множества не могут содержать более 64 элементов, и должны быть заранее предопределены значения. Но для данной задачи с фильмами вполне пойдёт.


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
Mal Hack
Дата 8.8.2008, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



HackMan, можно использовать связку ENUM+SET, ну или как я говорил выше, реализовывать множество черезу другие типы данных, как концепцию.
PM ICQ   Вверх
HackMan
Дата 8.8.2008, 21:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: нет
Всего: 9



Цитата(Mal Hack @  8.8.2008,  21:05 Найти цитируемый пост)
можно использовать связку ENUM+SET

Интересно взглянуть на реализацию. Я вообще стараюсь избегать типы SET и ENUM (возможно и неоправданно). 

Цитата(Mal Hack @  8.8.2008,  21:05 Найти цитируемый пост)
черезу другие типы данных, как концепцию

Что это за тип данных такой, концепция?

Я бы предложил вариант с промежуточной таблицей связей. Примерно так:
Код

Таблица "films" (Фильмы)
id - код
name - название
year - годвыпуска
description - описание

Таблица "genres" (Жанры)
id - код
name - наименование жанра

Таблица "filmgenrelinks" (Связи жанров с фильмами)
id - код
filmid - код фильма, связан с films.id
genreid - код жанра фильма, связан с genres.id


Таблица "filmgenrelinks" реализует связь "много-много",то есть к каждому из фильмов можно привязать несколько жанров, чего и требовалось. Правда, целостность данных и исключение повторений (в отличии от SET и ENUM) - всё это ложится на программиста.

Это сообщение отредактировал(а) HackMan - 8.8.2008, 21:32


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
DmitryChess
Дата 8.8.2008, 21:48 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 - название жанра
PM MAIL   Вверх
MoLeX
Дата 8.8.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 7
Всего: 140



поддерживаю DmitryChess, можно поступить и без третей таблицы filmgenrelinks


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
HackMan
Дата 8.8.2008, 22:19 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: нет
Всего: 9



DmitryChess, это реализация связи "один-ко-многим". Больше одного жанра к одному фильму ты не прикрутишь.


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
source777
Дата 8.8.2008, 22:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(MoLeX @  8.8.2008,  22:04 Найти цитируемый пост)
поддерживаю DmitryChess, можно поступить и без третей таблицы filmgenrelinks 
Ты топикстартера читал, он хочет фильмам назначать несколько жанров, лучше связи N:M через таблицу пересечения вы для этого ничего не придумаете...




Цитата(HackMan @  8.8.2008,  21:24 Найти цитируемый пост)
Правда, целостность данных и исключение повторений (в отличии от SET и ENUM) - всё это ложится на программиста.
А вот это гон, добавь уникальный композитный ключ в таблицу пересечения и всё ляжет на СУБД! Как и должно.



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
HackMan
Дата 8.8.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


Профиль
Группа: Участник
Сообщений: 391
Регистрация: 18.6.2005
Где: .ua

Репутация: нет
Всего: 9



source777, ага, спасибо, не подумал про такой ключ. Повторения он исключит, но разве он исключит возможность создавать записи с несуществующими filmid и genreid?

Это сообщение отредактировал(а) HackMan - 8.8.2008, 22:29


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
source777
Дата 8.8.2008, 22:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: нет
Всего: 56



Цитата(HackMan @  8.8.2008,  22:27 Найти цитируемый пост)
но разве он исключит возможность создавать записи с несуществующими filmid и genreid?
Ну уж внешние ключи(FOREIGN KEY) там само собой должны быть! Их добавление подразумевается при существовании любой связи между таблицами...



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Axielandr
Дата 9.8.2008, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1030 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.