![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 265 Pomógł: 4 Dołączył: 30.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
oto kolejny problem, na którego jest wiele możliwości rozwiązania i nie wiem która najlepsza ![]() Tworzę grę w php, i każdy użytkownik (gracz) będzie mógł sobie kupować w sklepie przedmioty (broń, jedzenie itp.) No i pytanie brzmi jak najlepiej (optymalnie) przechowywać te przedmioty w bazie ? 1. Stworzyć nową tabele która będzie je przechowywała(1 posiadanie przedmiotu 1 rekord) ? - tylko jak będzie 1000 graczy i każdy będzie miał 100 przedmiotów to ilość rekordów wyniesie 100 000:/ 2. Przechowywać przedmioty oddzielone przecinkami w oddzielnym polu w tabelipostaci ? - trochę potem będzie roboty z przetwarzaniem tego pola 3. Stworzyć tabele z przedmiotami i w polach przechowywać id użytkowników którzy je mają? 4. Stworzyć tabele z przedmiotami i w polu w tabeli z graczami przechowywać id przedmiotów jakie posiada ? Taki możliwości mi na razie przychodzą do głowy. Może ktoś ma lepszy pomysł ? Co będzie najwydajniejsze ? Ten post edytował GreenGo 26.05.2010, 15:30:26 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
wydaje mi się, że najlepiej stworzyć osobną tabelę, która będzie wiązała gracza z przedmiotem czyli np.
player_artefact_assoc assoc_id | artefact_id | player_id wszystkie pola INT UNSIGNED łatwo będziesz mógł z tym robić JOINY i co tam tylko zechcesz Ten post edytował tehaha 26.05.2010, 15:32:35 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 265 Pomógł: 4 Dołączył: 30.08.2004 Ostrzeżenie: (0%) ![]() ![]() |
No tak ale czy jeśli np. będzie w tej tabeli 100000 rekordów to to nie będzie za bardzo obciążać bazy jak dla każdego uzytkownika trzeba będzie odczytywać jego przedmioty ?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
No tak ale czy jeśli np. będzie w tej tabeli 100000 rekordów to to nie będzie za bardzo obciążać bazy jak dla każdego uzytkownika trzeba będzie odczytywać jego przedmioty ? W razie czego masz cache jakby obciążało ;] -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
ilość rekordów na pewno wpłynie na szybkość działania, ale w takim układzie jeżeli potrzebujesz wyświetlić przedmioty to robisz zwykły JOIN i prostym zapytaniem szybko wyciągasz to co potrzebne, a jeżeli będziesz trzymał przedmioty użytkownika po przecinku, albo w jakiejś tablicy to znacznie komplikuje wszystko, po za tym wydaje mi się, że operacje na polach typu INT, będą dużo szybsze niż na danych gromadzonych w VARCHAR
a co do zmniejszenia obciążenia możesz np zrobić tak, że raz pobrane przedmioty użytkownika wrzucasz do tablicy i zapisujesz w sesji i już nie wykonujesz więcej połączeń, chyba że gracz wykona działanie wpływające na liczbę przedmiotów Ten post edytował tehaha 26.05.2010, 17:31:49 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 00:22 |