Witam,
pierwszy raz spotykam się z takim problemem i nie bardzo wiem jak sobie z tym poradzić. Otóż:
Załóżmy, że mamy prostą bazę danych w której przechowujemy gotowe zestawy kredek do kupienia :) Dla przykładu 3 rekordy:
ID, nazwa, sklad_zestawu
1, mały, biała, czarna
2, średni, biała, zielona, czerwona, niebieska, czarna
3, duży, biała, zielona, czerwona, żółta, niebieska, czarna, fioletowa, pomarańczowa
Osoba zamawiająca produkt (w tym przypadku utworzony już wcześniej zestaw) wybiera wśród gotowych zestawów i nie ma możliwości stworzenia własnego zestawu. Dlatego powstał pomysł by zrobić bazę kredek (lista poniżej) i dzięki tej liście będzie można generować własny skład zestawu.
ID, nazwa
1, biała
2, czarna
3, czerwona
4, niebieska
5, fioletowa
itd...
Dzięki temu klient zamawiający może wygenerować swój własny zestaw. I nie ma potrzeby tworzenia za kogoś wszystkich opcji zestawów.
Moje pytanie tylko brzmi jak przechowywać w bazie takie zamówienia? Tak?:
ID, klient, zestaw
1, michał, 1;2;3
Da się teraz wyświetlić skład zestawu na stronie wyświetlić poprzez zapytanie MySQL? (w tym sensie, że id kredek czyli 1, 2, 3 są w jednej kolumnie). Czy może dopiero w skrypcie PHP będzie trzeba użyć funkcji Explode i sprawdzać co kryje się pod 1, potem pod 2, potem pod trójką.
A może jeszcze inaczej zrobić. Ograniczyć zestaw do maksymalnie do 7 kredek i wtedy zrobić 7 kolumn w tabeli z zamówieniami, a w każdej kolumnie zapisywać osobną kredkę z zestawu. czyli np. Michał zamawiający 3 kredki wypełnił by tabele zamówień następująco - id, login, 3 wybrane kredki, reszta pól pusta:
id, klient, kr1, kr2,kr3, kr4, kr5, kr6, kr7
1, michał, 1, 2, 3, , , , ,
Bo ta relacja wydaję mi się zrozumiała ale dużo pustych pól może zostawać stąd moje pytanie. Może jest jakiś sposób na pogodzenie trzymania tych id (kluczy) w jednej kolumnie z zachowaniem relacji.
Proszę o pomoc i wielkie dzięki za wszelkie sugestie!