Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Projekt tabeli z przedmiotami
HgReed
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 13.11.2011

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


Witam.
Chcąc zaprojektować (tak o, edukacyjnie, może coś z tego będzie) prostą grę RPG już przy rozrysowywania projektu mam problem:
Jak trzymać w bazie danych ekwipunek?

Pomysły mam dwa:
- dwie tabele - założone i plecak - id user'a i lista przedmiotów jako CSV (id _pierwszego_przedmiotu,2,5,11), jako CHAR - powiedzmy id do 99999 i 10 przedmiotów na raz - daje 60 znaków długości,
- tabela przedmioty - każdy row to id użytkownika z id przedmiotu i bool'em założony/nie założony (ale tu do zera spada optymalność).


Czy da się to jakoś normalnie zrobić, czy pchać się w ten pierwszy pomysł?
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


imho drugie rozwiązanie jest lepsze. dużo łatwiej będzie CI tymi danymi zarządzać, przeszukiwać, modyfikować etc.
Nie zgodze się też że optymalność spada do zera.
Go to the top of the page
+Quote Post
HgReed
post
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 13.11.2011

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


Do zera może nie, ale:
- 10 row'ów na same założone przedmioty,
- 50 row'ów na plecak
Daje 60x row / user. To strasznie dużo.
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

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


imho to nie dużo, tworząc odpowiednio indexy i zakładając fk (zakładam że używasz InnoDB) wg mnie to jest pestka dla mysqla.
Go to the top of the page
+Quote Post
alegorn
post
Post #5





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


hmmm nie wiem czy dobrze rozumiem... ale to klasyczne wiele do wielu...:

tabela przedmioty
tutaj opis wszystkich przedmiotow i ich cech

tabela user
info o userze

tabela plecak
user_fk smallint(5) unsigned NOT NULL,
przedmiot_fk smallint(5) unsigned NOT NULL,

oraz:
PRIMARY KEY (`user_fk`,`przedmiot_fk`),

chyba rozwiazuje problem?
Go to the top of the page
+Quote Post
HgReed
post
Post #6





Grupa: Zarejestrowani
Postów: 59
Pomógł: 0
Dołączył: 13.11.2011

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


alegorn - to to ja wiem jak zrobić - po prostu myślałem, że jest jakieś optymalniejsze wyjście.
Go to the top of the page
+Quote Post
alegorn
post
Post #7





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


na sql'owych bazach? nie bardzo. moze na nosql, ale to i tak nie do konca w takim formacie jak zaproponowales...
tzn jesli juz chodzi ci o format csv.. co prawda mysql ma taki silnik bazy danych - i jesli sie zdecydujesz na cos takiego - jakos bedzie to dzialac - ale bez zadnego porownania do np: mongodb.

jesli myslisz o innodb to zastanow sie co bedzie szybciej:: wykorzystac mechanizmy bazy danych - czy pisac samemu parser.. ?
dlatego na innodb - najszybciej bedzie ci dzialac model n:n
innodb - jest relacyjna baza danych, wiec nie ma sie co bac wykorzystywac mozliwosci tej bazy danych.
zwlaszcza ze przy prawidlowo pozakladanych kluczach - i odpowiednich pytaniach, przy samym odczycie - nie bedziesz musial sie odwolywac do wszystkich tabeli
da sie skonfigurowac by mysql odwolujac sie do tabeli plecak korzystal tylko z kluczy (nie bedzie przeszukiwal samej tabeli, wiec oszczedzasz na dyskowym IO )

hmmm no ale to juz powazniejsza dyskusja, i wykracza troche poza zwykle napisanie sql'a

pozdrawiam,
j.

Ten post edytował alegorn 9.02.2012, 18:55:35
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 Aktualny czas: 21.08.2025 - 06:25