Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Baza rozgrywek w Fifę
Forum PHP.pl > Forum > Bazy danych
GreenGo
Witam,
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 smile.gif
Z góry dzięki za rady! smile.gif
Pyton_000
Narysuj sobie diagram np. w Workbench albo innym cudzie techniki. Dodaj sobie relacje. Patrząc na taki obrazek będziesz w stanie lepiej to zrozumieć...
GreenGo
Rysowałem, ale wątpliwości co do tego, czy trzymać id_gry id_uzytkownika id_druzyny oraz wynik w jednej tabeli czy rozdzielić to na 3 to już kwestia nie rozumienia a dobry praktyk. Ogólnie piszę to w laravelu więc też nie wiem co by było wydajniejsze i potem z czego łatwiej było by wyciągąć dane jeśli bym chciał np. wyciągnąć drużyny jakim grał gracz, czy statystyki wyników dla zawodnika / grupy ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.