sql >> Databáze >  >> RDS >> PostgreSQL

návrh databáze postgresql pro elektronický obchod

Když se podíváte na boty, máte jednu entitu:boty. Má dva přímé atributy:velikost a barvu. Doména každého z těchto atributů musí být přesně definována, což označuje jejich vyhledávací tabulky. Existují dva nepřímé atributy, cena a množství, ale jedná se spíše o atributy každé kombinace velikosti/barvy než samotné boty.

To naznačuje jednu tabulku entit:Boty; dvě vyhledávací tabulky:Velikosti a barvy; a jednu třícestnou průsečíkovou tabulku:ShoeStyles:

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 )
);

Tak například kombinace („Penny Loafer“, „10 1/2“, „Tan“) bude mít konkrétní cenu a množství po ruce. Velikost 11 Tan bude mít svou vlastní cenu a množství, stejně jako 10 1/2 Burgandy.

Doporučil bych pohled, který spojí tabulky a prezentuje výsledky v použitelnější formě, jak je uvedeno výše, spíše než řekněme (15, 4, 3, 45,00, 175). Spouštěče v zobrazení by mohly umožnit veškerý přístup aplikace prostřednictvím zobrazení, takže aplikace zůstane agnostika vůči fyzickému rozvržení dat. Takové pohledy jsou extrémně výkonným nástrojem, který významně přispívá k robustnosti a udržovatelnosti podkladových dat a samotné aplikace, ale které jsou žalostně málo využívány.



  1. Ignoruje MySQL hodnoty null na jedinečných omezeních?

  2. Chyba datové sady Visual Studio MySQL

  3. Funkce REPLACE() v Oracle

  4. dočasně zakázat vzdálený přístup mysql