sql >> Database teknologi >  >> RDS >> Mysql

Lagerstyring med aktieoptioner

Jeg tror, ​​udkastet til modellen (følger 6NF og 3NF) vil hjælpe dig.
Jeg forenklede navnekonventionen ved at fjerne 'shop'-søgeordet.
(Butiksenhed kan også lede et separat koncept AKA SaaS)

SqlFiddle Demo

Om spørgsmålene i kommentarerne:

Ja, det er et almindeligt mønster at bruge surrogat-id på dine borde. Som du måske kan se i artiklen, vil det komme med sine fordele og ulemper.

For eksempel vil du i spørgsmålet se den primære nøgle til ProductSpecification tabel er en sammensætning af ProductTypeOptions , OptionValue og Product fremmednøgler.
I mellemtiden primær nøgle for andre tabeller som OptionValue er en sammensat nøgle (OptionId + ValueName )
Det ser ud til, at livet bliver nemmere at have et ID felt i hver tabel som den primære nøgle, ja det er det, men som databasedesigner vil du miste noget værdifuldt, forretningslogik .

I det nuværende design kan du have disse begrænsninger i produktspecifikationstabellen, de vil vise en del af din forretningslogik:

  • Tjek begrænsning på ProductSpecification {OptionValue.optionId = productTypeOption.optionId} der forhindrer en værdi som "Hvid" i at blive tildelt "Størrelse".
  • Tjek begrænsning på ProductSpecification {product.productTypeId = productTypeOption.productTypeId} der forhindrer et produkt som "Nike" i at blive tildelt produktspecifikationer for "Biler".

Hvis du bruger surrogat-id, kan du ikke have denne type begrænsninger inde i din database (prøv dette).
Der vil være behov for ekstra arbejde i din applikationsimplementering for at få dem.
BTW brug surrogat-id, kontroller datakonsistens , hvis mere interesseret se valg af en primær nøgle:naturlig eller surrogat .

Det lader til, at "Herresko" fra "Nike" skal have pris, lager og tillæg, så de er naturlig ejendom tilhørende Product tabel.



  1. Hvad er den bedste måde at kryptere/dekryptere en json-streng på

  2. Hvad er forskellen mellem Office 365 og Office 2016?

  3. Skrive forespørgsel til flere tabeller i php

  4. Knee-Jerk Vent-statistikker:CXPACKET