tablica znaków w MySQL

0

Witam
Jestem początkującym użytkownikiem MySQL, a w dodatku samoukiem, więc prosze o wyrozumiałość.
Tworze aplikacje w Javie obsługujacą bazę danych zawierająca 4 tabele i chciałbym aby jedna z nich opisywała zamówienia. Jej pola to Nr_zamowienia,Id_klienta oraz towary_zamowione. I teraz mam problem. Wiadomo że jeden klient może zamówić wiele towarów. Z tego co wiem MySQL nie posiada typu tablicowego. A ja chciałbym żeby nie ograniczać klientowi ilości zamówionego towaru.

Ewentualnym rozwiązaniem jest po prostu w tabeli zamowienia stworzyc tyle pól ile jest produktów, ale to jest bez sensu, a w dodatku jeśli dojdzie 10 nowych produktów to będzie trzeba zmieniac strukturę tej tabeli dodając nowe pola.

Znalazłem kilka postów, które wspominają o tym problemie, ale nijak się mają do mojego problemu.
Z góry dziękuje za jakiekolwiek rozwiązanie.

0

dwie tabele - nagłówek zamówienia i pozycje

0

Proszę o konkretny przykład, bo nie moge zrozumieć całej tej ideii.

Z góry thx

0

a nie wystarczy serialize i unserialize? Tworzysz kolumnę TEXT i wrzucasz do niej tablicę array.

0

Dominium myśle, że chyba będzie to moje rozwiązanie. Jeśli można to czy masz może jakiś fragment kodu który to przedstawia?? Jeśli tak to byłbym bardzo wdzięczny.

Z góry thx za pomoc

0

ja niestety nie znam java, generalnie to w php jest taka funkcja jak serialize i unserialize, ale myślę, że napisanie takowej w innym języku to nie problem. http://pl2.php.net/manual/en/function.serialize.php

0

oki dzięki mimo, że ja z kolei nie znam php to postaram się to jakoś przełożyć na javę
wielkie dzięki

0
Dominium napisał(a)

a nie wystarczy serialize i unserialize? Tworzysz kolumnę TEXT i wrzucasz do niej tablicę array.
za takie podpowiedzi powinna być od razu kulka w łeb i wpisanie na czarną listę antybazodanowców. Potem dopiero człowiek musi poprawiać takie cuda...

mrowa19861 jeśli wiesz co to jest klucz główny, klucz obcy, powiązanie między tabelami to jaki masz problem - w nagłówku masz JEDEN rekord z ogólnym opisem zamówienia i jakieś id a w pozycjacha masz TYLE rekordów ILE POZYCJI powiązanych z nagłókiem po jego id

0

Z tego co zrozumiałem to kolega chciał do tabeli wrzucić tablicę, wiadomo, że można wykorzystać InnoDB i powiązać kluczami, pytanie tylko czy baza będzie na tyle duża, aby trzeba było aż takich potężnych narzędzi stosować.

0

CREATE TABLE zamowienia (
Nr_zamowienia integer,
Id_klienta integer,
PRIMARY KEY (Nr_zamowienia)
);
CREATE TABLE towary(
id serial,
nazwa varchar(64),
producent integer,
PRIMARY KEY (id)
);
CREATE TABLE ref_zamowienia_towary(
Nr_zamowienia integer references zamowienia(Nr_zamowienia) ON DELETE CASCADE,
towar integer references towary(id) ON DELETE CASCADE,
datazamowienia timestamp DEFAULT now()
)

Powinno pomoc (w mySQL powinno podobnie albo tak samo wygladac). Przy projektowaniu bazy danych odradza sie stosowania tablic i pierwszy punkt normalizacji juz mowi zeby tego nie stosowac. Klient moze zamowic wiele towarow i towary moga byc zamawiane przez wielu klientow. Wystepuje zaleznosc n:n dlatego trzecia tabela ref_zamowienia_towary.

0

Dzięki panowie za odpowiedzi. Zasięgnołem między czasie po fachową książkę i poczytałem troche. Zastosowałem metodę z 3 tabelą, coś podobnego jak wyżej opisał kolega, wszystko działa.

Jeszcze raz wielkie dzięki za pomoc i pomysły.
pozdrawiam

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