Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [gra online][mysql][tabele]Projektowanie elastycznych tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
osek916
Wiem ze to moze wydawac sie smieszne, ze ktos taki jak ja bierze sie za pisanie gier internetowych(w przekladarkach), ale nigdy nie biore sie za male projekty bo wtedy nie mam motywacji ;d.

Mam kilka pytan dot. takiej "gry".

1. Czy jesli dany user ma miec konkretne przedmioty w ekwipunku, to jak skonstruowac odpowiednia tabele?
Czy kazdemu userowi mam przypozadkowac odpowiednia tabele z itemami, potem osobna ze statystykami i itemami uzywanymi? Czy moze istnieje mozliwosc napisania dosc elastycznej tabeli ktora posiadalaby wszystko razem?

Na razie widze takie rozwiazania:

kolumny:

(mniej tabel ale do kitu z tak dluga monotonna i trudna robota)
Kod
login   item1 item2 item3 .... item1987 item 1988
osek    1     1       3            3        0
stach   6     1       1            0        1
kamil   0     0      3            0         8



lub



(tu byloby proste i przejrzyste dodawanie i pobieranie itemow)
(szybka robota ale za to kilka tys tabel)

Kod
osek916

item           ilosc
miecz         2
noz             1
tarcza         1
luk              2



ale znowu np. trzeba tworzyc osobna tabele ze statystykami(sila zrecznosc przynaleznosc), moznaby je stworzyc powyzszymi sposobami, ale wtedy baza bylaby zasmiecona albo tabele nieskonczenie dlugie.


Zna ktos konkretne i sprawdzone sposoby odnosnie projektowania elastycznych tabel?
flv
Nie gram w żadne gry online tego typu ale domyślam się że najlepiej utworzyć dwie tabele, jedna z użytkownikami a druga z item'ami(przedmiotami?) i w tej drugiej przy każdym przedmiocie zapisywać id użytkownika do którego należy ten przedmiot.

Tak na marginesie, twoim problemem jest to że nie rozumiesz istoty funkcjonowania bazy danych, tak więc zgadzam się co do pierwszej części wypowiedzi - nie bierz się za pisanie takich gier bez jakich podstaw bo to jest poprostu śmieszne i nic dobrego z tego nie wyniknie..
osek916
Jestem typem który poznaje jezyki poprzez praktyke. Podstaw c++ nauczylem sie piszac 2x program do "skomplikowanych"(zawilych) obliczen z fizyki i matematyki. Dało mi to wiecej niz przeczytanie ksiazki i tworzenia konkretnych przykladow z ksiazki.


Pozatym wiem jak dzialaja bazy danych, a to co napisales bylo 1 rzecza ktora mi wpadla do glowy. Problem jednak w tym ze kazdemu userowi beda przypisane 2 tabele, najlepiej o tej samej nazwie, a skoro maja miec taka sama nazwe to dobrze byloby utworzyc kazda z tych 2 tabel w 2 bazach danych lub w jednej, dodajac do nazwy tabeli np '1'. Problemem jest ogromna ilosc stworzonych tabel w bazie. Dlatego pytam czy jest inne rozwiazanie, bardziej elastyczne, a nie czy pomysl pisania takiej gry jest zly.


PS: Podstawy znam.
flv
Ja jednak upieram sie przy tym ze nie znasz tych podstaw, albo przynajmniej nie wiesz o czym piszesz czy zle nazywasz to co masz na mysli..Jeśli utworzysz dwie tabele to nie bedziesz musial dla kazdego usera ich tworzyć(!), w tych dwoch tabelach bedziesz mogl przechowywać rekordy ktore beda reprezentowaly kazdego uzytkownika i jego przedmioty.
osek916
Jeśli masz na mysli tabele w php, to sie nie zrozumielismy, chodzi mi o baze danych. Jesli zas chodzi ci o to by przy rejestracji dodawac kolumny z userami, to takie rozwiazanie mi nie odpowiada.
flv
Naprawde przeczytaj jakis kurs mysql, ja mowie o rekordach a ty o kolumnach...
osek916
Widze że źle wyjaśnilem 2posty wyzej. Wedlug ciebie rozwiazanie mialoby tak wygladac?

Kod
user      item1 item2 item3

osek      2        1        1
kamil     1        0        2


Jeśli nie to najlepiej pokaz zarys tabeli wtedy sie zrozumiemy. Bo tylko piszesz ze przydalby mi sie jakis kurs. Co do tego to przerobilem: PHP i MYSQL- www oparte na bazie danych.
bela
To jest relacje n:m (wiele do wielu). Zastosuj 3 tabele: uzytkownicy, przedmioty, uzytkownicy_przedmioty.
schemat wyglada tak:

Kod
user: id, login
item: id, nazwa
user_item: user_id, item_id, ilosc


potem laczysz tabele i wszystko ladnie wybierasz, ale to powinienes wiedziec
osek916
Dzieki bela.

Niestety twoje tabele nie rozwiazuja problemu... Itemy dziela sie na bronie pancerze itd. itemy zalozone na postac, itemy w plecaku(nieograniczona ilosc) ;/. Ale chyba to bedzie najlepsza opcja...

Tabela 3 bedzie wygladac mw. tak:

Kod
User     bron   pancerz   pierscien1   pierscien2  amulet  buty  rekawice  helm   plecak1  plecak2  plecak3 itp...

osek     miecz1 zbr2       p_sily2       p_sily2       a_zr7   b_8   rek_sily2  helm1  p_sily1 p_zr2      empy
kam      ....      ....            ...            ...               ...       ...       ....           ...      ...         ...           ...


Mimo wszystko dzieki za rady;d i ocenianie umiejetnosci po pozorach...
AxZx
glupim pomyslem jest robic dla kazdego 'itemu' osobnej kolumny.
1 wiersz = 1 item
a nie 1 kolumna = 1 item

zrob tak a pozniej skorzystaj z metody PIVOT - wtedy bedziesz mial tak jak rozpisales czyli 1 kolumna = 1 item (jezeli tak bardzo ci zalezy zeby takie wyniki otrzymac).
osek916
AxZx, teraz mnie zagiales, o tej metodzie nie slyszalem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.