Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [gra online][mysql][tabele]Projektowanie elastycznych tabel
osek916
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2007

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


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?

Ten post edytował osek916 26.07.2007, 13:43:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
flv
post
Post #2





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 29.06.2007

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


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..
Go to the top of the page
+Quote Post
osek916
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2007

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


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.

Ten post edytował osek916 26.07.2007, 13:43:42
Go to the top of the page
+Quote Post
flv
post
Post #4





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 29.06.2007

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


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.

Ten post edytował flv 26.07.2007, 16:41:05
Go to the top of the page
+Quote Post
osek916
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2007

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


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.
Go to the top of the page
+Quote Post
flv
post
Post #6





Grupa: Zarejestrowani
Postów: 130
Pomógł: 1
Dołączył: 29.06.2007

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


Naprawde przeczytaj jakis kurs mysql, ja mowie o rekordach a ty o kolumnach...

Ten post edytował flv 26.07.2007, 17:13:24
Go to the top of the page
+Quote Post
osek916
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2007

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


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.
Go to the top of the page
+Quote Post
bela
post
Post #8


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


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
Go to the top of the page
+Quote Post
osek916
post
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2007

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


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...

Ten post edytował osek916 26.07.2007, 19:28:04
Go to the top of the page
+Quote Post
AxZx
post
Post #10





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


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).
Go to the top of the page
+Quote Post
osek916
post
Post #11





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 19.07.2007

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


AxZx, teraz mnie zagiales, o tej metodzie nie slyszalem.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 00:40