sql >> Database >  >> RDS >> Mysql

Voorraadbeheer met aandelenopties

Ik denk dat het conceptmodel (volgens 6NF en 3NF) zullen je helpen.
Ik heb de naamgeving vereenvoudigd door het sleutelwoord 'shop' te verwijderen.
(Ook shop-entiteit kan een apart concept AKA SaaS leiden)

SqlFiddle-demo

Over de vragen in de opmerkingen:

Ja, het is een gebruikelijk patroon om surrogaat-ID te gebruiken op uw tafels. Zoals u in het artikel kunt zien, heeft dat zijn voor- en nadelen.

In de vraag ziet u bijvoorbeeld die primaire sleutel van ProductSpecification tabel is een samenstelling van ProductTypeOptions , OptionValue en Product buitenlandse sleutels.
Ondertussen primaire sleutel van andere tabellen zoals OptionValue is een samengestelde sleutel (OptionId + ValueName )
Het lijkt erop dat het leven gemakkelijker zal zijn om een ​​ID te hebben veld in elke tabel als de primaire sleutel, ja dat is het, maar als databaseontwerper verlies je iets waardevols, bedrijfslogica .

In het huidige ontwerp kunt u deze beperkingen in de tabel Productspecificaties hebben, ze zullen een deel van uw bedrijfslogica laten zien:

  • Controleer de beperking op ProductSpecification {OptionValue.optionId = productTypeOption.optionId} dat voorkomt dat een waarde als "Wit" wordt toegewezen aan "Grootte".
  • Controleer de beperking op ProductSpecification {product.productTypeId = productTypeOption.productTypeId} dat zal voorkomen dat een product als "Nike" wordt toegewezen aan productspecificaties van "Auto's".

Als u surrogaat-ID's gebruikt, kunt u dit soort beperkingen niet in uw database hebben (probeer dit).
Er zal extra werk moeten worden gedaan in uw toepassingsimplementatie om ze te verkrijgen.
BTW gebruik surrogaat-ID, controleer gegevensconsistentie , als je meer geïnteresseerd bent, zie een primaire sleutel kiezen:natuurlijk of surrogaat .

Het lijkt erop dat "Herenschoen" van "Nike" prijs, voorraad en toeslag moet hebben, dus zijn ze natuurlijk eigendom van Product tafel.



  1. VarBinary vs Image SQL Server-gegevenstype om binaire gegevens op te slaan?

  2. Wordpress Custom Table of Custom Post Types?

  3. Tijd bijsnijden vanaf datetime - een vervolg

  4. Een PHP MYSQL-rangschikkingsquery krijgen om te rangschikken op basis van de totale som van de score