[MySQL] Przechowywanie "obiektów" w bazie

0

Przepraszam za nie jasny tytuł ale nie za bardzo wiem jak opisac mój probem, chodzi o to, że zazwyczaj jak się tworzy bazę MySQL to ma się już jakieś konkretne kolumny typu ID NAME WIEK itp... ale co można zrobić w przypadku gdy chce się w bazie przechowywać naprawde różne rzeczy...wyjaśnie to na przykładzie... mam np 20 różnych plików ze skryptami php każdy skrypt wykonuje inne czynności co innego wyświetla no i pobiera inne dane i różną ilość tych danych np: pierwszy pobiera tylko jedną zmienną za to 2 np 13 zmiennych... te pobrane dane zapisuje!

Użytkownik wybiera któryś skrypt i podaje odpowiednią ilość argumentów wymaganych przez dany skrypt, jego wybór jest zapisywany do bazy... ale co z tymi argumentami? one też muszą być zapisane... i teraz ort! ze jeden skrypcik pobiera 2 ciągi znaków, a inny pobiera 4 cyfry, 20 ciągów znaków i datę... więc tego raczej nie da się zapisać w bazie w ten sposób

USERID | WYBOR | ....
1 | skrypt1 | no i tutaj powinny być zapisane "rzeczy" które bedzie chciał zapisać dany skrypt

Czy ktokolwiek zrozumiał o co mi chodzi? :) Nie potrafie tego jaśniej wytłumaczyć... jedyne co mi przyszło do głowy to to żeby w bazie było pole typu TEXT i tam były przechowywane te ort! przez skrypt dane w takiej postaci jak jest to w plikach *.ini czyli np:

data=20-02-07
wiek=12

Ale czy jest to wydajny sposób przy dużej bazie danych? Jak potem przeszukiwać baze pod względem danych zawartych w tym polu? No i najważniejsze pytanie....Czy nie ma innego lepszego sposobu?

Pozdrawiam i dzięki za wyrozumiałość

0

nie wiem jak inni ale ja nie bardzo rozumiem o co Ci chodzi :P

0

Ja chyba zrozumialem. Chodzi Ci o to, ze chcialbys miec uniwersalna tabele dla wszystkich skryptow (formularzy chyba raczej) ?

Tego nie robi sie tak - lepiej stworzyc wiele tabel, ktore zawieraja dokladnie to, co pobierasz od uzytkownikow i to co chcesz przechowywac w bazie danych.

Przyklad:
formularz rejestracji: pobiera login, haslo, imie, nazwisko, wiek
formularz zamowienia: pobiera id produktow, ilosc, adres docelowy zamowienia

Z tego co zrozumialem Ty chcialbys zrobic tak:
tabela
userID | typ formularza | dane pobrane od uzytkownika
1 | rejestracja | johny_bravo;login;johny;bravo;138
1 | zamowienie | produkt1;15;ul. Moja 15
1 | zamowienie | produkt2;10;ul. Moja 15

Jezeli chcesz zrobic tak, to marnujesz praktycznie caly potencjal bazy

Poprawnie wygladaloby to np. tak:
tabela Users
userID | login | password | firstname | surname | age

tabela Orders
userID | orderID | dateOrdered | destinationAddress
tabela Products
productID | productName | productPrice | itp
tabela OrderedProducts
orderID | productID | quantity

Kazdy ze skryptow i tak wywoluje jakies zapytania/procedury wiec doskonale powinien wiedziec co i gdzie zapisac/odczytac.

0

jeśli coś takiego to tu http://4programmers.net/Forum/viewtopic.php?id=103714 masz opisane jak zrobić sobie bazę, gdzie możesz wpisać dowolnie dużo parametrów dla danego elemntu (poczytaj to będziesz wiedział o co mi chodzi)

0

johny_bravo bardzo dobrze rozumiesz :) Ciesze się ort! ktoś zajarzył o co chodzi :) Ale tworzenie osobnych tabel dla każdego ze skryptów może być troszkę mało optymalne, ponieważ zakładam że tych skryptów (formularzy) będzie ponad 100 :/

Misiekd Twój pomysł jest bardzo ciekawy, ale nie jestem pewien czy zda egzamin przy moim problemie. Będę musiał dokładnie się z tym zapoznać.

Co do problemu to opisze go dokładnie tak jak on jest. Po wejściu na strone użytkownik się rejestruje... po wejściu do swojego panelu może "stworzyć" nową firmę... te "firmy" są włąśnie tymi skryptami... każda z nich może mieć z goła odmienienne potrzeby co do zapisywania w bazie... firm jest dużo i dla przykładu...

  • skrypt sklepu spożywczego będzie musiał zapamiętać 1 pracownika czyli sprzedawce + ilość bochenków chleba + ilosć margaryn + ilość wielu innych produktów które można <ort>znaleŹć</ort> w spożywczaku :) i te produkty można by było bez problemu zapisac w bazie

  • inną firmą może być producent samochodów... z tym, że on nie potrzebuje takich pól jak ilość bochenków chleba czy ilość margaryn...w tej firmie będą zapisywanie pracownicy powiedzmy 200 róznych osób

takich przykładów firm mógłbym wymieniać mnóstwo, mój projekt zakłada że będzie ich ponad 100... dlatego zastanawiam się czy tworzenie ponad 100 tabel dla każdej firmy z osobna jest rozwiązaniem optymalnym i czy nie wprowadzi problemów w poruszaniu się

Co do sposobu Misiekd (nie wiem czy odmieniać ;)) to w takim wypadku by trzeba tworzyć też dość sporo różnych tabel.... chyba że nie do końca zrozumiałem owy sposób...

Tak więc mam nadzieje że teraz jest jaśniej wyjaśnione, czy ktoś zna sposób na rozwiązanie tego problemu? Będę bardzo wdzięczny :)

0

przy moim pomyśle potrzebujesz 3 tabele

  1. firmy
  2. pola
  3. firma_pole
    ew. jescze dwie z wartościami do wyboru z listy dla danego pola
    i ta ilość jest niezależna od ilości firm i pól jakie każda ma. Inna sprawa to trzymanie wartości, które będą w te pola wpisywane
0

W takim wypadku pomysl Miskad zdecydowanie lepszy. Moj sie sprawdza, jak struktura bazy jest w miare stala - tu pasuje, zeby sie zmieniala.

0

Przemyślałem to i rzeczywiście chyba to najlepsze wyjście :) Dzięki wam chłopaki za wyrozumiałość i pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1