Tak, wiem, było już sporo takich tematów, ale może i mi poświęcicie czas. Otóż piszę sobie grę przeglądarkową, i mam kilka pytań. Piszę ją obiektowo, w PHP5, z wykorzystaniem MySQL przez PDO.
1. Mam klasę User, ma ona prywatne pola jak login, nazwa itd., to wiadomo winksmiley.jpg. Mam też pole saved, domyślnie true, po zmianie (używam __set) zapisuję do niego false, i w destruktorze, jeśli !saved zapisuje dane do bazy. I z tym mam pewne obiekcje, bo w końcu jeśli zmieniam np. tylko poziom usera, to nie potrzebnie zapisuję do bazy wszystkie informacje. Czy lepsze byłoby utworzenie np. tablicy z nazwami pól, do której zapisywałbym, które pola zostały zmienione, i potem w destruktorze leciał foreachem po tablicy i konstruował zapytanie odpowiednio do potrzeb, czy może zbytnio się tym przejmuję, a dla bazy nie stanowi to większego problemu (wiadomo, obciążenie)?

2. W mojej grze (a no tak, zapomniałem biggrin.gif, tematyka piracka) mam 43 rodzaje okrętów, prawdopodobnie nie będę ich więcej dodawał, ale mogę zmieniać winksmiley.jpg. Narazie mam je zapisane w bazie, w planach mam cache oczywiście, ale zastanawiam się też nad stałym zakodowaniem ich każdy w osobnej klasie dziedziczącej po Ship, w której miałbym zakodowane metody. Które rozwiązanie jest lepsze? Biorąc pod uwagę także łatwość modyfikacji. Osobiście uważam, że klasy dają większe możliwości (np. sprawdzanie wymagań odpowiednio do potrzeb każdego okrętu), ale zastanawia mnie jak wtedy mam pobrać listę okrętów, które spełniają różne warunki (dlatego narazie mam SQL).

3. Idąc dalej, mam tzw. skille. W tej chwili zapisuję je w bazie, każdy (jest ich 9, i nie planuję zmian) w osobnej kolumnie tabeli, ale jak zwykle, zastanawiałem się czy nie lepsze dla servera będzie zapisywanie zserializowanej tablicy wprost do jednego pola. Teraz mam 9 pól typu tinyint, więc co będzie szybsze, dotychczasowe rozwiązanie czy jedno pole varchar/char?

I na razie to tyle smile.gif.