Cytat(Ulysess @ 7.10.2012, 09:33:42 )

każda postać może należeć do klanu , na tą chwile wygląda to tak że w tabeli POSTAĆ w kolumnie id_klan jak sama nazwa wskazuje trzymam id klanu , id odpowiada polu id_klan znajdujacego się w spisie klanów.
Rozumiem że powinienem to zmienić tworząc pomocniczą tabele w które struktura powinna mniej więcej wyglądać tak:
Tabela klanowicze:
id (autonumerowanie)
id_postac
id_clan
Funkcja (czyli czy np lider , jakas inna funkcja , członek)
Dokładnie tak, tzn prawie dokładnie

Autonumerowany
id wydaje się zbędny. Klucz podstawowy powinien być parą
id_postac i
id_clan. Tabele nazwałbym jakoś bardziej semantycznie, żeby jej nazwa od razu podpowiadała jaką ona ma funkcję, np
postac_klan. To jest tożsame z nazwą
klanowicz (bo klanowicz to postać należąca do klanu) ale dokładniej interpretowalne dla innych osób, które być może uczestniczą w tworzeniu całego projektu. I od razu taka nazwa podpowiada Coś więcej: ta tabela nie może zawierać informacji o funkcji, bo może się zdarzyć, że jedna postać w jednym klanie będzie pełniła więcej niż jedną funkcję (np: Ulysess: lider, skarbnik i zbrojmistrz, Bostaf: członek i zbrojmistrz). Aż się prosi kolejna tabela
postac_klan_funkcja z kluczem obcym z tabeli postac_klan. Ale jeśli założenie jest takie, że jedna postać może być tylko i wyłącznie w jednym klanie, i jedna postać może pełnić tylko i wyłącznie jedną funkcję, to rzeczywiście ta dodatkowa tabela nie jest potrzebna i można dodać pole
funkcja do tabeli
postac_klan. Wszystko widzisz zależy od zaplanowanej funkcjonalności systemu.
Cytat(Ulysess @ 7.10.2012, 09:33:42 )

date (tutaj trzymał był date wstąpienia do klanu w postaci UNIX -> ogólnie jakie kolwiek daty trzymam w postaci UNIXowiej)
Maszz MySQL? Baza danych lubi daty w typie danych
DATETIME albo
TIMESTAMP. Szybciej konwertuje i przeszukuje taki typ danych bo do tego jest zaprojektowana. Wszystkie bazodanowe funkcje daty i czasu (
a jest ich sporo) szybciej śmigają ze swoim wbudowanym typem danych. Przechowując daty jako integery musisz najpierw je konwertować (co zajmuje czas) do formatu daty bazy danych i potem przekazywać do funkcji. To tak z mojego doświadczenia. Jeśli budujesz coś od podstaw to wykorzystuj narzędzia zgodnie z ich zaplanowanym przeznaczeniem, unikniesz w ten sposób problemow w przyszłości. Data w bazie danych? Tylko i wyłącznie
DATETIME albo
TIMESTAMP.
Cytat(Ulysess @ 7.10.2012, 09:33:42 )

na tą chwile przy rejestracji we wszystkich tabelach czyli postac_t1 itd są tworzone rekordy dla danego użytkownika -> prawidłowe rozwiązanie ? czy dopiero w momencie gdy użytkownik odwiedzi odpowiednią zakładkę sprawdzane jest czy w danej tabeli istnieje rekord , jeśłi nie jest tworzony

Wg mnie teraz jest prawidłowo. Dobrze jest inicjować dane wartościami domyślnymi na samym początku. Upraszcza to np wyszukiwanie bo eliminuje konieczność tworzenia instrukcji warunkowych: czemu nie ma tych danych? bo nie odwiedził zakładki? bo coś się sypnęło? bo ja o czymś zapomniałem? A może odwiedził ale zresetował? A tak, masz wszystkie dane z domyślnymi wartościami i żadnych NULLi w wyniku wyszukiwania.