Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dynamiczna liczba kolumn
Yorki
post 8.07.2013, 12:14:55
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 12.09.2005

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


Witam, zabieram się za przepisanie silnka do swojej gry i mam dylemat. Powiem, że to gra w której są obiekty ( planeta, miasto, wioska ) na których mogą być inne ( budynki ) i stacjonować wojska. Do tej pory starałem się unikać pól TEXT w tabelach, ale chcę aby gra była wysoce konfigurowalna i tym samym np. admin może wybrać sobię liczbę surowców.

Np. jeden wybierze, że chce ich 2 (np. drewno, jedzenie ) a inny, że potrzebuje w swojej grze tych surowców 4 (np. żelazo, drewno, jedzenie, złoto ). Logicznym jest, że tabela zawierająca Prime Obiekty ( planeta, miasto lub wioska ), powinna mieć 4 kolumny (INT lub BIGINT) z aktualnym stanem surowców. Ale co jeśli surowce są tylko dwa lub jest ich znacznie więcej?

Myślałem nad rozwiązaniem, żeby tabela miała tylko podstawowe pola po których będę szukał rekordów, a resztę danych wrzucić do jednej kolumny w formacie JSON. Ale jak to wpłynie na wydajność, czas zapytań? Ma ktoś doświadczenie w tego typu problemach? smile.gif

Dodam, że nie zamierzam po polu TEXT ani sortować ani zapytywać.

Ten post edytował Yorki 8.07.2013, 12:20:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
buliq
post 8.07.2013, 12:22:36
Post #2





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


widzę 2 opcje:
1. robisz tabelę, w której każdemu adminowi przypisujesz kolumny z nazwami tych surowców (2 albo 4 wiersze), następna tabela która przetrzymuje wartości dla tych surowców, wszystko joinujesz przy pobieraniu
2. robisz 1 tabelę z kolumnami na 100 nazw surowców (lub mniej, dostosujesz sam, możesz też dodać) i surowce nie używane mają wartość NULL


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
Yorki
post 8.07.2013, 12:38:30
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 2
Dołączył: 12.09.2005

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


Cytat(buliq @ 8.07.2013, 12:22:36 ) *
widzę 2 opcje:
1. robisz tabelę, w której każdemu adminowi przypisujesz kolumny z nazwami tych surowców (2 albo 4 wiersze), następna tabela która przetrzymuje wartości dla tych surowców, wszystko joinujesz przy pobieraniu
2. robisz 1 tabelę z kolumnami na 100 nazw surowców (lub mniej, dostosujesz sam, możesz też dodać) i surowce nie używane mają wartość NULL


I będzie to warte zachodu i szybsze niż w przypadku TEXT?
Go to the top of the page
+Quote Post
Damonsson
post 8.07.2013, 12:42:27
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Cytat(Yorki @ 8.07.2013, 13:38:30 ) *
I będzie to warte zachodu i szybsze niż w przypadku TEXT?

Niewarte zachodu, (chyba) wszystko jest szybsze niż TEXT.


Skoro wielu graczy, może mieć wiele surowców to tworzysz relację wiele do wielu.

I tabele:
Tabela gracz -> id, login, password i inne głupoty
Tabela słownikowa Surowce -> id, nazwa_surowca
i najważniejsza Tabela wiele do wielu zawierająca klucze obce i ilość -> (fk)id_gracza, (fk)id_surowca, ilosc_surowca.

Ten post edytował Damonsson 8.07.2013, 12:43:23
Go to the top of the page
+Quote Post
buliq
post 8.07.2013, 12:43:19
Post #5





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


Dzisiaj twierdzisz że nie będziesz tworzyć zapytań do tego pola, jutro się okaże że szukasz automatu który z jsona zrobi strukturę nowej tabeli ...
Szybsze może nie być (ale testów nie robiłem) ale dane będą w normalnej formie, nie będziesz ich musiał pobrać, przepuścić przez json_decode itp.


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
mmmmmmm
post 8.07.2013, 13:25:09
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Cytat(buliq @ 8.07.2013, 13:43:19 ) *
Dzisiaj twierdzisz że nie będziesz tworzyć zapytań do tego pola, jutro się okaże że szukasz automatu który z jsona zrobi strukturę nowej tabeli ...
Szybsze może nie być (ale testów nie robiłem) ale dane będą w normalnej formie, nie będziesz ich musiał pobrać, przepuścić przez json_decode itp.

I będziesz pobierał tabelę ze 100 kolumnami w której tylko 2 będą wypełnione smile.gif
Go to the top of the page
+Quote Post
buliq
post 8.07.2013, 13:42:41
Post #7





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

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


2 opcja była bardziej ironiczna


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
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:05