![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Маленький вопрос по проектированию.
Есть три сущности: футбольный клуб, сезон, лига. Ясно, что клуб может играть в одном сезоне только в одной лиге. Как это спроектировать? Напрашивается следующий выверт: создание таблицы-ассоциации наподобие той, которая создается для реализации связей n-n, но с foreign keys на три таблицы. При этом, учитывая, что запрос на текущий состав лиги будет одним из наиболее популярных, хочу сделать еще и избыточную связь между клубом и лигой (current_league), в обход этой ассоциативной таблицы. Прокомментируйте, пожалуйста. Правилен ли такой подход? Схема прилагается. ![]() P.S. Хотя вопрос и общий, но, учитывая, что я использую Oracle, есть еще такой вопрос. Там существует такая сущность, как "материализованное предстваление" (materialized view). Может, оно подойдет для использования вместо моей "обходной" связи? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
Ну как бы не просто представить такую базу, но
************** Table Season ---------------------- IDSeason (PK) IDLeague (FK)(вот тут я не совсем понял, это лига типа "высшая, первая, вторая" или "Чемпионов, кубок УЕФА, Интертото") DateBegin DateEnd ************** ************** Table Club ---------------------- IDClub NameClub IDLeague NameStadium DateBirth .... ************** ************** Table League ----------------------- IDLeague NameLeague IDCountry ************** зачем четвертая таблица??? |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Это, например, высшая лига, первая лига, премьер-лига и т.п. (от этой таблицы еще идет привязка к стране). А "кубок Уефа", "Интертото", "Чемпионат английской премьер-лиги" - это другая сущность (Competition), у которой тоже есть привязка к сезону. Rodman, понимаешь, по такой схеме невозможно отследить историю. Нельзя сказать, в какой лиге играл клуб в 2002 году. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
Тогда да..
Таблица ********************* History -------------------------------- Id IdCLUB IdLeague (Season) YearNumber IDResult (место, короче результат) ********************* а ты результаты каждого матча будешь хранить где нибудь??? |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Без сомнения. Предусмотрены еще таблицы Match, Match_Event (любое событие - желтая карточка, удаление, начало матча, замена, ...), Standings (текущее положение команд в турнире), Competition (турнир).... Много всего. Здесь тоже есть тонкость. В разных странах сезон играется по разным системам (весна-осень, осень-весна). А чемпионат мира - вообще раз в четыре года (отборочный цикл - два года). Поэтому сезон будет иметь Start/End date и еще текстовое наименование ("2005", "2005/2006" и т.п.). -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
ну это же все можно в League хранить.!?!!?! |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Ну так а кубки, например? "Лига" - это просто группа клубов, принадлежность определенному классу команд. А вот "Чемпионат высшей лиги" - это уже соревнование, проводимое ежегодно. В общем, если интересно, я могу просто схему целиком выложить ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
||||
|
||||
Dremlin |
|
|||
![]() Quo vadis? ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 21.9.2006 Где: Киев Репутация: нет Всего: 4 |
угу, причем желательно (если можно) выложить схемку на Винград, а то у некоторых кроме Винграда ничего не открывается и соотв. сторонние картинки выглядят одиноково - user posted image. --------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются... |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
В аттаче - текущий полный вариант этого компонента схемы. Остальные компоненты будут относительно независимы, а может - и вовсе вынесены в отдельные схемы.
Будут вопросы по схеме - задавайте. Присоединённый файл ( Кол-во скачиваний: 30 ) ![]() -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Dremlin |
|
|||
![]() Quo vadis? ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 21.9.2006 Где: Киев Репутация: нет Всего: 4 |
Задаю:
1. Каких типов Event'ы будешь хранить? 2. Чего-то я не совсем улавливаю разницу между Player и Employee... ЗЫ. вообще-то было бы неплохо озвучить небольшой комментарий к задаче и схеме в целом. --------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются... |
|||
|
||||
batigoal |
|
||||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Сейчас на память все не назову, их я набросал дома в блокноте. Но вот примеры: first_time_start first_time_end second_time_start second_time_end extra_first_time_start extra_first_time_end extra_second_time_start extra_second_time_end match_cancelled (имеется в виду, в середине матча - из-за погоды или инцидента) player_entered player_substituted player_finished (игрок вышел из игры по окончании матча, т.е. без замены) goal own_goal (автогол) yellow_card red_card penalty Как нетрудно заметить, я мониторю не все события, а те, которые важны для статистики, аналогичной комментаторской документации.
Employee может быть не только игрок, но и тренерский штаб и прочие функционеры.
Я это в будущем обязательно сделаю, но отдельным постом (или серией постов). На этой базе (с дополнениями) я планирую сделать несколько проектов. Это сообщение отредактировал(а) batigoal - 19.12.2006, 10:41 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
||||
|
|||||
Dremlin |
|
|||
![]() Quo vadis? ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 21.9.2006 Где: Киев Репутация: нет Всего: 4 |
OK, а что будешь хранить в Match_Event.player_id для Event'ов типа: и т.д.? --------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются... |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
NULL
![]() Это сообщение отредактировал(а) batigoal - 19.12.2006, 11:56 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |