![]() |
![]() ![]() |
![]() |
![]()
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ł? |
|
|
![]()
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. |
|
|
![]()
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. |
|
|
![]()
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.
|
|
|
![]()
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? |
|
|
![]()
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.
|
|
|
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 06:25 |