Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связь "многие-ко-многим", на три таблицы 
:(
    Опции темы
batigoal
Дата 16.12.2006, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Маленький вопрос по проектированию.

Есть три сущности: футбольный клуб, сезон, лига. Ясно, что клуб может играть в одном сезоне только в одной лиге.

Как это спроектировать? Напрашивается следующий выверт: создание таблицы-ассоциации наподобие той, которая создается для реализации связей n-n, но с foreign keys на три таблицы. При этом, учитывая, что запрос на текущий состав лиги будет одним из наиболее популярных, хочу сделать еще и избыточную связь между клубом и лигой (current_league), в обход этой ассоциативной таблицы.

Прокомментируйте, пожалуйста. Правилен ли такой подход?
Схема прилагается.

user posted image


P.S. Хотя вопрос и общий, но, учитывая, что я использую Oracle, есть еще такой вопрос. Там существует такая сущность, как "материализованное предстваление" (materialized view). Может, оно подойдет для использования вместо моей "обходной" связи?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Rodman
Дата 17.12.2006, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
**************

зачем четвертая таблица???
PM MAIL WWW Skype GTalk YIM MSN   Вверх
batigoal
Дата 17.12.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Цитата(Rodman @  17.12.2006,  21:58 Найти цитируемый пост)

IDLeague   (FK)(вот тут я не совсем понял, это лига типа "высшая, первая, вторая" или "Чемпионов, кубок УЕФА, Интертото")

Это, например, высшая лига, первая лига, премьер-лига и т.п. (от этой таблицы еще идет привязка к стране).
А "кубок Уефа", "Интертото", "Чемпионат английской премьер-лиги" - это другая сущность (Competition), у которой тоже есть привязка к сезону.

Rodman, понимаешь, по такой схеме невозможно отследить историю. Нельзя сказать, в какой лиге играл клуб в 2002 году.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Rodman
Дата 18.12.2006, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Тогда да..

Таблица
*********************
History
--------------------------------
Id
IdCLUB
IdLeague (Season)
YearNumber
IDResult (место, короче результат)
*********************

а ты результаты каждого матча будешь хранить где нибудь???
PM MAIL WWW Skype GTalk YIM MSN   Вверх
batigoal
Дата 18.12.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Цитата(Rodman @  18.12.2006,  17:34 Найти цитируемый пост)
а ты результаты каждого матча будешь хранить где нибудь??? 

Без сомнения. Предусмотрены еще таблицы Match, Match_Event (любое событие - желтая карточка, удаление, начало матча, замена, ...), Standings (текущее положение команд в турнире), Competition (турнир).... Много всего.

Цитата(Rodman @  18.12.2006,  17:34 Найти цитируемый пост)
YearNumber

Здесь тоже есть тонкость. В разных странах сезон играется по разным системам (весна-осень, осень-весна). А чемпионат мира - вообще раз в четыре года (отборочный цикл - два года). Поэтому сезон будет иметь Start/End date и еще текстовое наименование ("2005", "2005/2006" и т.п.).


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Rodman
Дата 18.12.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(batigoal @  18.12.2006,  17:20 Найти цитируемый пост)
Здесь тоже есть тонкость. В разных странах сезон играется по разным системам (весна-осень, осень-весна). А чемпионат мира - вообще раз в четыре года (отборочный цикл - два года). Поэтому сезон будет иметь Start/End date и еще текстовое наименование ("2005", "2005/2006" и т.п.). 



ну это же все можно в League хранить.!?!!?!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
batigoal
Дата 18.12.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Цитата(Rodman @  18.12.2006,  19:36 Найти цитируемый пост)
ну это же все можно в League хранить.!?!!?! 

Ну так а кубки, например?

"Лига" - это просто группа клубов, принадлежность определенному классу команд. А вот "Чемпионат высшей лиги" - это уже соревнование, проводимое ежегодно.

В общем, если интересно, я могу просто схему целиком выложить smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Rodman
Дата 18.12.2006, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(batigoal @  18.12.2006,  17:47 Найти цитируемый пост)
В общем, если интересно, я могу просто схему целиком выложить smile 

давай... посмотрим
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Dremlin
Дата 18.12.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Quo vadis?
*


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

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



Цитата(batigoal @  18.12.2006,  17:47 Найти цитируемый пост)

В общем, если интересно, я могу просто схему целиком выложить

угу, причем желательно (если можно) выложить схемку на Винград, а то у некоторых кроме Винграда ничего не открывается и соотв. сторонние картинки выглядят одиноково - user posted image.
--------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются...
PM MAIL   Вверх
batigoal
Дата 18.12.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



В аттаче - текущий полный вариант этого компонента схемы. Остальные компоненты будут относительно независимы, а может - и вовсе вынесены в отдельные схемы.

Будут вопросы по схеме - задавайте.


Присоединённый файл ( Кол-во скачиваний: 30 )
Присоединённый файл  schema.jpg 102,00 Kb


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Dremlin
Дата 19.12.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Quo vadis?
*


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

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



Задаю:
1. Каких типов Event'ы будешь хранить?
2. Чего-то я не совсем улавливаю разницу между Player и Employee...

ЗЫ. вообще-то было бы неплохо озвучить небольшой комментарий к задаче и схеме в целом.

--------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются...
PM MAIL   Вверх
batigoal
Дата 19.12.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



Цитата(Dremlin @  19.12.2006,  11:08 Найти цитируемый пост)
1. Каких типов Event'ы будешь хранить?

Сейчас на память все не назову, их я набросал дома в блокноте. Но вот примеры:

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

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

Цитата(Dremlin @  19.12.2006,  11:08 Найти цитируемый пост)
2. Чего-то я не совсем улавливаю разницу между Player и Employee...

Employee может быть не только игрок, но и тренерский штаб и прочие функционеры.

Цитата(Dremlin @  19.12.2006,  11:08 Найти цитируемый пост)
ЗЫ. вообще-то было бы неплохо озвучить небольшой комментарий к задаче и схеме в целом. 

Я это в будущем обязательно сделаю, но отдельным постом (или серией постов). На этой базе (с дополнениями) я планирую сделать несколько проектов.

Это сообщение отредактировал(а) batigoal - 19.12.2006, 10:41


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Dremlin
Дата 19.12.2006, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Quo vadis?
*


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

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



Цитата(batigoal @  19.12.2006,  09:41 Найти цитируемый пост)
Но вот примеры:

OK, а что будешь хранить в Match_Event.player_id для Event'ов типа:
Цитата(batigoal @  19.12.2006,  09:41 Найти цитируемый пост)
first_time_start
first_time_end
second_time_start

и т.д.?

--------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются...
PM MAIL   Вверх
batigoal
Дата 19.12.2006, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

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



NULL  smile 

Это сообщение отредактировал(а) batigoal - 19.12.2006, 11:56


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




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


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

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