|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
Доброго дня. Буду благодарен за помощь. Правильно ли указаны связи в даталогической модели? База данных: Есть спортивные регулярные турниры по теннису в клубе. Игры идут на счет, на каждом турнире делаются памятные фото...результаты и фото надо будет хранить и куда то публиковать....думаю суть процесса в первом приближении всем ясна и понятна. Так вот, сомнение вызывает связь между таблицей игроков и таблицей одиночных матчей. Верно ли она показана? То есть в таблице одиночных матчей есть поле игрок1, игрок2. Таким образом, 2 разных записи из таблицы игроков всегда будут соответствовать одной записи в таблице одиночных матчей. То есть как бы связь 2 к одному если так можно выразиться. Верно ли, что это тип связи многие к одному и корректно ли так раздвоить связь как на схеме изображено? Просто одолевают сомнения, так как если например взять связь между таблицей фоток(Fotos) с турниров и турнирами, то тут все понятно, это многие к одному, так как много фоток может быть в одном турнире, а одна фотка не может принадлежать нескольким турнирам. А в случае описанном выше, другая ситуация, потому что таблица матчей содержит два однотипных поля... Наверное вопрос тривиальный, но буду благодарен все же за ответ или за ссылки на похожий вопрос. Заранее спасибо. п.с. схему прилагаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 15:25 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
зарадидля 1:1 между игроками и фото? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:48 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
или это m:n игрок турнир? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:50 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
waszkiewicz, да. Игрок - Турнир связь один ко многим. Так как один и тот же игрок может участвовать в нескольких турнирах, а в рамках одного турнира могут участвовать разные игроки. Поэтому введена промежуточная таблица Merge.Тут вопросов нет. Связь 1:1 между игроками и таблицей фоток_игроков тоже понятна, то есть таблица фоток игрок содержит для каждого игрока одну титульную фотку игрока. Вопрос только в том, правильно ли указана связь Игрок-Матч... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:54 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
KirillB, Игрок - Турнир связь один ко многим. вернее многие ко многим. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:56 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
и в чем тайный смысл выносить в отдельную таблицу фотки? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:56 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
waszkiewicz, ну они же image будут, как бы тяжелые...из-за этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:57 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
KirillB, ну тогда пилите, Шура, они золотые ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 16:58 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
появятся матчи командные, какие-нибудь (не суть) - еще одну таблицу будем создавать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 17:00 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
waszkiewicz, матчи есть только одиночные и парные. под парные нарисованы отдельные таблицы. других вариантов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 17:06 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
KirillB, и в чем тайный смысл выносить в отдельную таблицу фотки? -------- тут наверное да, выносить титульные фотки игроков смысла нет. соглашусь. считайте что таблицы Players_foto нет:), а есть лишь поле в таблице Players. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 17:19 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
KirillB, Другие варианты, как и вопросы, есть всегда. Но мне нравится ваша безапелляционность - лучше быть бесстрашным новичком, чем беспомощным старцем, застрявшим в бесконечных сомнениях. Окей, поехали: Merge - настоятельно не рекомендую обзывать таблицу ключевым словом SQL. Особенно учитывая, что здесь оно не несет никакой смысловой нагрузки. Сделайте хотя бы TournamentPlayers, что ли. Таблица Fotos (и многие другие) у вас нарушает какую-то там НФ: например, можно внести строку с игроком и чемпионатом, в котором тот не участвовал. Правильнее будет вместо двух FK на игроков и турниры сделать один, на TournamentPlayers. Раздельные таблицы для синглов и даблов - денормализация без реальной на то причины (и да, других вариантов тут нет). Совместить в одну таблицу, добавить столбец "тип матча" и в командах сделать второго игрока необязательным. Как более универсальный, и правильный, вариант - сделать дополнительную таблицу TeamMembers, ссылающуюся на Teams и на все ту же TournamentPlayers. Команды получатся немного вырожденными, конечно - в них останется только Id, но это мелочи. Для хранения счетов лучше сделать отдельную таблицу MatchScores. Тогда у вас появляется гораздо больше оперативного простора для всякой спортивной аналитики, т.к. сделать sum() по столбцу проще, чем перебирать пять столбцов, из которых, в общем случае, совсем не все будут содержать данные. Кроме того, это позволит вам хранить счет не только по сетам, но и по геймам (если добавите справочник частей матча), а также не только по очкам, но например по эйсам, двойным ошибкам и т.д. (если добавите справочник типов счетов). При желании, может иметь смысл сделать отдельную таблицу частей матча, MatchParts допустим. Навскидку вроде все. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 18:01 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
Ennor Tiegael, Спасибо большое за развернутый ответ и критичные замечания по делу а не вокруг да около. Я действительно новичок в практическом проектировании, хоть и с скл давно работаю. Изначально и была идея сделать одной таблицей, но подсказали что лучше разбить, чтобы логику дополнительную не пилить в части разделения 4 игроков в случае парной игры.. Но теперь я вернусь к изначальной идеи которая и была нарисована в ER диаграмме. Вы очень помогли!Спасибо еще раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2017, 18:16 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
KirillB, KirillB, Правильнее будет вместо двух FK на игроков и турниры сделать один, на TournamentPlayers. Но тут есть проблема в таком случае. Есть же фотки, которые коллективные например, или фотки, которые вообще не содержат каких либо участников, но сделаны с турнира. То есть все фотки из каких либо турниров, - всегда будет связь с каким то турниром любой фотки. Не все фотки имеют связь с игроками. Под фотки, которые имеют связь с игроками попадают только те, где изображен один игрок, - таких фоток большинство, но есть и другие. То есть проблема в том, что нельзя сделать в таблице Fotos составной ключ tournament_id, player_id(если я вас правильно услышал) и сослаться на таблицу TournamentPlayers, так как поле player_id не обязательное.. Нужно подумать еще, над этой простой связью как изначально казалось. Сама связь нужна, чтобы участник мог увидеть только свои фотки при желании, но это задача не первой необходимости, можно на данном этапе и отказаться вовсе от связи фотка - игрок. Ограничиться лишь доп. полем в самой таблице игроков, где будет размещена одна только главная фотка игрока, портрет так сказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 13:05 |
|
Правильно ли указаны связи
|
|||
---|---|---|---|
#18+
KirillBНо тут есть проблема в таком случае. Есть же фотки, которые коллективные например, или фотки, которые вообще не содержат каких либо участников, но сделаны с турнира. То есть все фотки из каких либо турниров, - всегда будет связь с каким то турниром любой фотки. Не все фотки имеют связь с игроками.Ну, ваша изначальная схема этого тоже не позволяла. Я лишь указал на наиболее вопиющую дыру. Тогда - обычная связка М:М между TournamentPlayers и Fotos. Ссылку на Tournaments оставляем, вместо ссылки на TournamentPlayers добавляем промежуточную таблицу PhotoPlayers. Она уже будет ссылаться на фотки и на участников турнира. Если вдруг на фотке нет ни одного участника, в этой таблице для данной фото не будет ни одной записи. Для коллективного фото, наоборот - несколько, у каждой свой TournamentPlayerId. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 15:42 |
|
|
start [/forum/search_topic.php?author=redwhite90&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 441ms |
total: | 727ms |
0 / 0 |