PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

postgresql projekt bazy danych dla e-commerce

Patrząc na buty, masz jeden podmiot:buty. Ma dwa bezpośrednie atrybuty:rozmiar i kolor. Domena każdego z tych atrybutów musi być ściśle określona, ​​co wskazuje dla nich tabele przeglądowe. Istnieją dwa pośrednie atrybuty, cena i ilość, ale są to bardziej atrybuty każdej kombinacji rozmiaru/koloru niż samego buta.

Sugeruje to jedną tabelę encji:Buty; dwie tabele przeglądowe:Rozmiary i Kolory; i jedną tabelę skrzyżowań trójstronnych:Style butów:

create table ShoeStyles(
    ShoeID   int       not null,
    SizeID   smallint  not null,
    ColorID  char( 1 ) not null,
    Price    currency,
    Qty      int       not null default 0,
    constraint FK_ShoeStyles_Shoe foreign key references Shoes( ID ),
    constraint FK_ShoeStyles_Size foreign key references Sizes( ID ),
    constraint FK_ShoeStyles_Color foreign key references Colors( ID ),
    constraint PK_ShoeStyles primary key( ShoeID, SizeID, ColorID )
);

Na przykład kombinacja („Penny Loafer”, „10 1/2”, „Tan”) będzie miała pod ręką określoną cenę i ilość. Rozmiar 11 Tan będzie miał swoją cenę i ilość, podobnie jak 10 1/2 Burgandy.

Polecam widok, który łączy tabele i prezentuje wyniki w bardziej użytecznej formie, jak pokazano powyżej, a nie powiedzmy (15, 4, 3, 45.00, 175). Wyzwalacze w widoku mogą zezwolić aplikacji na cały dostęp za pośrednictwem widoku, dzięki czemu aplikacja pozostaje niezależna od fizycznego układu danych. Takie widoki są niezwykle potężnym narzędziem, które znacznie zwiększa niezawodność i łatwość konserwacji podstawowych danych i samej aplikacji, ale które są żałośnie niedostatecznie wykorzystywane.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak w naturalny sposób połączyć dwa zapytania z klauzulą?

  2. Przegląd zmian indeksów w PostgreSQL 11

  3. Dołączanie do 2 dużych stołów postgres przy użyciu int8range nie skaluje się dobrze

  4. Usuń wiersze tabeli określonej w pliku tekstowym w Postgres

  5. Jak warunkowo grupować w kolumnę bez użycia FULL OUTER JOIN