Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ustawienie zawodników na mecz - jak najlepiej w bazie zapisywać?
Forum PHP.pl > Forum > Bazy danych > MySQL
Apocalyptiq
Piszę grę via www, menedżer siatkarski. Właśnie zastanawiam się, jak najlepiej zapisywać ustawienie zawodników (ustalane przed każdym meczem) na dany mecz. Dać po prostu dwa rekordy - formation1 i 2, w i nich wyprzecinkować IDy wszystkich zawodników? I wtedy np. pierwszy zawodnik w tym ciągu to rozgrywający, drugi libero, trzeci przyjmujący itp. Czy lepiej może zrobić 24 kolumny (w każdej drużynie może być 12 zawodników na mecz - 6 grjaących i 6 na rezerwie) i w każdej osobno zapisywać? Niby troche dużo kolumn sie porobi, jak się zrobi właśnie tak... A chyba explodowanie tych wyprzecinkowanych zawodników (np: 8,3,6,32,12,2,31...) nie jest złe? Mniej wtedy to miejsca w bazie zajmie smile.gif Proszę o rady.
tomek_
Jak na mój gust lepszym rozwiązaniem była by dodatkowa tabelka

id_meczu, id_drużyny, id_zawodnika, id_pozycji   i tam byś miał przechowywane ustawienie, 
Apocalyptiq
Hm, ale wtedy zamiast dwóch ciągów z około 30 znakami uzyskam 24 rekordy w dodatkowej tabeli. Na pewno jest to lepsze wyjście? Niby wydaje się bardziej profesjonalne, albo - przecinki wydają się nieprofesjonalne, ale wtedy będziemy mieli o jedną tabele mniej.
Żeby lepiej zobrazować, przecinki:
Cytat
'432,211,232,234,233,231,321,320,322,323,324,330'
'100,101,102,103,104,105,106,107,108,109,110,111'

Tabela:
Cytat
mecz team position plr
5 1 1 432
5 1 2 211
5 1 3 433
5 1 4 434
5 1 5 435
5 1 6 436
5 1 7 437
5 1 8 438
5 1 9 439
5 1 10 440
5 1 11 441
5 1 12 442
5 2 1 101
5 2 2 102
5 2 3 103
5 2 4 104
5 2 5 105
5 2 6 106
5 2 7 107
5 2 8 108
5 2 9 109
5 2 10 110
5 2 11 111
5 2 12 112

No i jeszcze ma być takie coś, jak ustawienie domyślne - jeżeli użytkownik nie ustawił żadnego na dany mecz, to właśnie domyślne będzie w danym meczu. To w tym wyjściu z dodatkową tabelą, może zrobićby tak, że meczId=0 dla domyślnego ustawienia? smile.gif Bo i tak meczu o IDzie zero nie będzie smile.gif
Dla aktualnego wyjścia, z przecinkami, domyślne ustawienie wrzuciłem w tabelę z drużynami - dodatkowa kolumna.
dr_bonzo
Co do explode - uwzglednij to jak bedziesz przeszukiwal te dane.
Optymalizowanie aplikacji TYLKO pod ilosc zajmowanego miejsca w bazie jest glupota. Co z tego ze dane beda ci zajmowac 10% miejsca, jesli nie bedziesz mogl niektorych operacji w ogole zrobic, a czesc bedzie strasznie powolna
tomek_
Co z tego że będzie więcej rekordów jak operacje na nich będą dużo prostsze i szybsze. 


porównaj sobie np jak wyciągnąć na jakiej pozycji grał zawodnik x w meczu y, lub jaki zawodnik gał na jakiejś pozycji itp.

W przypadku dodatkowej tabelki wyciągnięcie tego to jedno proste zapytanie które bardzo szybko się wykona, a w wersji z przecinkami potrzebne już są dodatkowe operacje które znacznie wpłyną na wydajność Twojej aplikacji.

co do ustawień domyślnych można mieć mecz o id=0 

lub dodatkową tabelkę która będzie trzymała ustawienia domyslne dla drużyn. 
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.