Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Możliwość definiowania pól przez usera, Jak zaprojektować bazę z możliwością dodawania pól
okatse
post 2.04.2020, 07:18:57
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.11.2019

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


Szukam dobrego rozwiązania takiego problemu - opisze na przykładzie magazyny
Do bazy trzeba zapisać informacje o produkcie czyli id, nazwa , waga , ilość. Problem w tym że użytkownik może swobodnie dodawać nowe pola opisowe np: kolor, rozmiar itd. Tych dodatkowych pól będzie parę tysięcy
Pytanie jak zaprojektować bazę aby te dodatkowe pola i ich wartości zapisać i żeby potem wygodnie z tego korzystać w celu wyszukiwania , sortowania itp ?
Na pewno nie chciałbym dodawać do tabeli nowej kolumny - bo za jakiś czas jedna tabela składała by się z kilku tysięcy kolumn.
Go to the top of the page
+Quote Post
mmmmmmm
post 2.04.2020, 08:33:03
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Tak samo jakbyś dodał TAG. Rozwiązań mnóstwo w necie.
Go to the top of the page
+Quote Post
okatse
post 2.04.2020, 08:50:52
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 4.11.2019

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


Mnóstwo rozwiązań - faktycznie pomogło mi - dzięki
Go to the top of the page
+Quote Post
Pyton_000
post 2.04.2020, 21:29:21
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Najprostsze i dość łatwe do zaimplementowania to dodatkowe tabele.

np. id produktu, nazwa pola, wartość.

Potem dołączasz sobie takie pola i tyle.
Go to the top of the page
+Quote Post
markonix
post 6.04.2020, 15:42:58
Post #5





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Przemyśleć NoSQL, bo do tego w teorii (nie jestem praktykiem) do tego najlepiej się nadają, gdy dane się rozrastają poziomo i nie jest ich istotny format.

Natomiast w bazie relacyjnej tworzysz 2 tabele - jedną z parametrami, drugą z wartościami. Many to many.
Jest też hybrydowe podejście - z jedną tabelą. Podobne do tego co podał @Pyton_000, ale przez nazwę pola rozumie się nazwę kodową (klucz unique na id produktu + nazwa), a same deklaracje pól określasz w configu aplikacji w php. Można wtedy elastycznie operować parametrami, pobawić się w rzutowanie, zawrzeć logikę walidacji. To by było ciężkie do osiągnięcia gdyby parametry pola były zwykłym wierszem w bazie.

Ten post edytował markonix 6.04.2020, 15:43:11


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.03.2024 - 07:45