[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: какой способ выбрать
Bossmen
Привет всем.
У меня есть список актеров, у каждого актера есть жанры..
я не могу выбрать..
1. вариант
я заношу в таблицу актера жанры(мелодрам, ужасы, и т.д)
и эти жанры я превращаю в ссылку и когда человек нажимает на ссылку открывается новая страница и в этом списке выводятся все актеры того жанра который человек выбрал.
2.
или можно использовать отдельные таблицы
например в одной список жанров
во второй id жанра из таблицы жанров и id актера.
то есть актер 1 и жанр 1
следующая строка таблицы
актер 1 жанр 2
и т.д

и потом это обрабатывается.



Спустя 5 минут, 44 секунды (21.01.2011 - 21:44) Invis1ble написал(а):
Bossmen
2 вариант true )

Спустя 2 минуты, 58 секунд (21.01.2011 - 21:47) Bossmen написал(а):
я тоже так думаю, причина в том что придется в 1 варианте выводить всех актеров а потом с каждым работать разбивать на массив то есть долго буде, а вариант 2 придется вывести из таблицы все ид актера где ид жанра равна выборному

Спустя 25 минут, 3 секунды (21.01.2011 - 22:12) Invis1ble написал(а):
Bossmen
правильно думаешь

Спустя 8 минут, 41 секунда (21.01.2011 - 22:20) inpost написал(а):
Я бы сделал так:
Актер | Комедия | Ужасы | Фантастика | Порнография
Арнольд | 1 | 0 | 1 | 1

Спустя 10 часов, 47 минут, 11 секунд (22.01.2011 - 09:08) Bossmen написал(а):
inpost
а если страны, то грамоско получиться

Спустя 27 минут, 10 секунд (22.01.2011 - 09:35) Bossmen написал(а):
у меня жанров 15 штук

Спустя 1 час, 40 минут (22.01.2011 - 11:15) Michael написал(а):
Конечно вариант 2. Три таблицы: актеры, жанры, "жанры актера".
Вообще - это самые основы проектирования БД. Почитай где то о модели данных "сущность-связь". А потом также о законах нормализации.

Спустя 6 минут, 17 секунд (22.01.2011 - 11:21) Michael написал(а):
Цитата (Bossmen @ 22.01.2011 - 08:08)
inpost
а если страны, то грамоско получиться

не только громоздко, но и безграмотно.
Во первых хранить инфу о том чего нет - ноль если не принадлежит - избыточность
Во вторых представь запрос типа - Выведите мне актеров которые имеют больше трех жанров. Классный?
В третьих - проблема добавления нового жанра - столбцом - опять же избыточность и масса неустановленных значений.

Все эти проблемы(и другие, которых больше) - от неумелого, ошибочного проектирования. Видя их наперед надо сразу менять структуру БД.

Спустя 5 часов, 36 минут, 45 секунд (22.01.2011 - 16:58) inpost написал(а):
Michael
1) Отдельно запись актера, отдельно запись жанра, отдельно 10 записей жанры актера, а у меня всё помещается в одну запись, грамоздко это как раз у тебя.

2) По заданию этого не было сказано, и я не помню, чтобы где-то искали люди ко количеству жанров. "Выведите мне актеров которые имеют больше трех жанров". Это уже редкий случай, когда стоит расматривать, по ТЗ сказано: "и эти жанры я превращаю в ссылку и когда человек нажимает на ссылку открывается новая страница и в этом списке выводятся все актеры того жанра который человек выбрал", то есть по одному конретному жанру, а не в целом случайно.

3) как часто появляются в мире новые жанры? Раз в тысячилетие? Даже через те же 10 лет как бы не старался, этот код будет устаревшим, поменяется не только язык, но и способы взаимодействия. А записать сразу 15 жанров и не париться - не вижу проблемы.

Из всего сказанного, проблема только под №2, и под неё уже неплохо было бы другую структуру, но если в ТЗ нет такой необходимости, как искать актёров у которых случайные 3 жанра - то и этот пункт не предоставляет проблемы.

Спустя 17 часов, 23 минуты, 47 секунд (23.01.2011 - 10:22) Bossmen написал(а):
Не вариант 2 самый оптимальный, inpost так можно вообще не чего не разделять а запихнуть все в одну таблицы страны, данные актера, его жанры т.д

Спустя 2 часа, 49 минут, 46 секунд (23.01.2011 - 13:11) inpost написал(а):
1. Про страны никто ничего не говорил, и страны необходимо в отдельной таблице.
2. Большинство актёров побывали в фильмах половины жанров. Итого для 1 актёра достаточно одна моя запись, либо 8-9 записей способом 2.
Скорость обращения к БД:
SELECT * FROM `актер` WHERE `id` = 7 LIMIT 1 - получаем выборку по одной таблице, при нахождении записи первой у нас останавливается скрипт, и нет необходимости проходить тысяча записей других, особенно когда кешируется запросы.

А если твой вариант, то для получения общей информации надо 3 обращения к БД, при этом выборка жанров будет проходить по поиску по всей таблице, так как каждая отдельная запись будет содержать лишь один жанр и общую связку.

А вообще ты ведёшь себя так: "как сделать" - "так!", "а если ещё то?", - "добавь то!", "а если ещё то?", - "добавь то"... Ты в первом сообщении сформировал ТЗ, я дал ответ по нему, а ты пытаешься уже выдумывать и добавлять какие-то дополнительные детали обвиняя меня в том, что я "страны" хочу туда запихнуть. Кто вообще это собирался делать?! На вопрос, как сформировать в общей структуре страны я ответа не давал, так как это в вопросе отсутствовало =)

И тоже непонятно, страна, в котором был фильм, или страна как место рождения актера, или страна пробывания актёра на данный момент, его любимая страна.

Спустя 3 часа, 44 минуты, 40 секунд (23.01.2011 - 16:56) Bossmen написал(а):
таблицы можно называть только лат. а как мне сделать допустим если 1 то ужас.
нужно сначала определить название таблицы а потом узнать ее значения 1 или 0,
и в зависимости от названия таблицы название жанра.))
надо было расписать все в начале, у меня из таблицы жанров будет выбираться инфорация для актера и фильма
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.