Spear
почемучка
Возникли вопросы по структуре БД
Добрый вечер,
у меня возникла такая проблемка.. точнее даже не проблема - просто ищу варианты наиболее правильного решения.
Делаю сайт, это будет портал развлекательной тематики. Только не что-то вроде "картинки-анекдоты-полифонические мелодии".
Это скорее даже информационно-развлекателньый портал.
Я сейчас быстренько, насколько это возможно, опишу краткую запланированную структуру, а потом задам вопрос (чтобы было понятнее, о чем я спрашиваю).
Итак, на сайте будут несколько основных тематик - то есть вся информация будет распределяться между этими "подсайтами" (их было бы проще назвать разделами, наверное).
Это будут:
фильмы
музыка
(будут ещё, двуж хватит для примера, наверное).
Также будут разделы (у каждого "полскайта" - новости, обзоры, галерея (если это видео, например), рзаличные статьи и так далее.
Теперь перехожу к вопросу, собственно:
нужно для начала мне (не без помощи форумчан
) продумать то, как хранить "объекты" которыми будут выступать:
фильмы
актеры
песни
альбомы
компании (издатели, продюссерские объединения и так далее).
Очень хочу все это хранить в одной общей таблице, чтобы было вообще проще организовать осталньую структуру сайта и так далее, т.к. разделов позже может быть больше (предполагаются - комиксы, книги, видеоигры, в будущем).
и дял объектов каждого "подскайта" заводить отдельную таблицу в базе наверное глупо, есил получится продумать структуру, в которой все это будет вместе.
Понятно, что основные поля, такие как, ID объекта (будь то фильм или музыкальный исполнитель) и, собственно, ТИП объекта (фильм, альбом, компания, трек, издание) - это вещи очевидные.
А далее идет небольшая проблемка,
т.к. вспомогательная информация для каждого типа объекта может (и будет) отличаться.
Например, просматривая информацию об альбоме нужно вывести дату его релиза на территории США, Европы, России. Просматривая, скажем, страницу фильма нужно вывести имя режиссера, название компании, котоаря выпустила, и вообще несколько навзваний самого фильма - "рабочее (если есть)", "американское" и "русское" (также может быть альтернативное название) и, соответственно, даты выхода фильма в прокат в кажждом из основных регионов - США, европа, Россия.
Теперь сам вопрос - посоветуйте, пожалуйста, исходя из опыта и знаний, как лучше хранить дополнительные поля? точнее информацию о том, какие из дополнительных полей имеют объекты разных типов (Фильм, альбюом. компания).
с названиями, прцинипе, по-моему решено:
будет отделньая таблица, такой структуры:
ID обхекта (index) / тип названия / само название.
Но тут тоже есть маааленький вопросик: в такойм случае будет неудобно выводить список, например, всех фильмов, т.к. будет идти запрос вида (примерно)
select a.id, b.title from objects a, names b where a.id=b.id AND b.type='1'
Жирным выделенное - показывает что нужно выбрать для данного объекта его основное название.
Все бы хорошо, да размеры базы обхектов будут насчитывать сотни тысяч (тут же все исполнители, фильмы, артисты, компании), сооствественно таблица названий будет больше ещё как минимум в два раза (у всех фильмов миниум 2 названия, иногда больше).
Меня беспокоит только одна вещь - насколько это тяжелый запрос для бд? Просто я никогда ещё не сталкивался с базами такого размера и незнаю, как будет работать сайт. Если все ок, и запрос 50 фильмов с их названиями не вызовет трудностей (при нагрузке хотя бы в 30-40к посетителей в сутки и размерами обоих таблиц по 400 и 800к записей соответственно) то я буду очень рад. Если же нет - буду опять же благодарен за любые советы.
Я очень расчитываю на вашу помощь!
И выношу благодарность заранее всем, кто прочитал это немаленькое сообщение.
Добрый вечер,
у меня возникла такая проблемка.. точнее даже не проблема - просто ищу варианты наиболее правильного решения.
Делаю сайт, это будет портал развлекательной тематики. Только не что-то вроде "картинки-анекдоты-полифонические мелодии".
Это скорее даже информационно-развлекателньый портал.
Я сейчас быстренько, насколько это возможно, опишу краткую запланированную структуру, а потом задам вопрос (чтобы было понятнее, о чем я спрашиваю).
Итак, на сайте будут несколько основных тематик - то есть вся информация будет распределяться между этими "подсайтами" (их было бы проще назвать разделами, наверное).
Это будут:
фильмы
музыка
(будут ещё, двуж хватит для примера, наверное).
Также будут разделы (у каждого "полскайта" - новости, обзоры, галерея (если это видео, например), рзаличные статьи и так далее.
Теперь перехожу к вопросу, собственно:
нужно для начала мне (не без помощи форумчан
) продумать то, как хранить "объекты" которыми будут выступать:фильмы
актеры
песни
альбомы
компании (издатели, продюссерские объединения и так далее).
Очень хочу все это хранить в одной общей таблице, чтобы было вообще проще организовать осталньую структуру сайта и так далее, т.к. разделов позже может быть больше (предполагаются - комиксы, книги, видеоигры, в будущем).
и дял объектов каждого "подскайта" заводить отдельную таблицу в базе наверное глупо, есил получится продумать структуру, в которой все это будет вместе.
Понятно, что основные поля, такие как, ID объекта (будь то фильм или музыкальный исполнитель) и, собственно, ТИП объекта (фильм, альбом, компания, трек, издание) - это вещи очевидные.
А далее идет небольшая проблемка,
т.к. вспомогательная информация для каждого типа объекта может (и будет) отличаться.
Например, просматривая информацию об альбоме нужно вывести дату его релиза на территории США, Европы, России. Просматривая, скажем, страницу фильма нужно вывести имя режиссера, название компании, котоаря выпустила, и вообще несколько навзваний самого фильма - "рабочее (если есть)", "американское" и "русское" (также может быть альтернативное название) и, соответственно, даты выхода фильма в прокат в кажждом из основных регионов - США, европа, Россия.
Теперь сам вопрос - посоветуйте, пожалуйста, исходя из опыта и знаний, как лучше хранить дополнительные поля? точнее информацию о том, какие из дополнительных полей имеют объекты разных типов (Фильм, альбюом. компания).
с названиями, прцинипе, по-моему решено:
будет отделньая таблица, такой структуры:
ID обхекта (index) / тип названия / само название.
Но тут тоже есть маааленький вопросик: в такойм случае будет неудобно выводить список, например, всех фильмов, т.к. будет идти запрос вида (примерно)
select a.id, b.title from objects a, names b where a.id=b.id AND b.type='1'
Жирным выделенное - показывает что нужно выбрать для данного объекта его основное название.
Все бы хорошо, да размеры базы обхектов будут насчитывать сотни тысяч (тут же все исполнители, фильмы, артисты, компании), сооствественно таблица названий будет больше ещё как минимум в два раза (у всех фильмов миниум 2 названия, иногда больше).
Меня беспокоит только одна вещь - насколько это тяжелый запрос для бд? Просто я никогда ещё не сталкивался с базами такого размера и незнаю, как будет работать сайт. Если все ок, и запрос 50 фильмов с их названиями не вызовет трудностей (при нагрузке хотя бы в 30-40к посетителей в сутки и размерами обоих таблиц по 400 и 800к записей соответственно) то я буду очень рад. Если же нет - буду опять же благодарен за любые советы.
Я очень расчитываю на вашу помощь!
И выношу благодарность заранее всем, кто прочитал это немаленькое сообщение.
