staram się zaprojektować bazę danych w której będę przechowywał turnieje w FIFĘ.
Założenia jakie na razie mam to:
1 Użytkownik ( gracz ) może należeć do wielu grup ( chce rozgrywać turniej w obrębie jednej grupy by wiedzieć, kto w danej grupie jest najlepszy )
2 Użytkownik może rozegrać pojedynczy mecz, po za turniejem i po za grupą, z innym użytkownikiem
3 Grupa może rozgrywać wiele turniejów, ale w jednym turnieju może brać udział tylko jedna grupa
4 W jednym turnieju, może być wiele gier pomiędzy użytkownikami, ale jedna gra może należeć tylko do jednego turnieju bądź/i też do dwóch ( lub więcej ) użytkowników jeśli grają mecz po za turniejem.
5 W jednej grze może brać udział wielu użytkowników (1v1 2v2 3v3... ), nie ważne czy gra turniejowa czy nie.
6 Każdy mecz należy do wielu użytkowników jak albo wielu użytkowników i jednego turnieju organizowanego w danej grupie
7 Każdy mecz posiada wiele wyników ( wynik przegranego i wygranego) - w przypadku 2v2 itd. bramki chcę rozdzielić na poszczególne osoby
8 Każdy użytkownik w każdej grze musi mieć wybraną drużynę
Tak więc:
Ad1. Relacja wiele do wiele między użytkownikiem a grupą z tabelą pośrednią
Ad2. Relacja wiele do wiele między użytkownikiem a meczem z tabelą pośrednią zawierającą dodatkowo wybraną drużynę ( czy dodatkowa kolumna w tabeli pośredniej to dobry pomysł ? )
Ad3. Relacja jeden do wiele miedzy grupami i turniejami
Ad4. Relacja jeden do wiele między turniejami a grami ( tu powoli zaczynam się gubić, tworząc turniej w obrębie grupy, dodaje wszystkie kombinacje meczy do tabeli z meczami która jest w relacji z turniejem, następnie na bazie każdej tej kombinacji, oraz dodaje do tabeli pośredniej między użytkownikiem a meczem ( która nie jest w relacji z turniejem ) wszystkich użytkowników przypisanych do wszystkich meczów... no właśnie zaczynam się gubić, czy dobrze myśle ?
Ad5. To mi rozwiązuje tabela pośrednia między użytkownikami a meczami
Ad6. Niby jasne, tabela z meczem powinna przechowywać ID turnieju ( nieobowiązkowe ) ale pytanie czy ID grupy z tego turnieju również ?
Ad7. Tu znów nie jestem pewien. Teoretycznie powinienem stworzyć tabelę zawierającą wynik, id użytkownika oraz id meczu. Ale tak na prawdę to w pewnym sensie będzie powielenie tabeli pośredniej między użytkownikiem a grą tyle, że należało by dodać kolejne pole z wynikiem. I tu również pytanie, czy updatowanie tabeli pośredniej o wynik po meczu jest dobrym pomysłem ? Czy ta tabela nie powinna jedynie łączyć użytkowników z meczami ?
Ad8. Tutaj podobnie jak wyżej, wydaje mi się, że można by dodać pole do tabeli pośredniej pomiędzy użytkownikiem i grą, ale różnie można by stworzyć nową tabele zawierającą id użytkownika, id gry oraz nazwę drużyny.
Mam nadzieje, że w miarę jasno przedstawiłem swoje problemy i znajdzie się ktoś, to powie mi jak powinno być prawidłowo

Z góry dzięki za rady!
