[MYSQL] pole zmiennej długości

Instalacja i konfiguracja oprogramowania sieciowego.
cszawisza
Piegowaty Guziec
Piegowaty Guziec
Posty: 25
Rejestracja: 03 cze 2011, 23:51

[MYSQL] pole zmiennej długości

Post autor: cszawisza »

Witam.

Nigdy jakoś specjalnie nie bawiłem się bazami danych, ale nadszedł ten dzień kiedy muszę zrobić mały projekt współpracujący z MYSQL ;)
Otóż chciałbym napisać jakąś małą stronkę w PHP która umożliwiałaby mi wpisywanie do poszczególnych pół tabeli SQL, potrawy :) wszystko miałoby wyglądać tak że w pierwszej kolumnie mam ID w drugiej nazwę w trzeciej składniki:ilość a w czwartej przepis sposób przyrządzania. I teraz mam problem, jaki typ zmiennej nadać polu "składniki" Bo może ich być tam 2 a może być 20 :) czy istnieje sposób aby w to pole wpisać "wskaźnik" do tabeli zawierającej poszczególne składniki z ich ilością? (w osobnych kolumnach)

Wiem że mógłbym wpisać to wszystko jako tekst ale chciałbym mieć 1 informację w 1 polu i stąd takie rozdrabnianie ;)

Pozdrawiam Zawisza
Awatar użytkownika
rob006
Wytworny Kaczor
Wytworny Kaczor
Posty: 417
Rejestracja: 28 paź 2007, 23:11
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86_64
Lokalizacja: Lublin
Kontakt:

Re: [MYSQL] pole zmiennej długości

Post autor: rob006 »

Jeśli chcesz trzymać każdy składnik w oddzielnym polu, musisz stworzyć drugą tabelę, która będzie trzymała tylko składniki, oraz identyfikatory potraw do których się odnoszą, w ten sposób będziesz mógł połączyć listę ze składnikami z potrawą (nie umieszczasz referencji składników w tabeli z potrawami, tylko odwrotnie - przy składnikach wskazujesz do której potrawy należą). Po prostu poczytaj sobie o relacyjnych bazach danych, bo to w sumie są podstawy.
Ale podejrzewam że w twoim wypadku wystarczy po prostu pole tekstowe, gdzie będzie lista składników, ewentualnie w jakimś XMLu albo JSONie.
cszawisza
Piegowaty Guziec
Piegowaty Guziec
Posty: 25
Rejestracja: 03 cze 2011, 23:51

Re: [MYSQL] pole zmiennej długości

Post autor: cszawisza »

rob006 pisze:Ale podejrzewam że w twoim wypadku wystarczy po prostu pole tekstowe, gdzie będzie lista składników, ewentualnie w jakimś XMLu albo JSONie.
Ja podejrzewam że wystarczyłby zwykły arkusz kalkulacyjny czy cokolwiek na zrobienie całości ;) ale że lubię nauczyć się czegoś sensownego zawsze jak mam ku temu jakąś okazję (a za bardzo nie mam czasu siedzieć i to robić...) pytałem się o jakiś fajny sposób aby to zrealizować.
rob006 pisze:jeśli chcesz trzymać każdy składnik w oddzielnym polu, musisz stworzyć drugą tabelę, która będzie trzymała tylko składniki, oraz identyfikatory potraw do których się odnoszą
Więc rozumiem że ta druga tabela powinna wyglądać tak

składnik1 | id potrawy1
składnik2 | id potrawy1
składnik1 | id potrawy2

może kolejność w bazie będzie inna, ale chciałem tylko zaprezentować sposób rozumowania ;) (wymyśliłem to tak, bo rozumiem że gdyby dopisywać wszystkie id Potraw do jednego pola, to to pole znów nie miałoby ustalonej długości i problem nadal nie byłby rozwiązany...)
Ale jeszcze poczytam o tym, dzięki za naprowadzenie :)
Awatar użytkownika
rob006
Wytworny Kaczor
Wytworny Kaczor
Posty: 417
Rejestracja: 28 paź 2007, 23:11
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: Unity
Architektura: x86_64
Lokalizacja: Lublin
Kontakt:

Re: [MYSQL] pole zmiennej długości

Post autor: rob006 »

Mniej więcej tak to powinno wyglądać. Chyb że...
Składniki są powtarzalne i np cebula występuje w kilku potrawach, więc nie powinna być zapisywania kilkukrotnie w bazie. Wtedy na starcie tworzysz 2 tabele: tabela z potrawami i tabela ze składnikami, z tym że przy składnikach nie dopisujesz już id potrawy, tylko swoje własne unikalne id (np cebula ma id 1). Potrawy ze składnikami łączysz za pomocą trzeciej tabeli z 2 kolumnami: id potrawy i id składnika. Dzięki niej możesz połączyć potrawy ze składnikami w ten sposób, że potrawa może mieć wiele składników, a jednocześnie jeden składnik może być częścią wielu potraw.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: [MYSQL] pole zmiennej długości

Post autor: ethanak »

W skrócie po prostu: "relacja wiele do wielu" i pod tym hasłem szukać :)
ODPOWIEDZ

Wróć do „Sieci, serwery, Internet”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości