/ / Struktura tabeli bazy danych dla koszyka - projektowanie bazy danych

Struktura tabeli bazy danych dla koszyka - projektowanie baz danych

Jestem początkującym użytkownikiem SQL i pracuję nad jednym zmoje pierwsze bazy danych. Próbuję stworzyć bardzo skromny koszyk i obecnie pracuję nad zebraniem bazy danych, zanim zacznę kodować witrynę.

Jedną z rzeczy, z którymi się zmagam, jest to, jak to zrobićustrukturyzować część dotyczącą produktów w bazie danych. Gdyby wszystkie moje produkty były pojedynczymi przedmiotami, byłoby dobrze. Mój problem polega na tym, że chciałbym również mieć możliwość tworzenia „pakietów”, które łączyłyby kilka produktów w jeden Pakiet / produkt z własnym unikalnym identyfikatorem, ale inną ceną.

Czy ktoś wcześniej zajmował się tym ...Heck, jestem pewien, że ktoś to zrobił. Moje pytanie brzmi: czy istnieje najlepszy sposób na zorganizowanie struktury tabel bazy danych, aby umożliwić tego rodzaju rzeczy? Z logicznego punktu widzenia ciężko mi to ogarnąć.

Odpowiedzi:

3 dla odpowiedzi № 1

Ayende Rahien (z RhinoMocks) ostatnio tworzyła serię poświęconą budowaniu koszyka na zakupy, zaczynając tutaj: http://ayende.com/Blog/archive/2008/12/07/designing-a-shopping-cart.aspx. Używa diagramu klas, ale powinieneś być w stanie przekonwertować koncepcję na diagram bazy danych.


1 dla odpowiedzi nr 2

Prawdopodobnie utworzyłbym tabelę pakietów z rozszerzeniemidentyfikator pakietu i cena za pakiet, a następnie uzyskaj tabelę pośrednią (odniesienie) między pakietem a produktami z identyfikatorami pakietów (jako FK do tabeli pakietów) i odpowiadającymi identyfikatorami produktów (jak FK do tabeli produktów).


1 dla odpowiedzi nr 3

Wszystko, co robi Ayende, skończy sięgłowa początkującego. Aby odpowiedzieć na Twoje pytanie, potrzebujesz 3 tabel. Jeden dla twoich produktów, drugi dla twoich paczek, a drugi dla "łączenia" produktów z pakietami. Zakładam, że masz już zabezpieczone dwa pierwsze. Trzeci nazywa się relacją wiele do wielu.

Powinien nazywać się ProductsPackages i mieć dwie kolumny (PackageId i ProductId). Należy utworzyć ograniczenia klucza obcego w tabelach Produkty i Pakiety.

Teraz, aby dodać produkt do pakietu, należy wstawić identyfikator każdego z nich do tabeli ProductsPackages.


1 dla odpowiedzi nr 4

Jeden sposób, który pozwala uniknąć dodatkowych tabel, ale narzucapewne ograniczenia to po prostu dodanie do tabeli produktów pola „ParentID” odnoszącego się do siebie. Ten „ParentID” wskazuje po prostu na powiązany produkt w pakiecie. Ponieważ jest to ta sama tabela, Twoje pakiety mają te same pola (cena itp.), Co poszczególne produkty. Aby znaleźć produkty składające się na pakiet, po prostu wyszukaj wszystkie produkty z „ParentID” pakietów "ID produktu".

Ograniczeniem jest to, że produkty mogą być tylko plikamiczęść jednego pakietu. Jeśli więc sprzedajesz kij baseballowy, kij i rękawiczkę, a także pakiet „baseball” zawierający wszystkie trzy, rękawica nigdy nie będzie częścią pakietu „piłka nożna”.

Jednak jedną zaletą jest to, że zarównoPakiety „baseball” i „piłka nożna” oraz produkt „Podręcznik trenera” mogą stanowić część pakietu „kompletny sport”. A jeśli wyjmiesz kij z pakietu „baseball”, zostanie on również usunięty z pakietu „sport kompletny”. Wszystko to bez dodawania ani jednego stolika.

Oczywiście ograniczenie dotyczące jednego opakowania na produkt oznacza, że ​​z pewnością nie będzie to działać w każdej sytuacji.