![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
witam
Prowadzę pewną grę via www, pisząc ją uczyłem się php,mysql aktualnie jestem w trakcie wprowadzania pewnych zmian w grze co wiąże się ze zmianą struktur tabel no i przy okazji wolał bym już zrobić wszystko aby było bardziej prawidłowo napisane ale nie jestem w stanie sam stwierdzić co wypada poprawić/ zmienić dlatego proszę userów tych bardziej zorientowanych w mysql o pomoc 1) Przy rejestracji dane użytkownika są dodawane do 2 tabel konto - tutaj trzymam podstawowe dane typu login haslo email itp postacie - nazwa postaci i inne podstawowe dane oraz id postaci jest dodawane do kilku tabel, w momencie gry dane są w tych tabelach aktulizowane na chwile obecną chcę wprowadzić możliwość posiadania kilku postaci na jednym koncie dlatego widzę to w taki sposób: Przy rejestracji dodawane są dane tylko do tabeli konto + ewentualnie jakieś innej gdzie też są informacje o koncie po zalogowaniu gracz może się wcielić lub utworzyć nową postać (o ile nie ma maksymalnej ilości postaci) i dopiero przy ewentualnym stworzeniu postaci dodawane są dane do tabeli postacie + pozostałych innych tabel związanych z postacią czyli około dodatkowych 6. Oczywiście do tabeli postacie powinienem dodać pole id konta aby było wiadomo pod które konto jest podpięta postać. czemu opisałem dosyć szczegółowo jak to wygląda ? ponieważ liczę się z tym że można bardziej wydajnie to zrobić. 2) w każdej tabeli o postaci/koncie mam pole ID - primery,auto_increment id konta,postaci - index (oraz z nie wiadomych mi przyczyn unique) tutaj zastanawiam się po co trzymać 2 takie same pola bo na chwile obecną id = id konto,postac 3) Index jak zweryfikować czy warto na dane pole zakładać index (oprócz na id konta/postaci bo to rzecz oczywista) 4) typ tabeli to MyISAM , może warto przejść na INNODB oraz pozakładać klucze obce na pola w tabelach id konta,postaci (IMG:style_emoticons/default/questionmark.gif) 5) jaka jest różnica w jeżeli dla loginu bym utworzył oddzielny index a dla e-mail oddzielny od tego widocznym na zdjęciu. (IMG:http://img804.imageshack.us/img804/9605/capture12262011173447.th.jpg) Uploaded with ImageShack.us z góry dziękuje za pomoc i proszę o wyrozumiałość (IMG:style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 695 Pomógł: 65 Dołączył: 27.07.2009 Skąd: Y Ostrzeżenie: (0%) ![]() ![]() |
jeżeli chodzi o moje pyt 1 na przykładzie wygląda tak
Przy rejestracji w tabeli A jest dodawany rekord następnie dzięki mysql_insert_id(); mam ID konta i w tabelach B C D E F G tworzone są rekordy z id_user = mysql_insert_id(); minusy tego rozwiązania (z mojego punktu widzenia) 1. istnieje ryzyko że przy rejestracji padnie serwer i zostaną rekordy dodane tylko do części tabel 2. na chwile obecną zastanawiam się jaki jest sens w każdej tabeli (oprócz tabeli konto) trzymania pola ID -primery key auto,auto_increment skoro pole ID ma te same wartości w tych tabelach co pole ID_user. oczywiście w przypadku pozostania przy myisam. jeżeli chodzi o pytanie 5 to zrobiłem screena złego przykładu (ale przy okazji dostałem odpowiedz za która bardzo dziękuje (IMG:style_emoticons/default/smile.gif) ) chodziło mi o sytuacje z poniższego zdjęcia: (IMG:http://img715.imageshack.us/img715/6298/capture12262011204230.th.jpg) Uploaded with ImageShack.us rozumiem że to rozwiązanie jest prawidłowe w przypadku jeśli w 1 zapytaniu w warunku WHERE korzystam z tych wszystkich pól ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 18:40 |