Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Baza rozgrywek w Fifę
GreenGo
post 20.09.2016, 19:10:38
Post #1





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Pyton_000
post 21.09.2016, 08:26:23
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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ć...
Go to the top of the page
+Quote Post
GreenGo
post 21.09.2016, 10:13:15
Post #3





Grupa: Zarejestrowani
Postów: 265
Pomógł: 4
Dołączył: 30.08.2004

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:38