digraph schema { graph [rankdir=TB, splines=spline, overlap=false, bgcolor="#ebf4ff", nodesep=0.55, ranksep=1.0, pad=0.5, fontname="Helvetica", compound=true, newrank=true, mclimit=4.0]; node [shape=plaintext, fontname="Helvetica"]; edge [fontname="Helvetica", fontsize=9, penwidth=1.4, arrowsize=0.7]; subgraph cluster_identity { label="Identity & Company"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#ffffff60"; color="#a0aec0"; fontcolor="#1a365d"; margin=14; numbers [label=<
numbers
idINT PK
company_idINT FK
typeNVARCHAR(100)
prefixNVARCHAR(50)
paddingINT
nextINT
>]; entity [label=<
entity
idINT PK
customergroup_idINT FK
firstnameNVARCHAR(255)
lastnameNVARCHAR(255)
>]; syncpos [label=<
syncpos
idINT PK
company_idINT FK
paircodeNVARCHAR(50)
token?NVARCHAR(255)
>]; meta [label=<
meta
keyNVARCHAR(255)
valueNVARCHAR(MAX)
>]; company [label=<
company
idINT PK
default_language_id?INT FK
root_category_id?INT FK
poscustomergroup_idINT FK
taxrate?INT FK
reducedtaxrate?INT FK
taxfreerate?INT FK
nameNVARCHAR(255)
>]; companyuser [label=<
companyuser
idINT PK
company_idINT FK
google_auth_idINT FK
>]; customergroup [label=<
customergroup
idINT PK
company_id?INT FK
nameNVARCHAR(255)
>]; google_auth [label=<
google_auth
idINT PK
selected_company?INT FK
emailNVARCHAR(320)
created_atDATETIME2
>]; } subgraph cluster_i18n { label="Localization"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#ffffff60"; color="#a0aec0"; fontcolor="#1a365d"; margin=14; categorytext [label=<
categorytext
idINT PK
language_idINT FK
category_idINT FK
nameNVARCHAR(255)
slugNVARCHAR(255)
seo?NVARCHAR(MAX)
desc?NVARCHAR(MAX)
>]; articletext [label=<
articletext
idINT PK
language_idINT FK
article_idINT FK
nameNVARCHAR(255)
slugNVARCHAR(255)
seo?NVARCHAR(MAX)
desc?NVARCHAR(MAX)
>]; unittext [label=<
unittext
idINT PK
language_idINT FK
unit_idINT FK
symbolNVARCHAR(50)
nameNVARCHAR(255)
>]; language [label=<
language
idINT PK
iso639NVARCHAR(10)
>]; } subgraph cluster_catalog { label="Catalog"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#ffffff60"; color="#a0aec0"; fontcolor="#1a365d"; margin=14; articlehistory [label=<
articlehistory
idINT PK
article_idINT FK
dateDATETIME2
textNVARCHAR(MAX)
>]; articleean [label=<
articleean
idINT PK
article_idINT FK
eanNVARCHAR(50)
>]; categoryarticle [label=<
categoryarticle
idINT PK
article_idINT FK
category_idINT FK
>]; articlelist [label=<
articlelist
idINT PK
>]; article [label=<
article
idINT PK
unit_idINT FK
articlelist_id?INT FK
fatherarticle_id?INT FK
optionslist_id?INT FK
brand_id?INT FK
sku?NVARCHAR(100)
unitamountFLOAT
weightFLOAT
is_fatherBIT
fathersortINT
created_atDATETIME2
updated_atDATETIME2
>]; category [label=<
category
idINT PK
parent_id?INT FK
sortINT
>]; articlelistarticle [label=<
articlelistarticle
idINT PK
articlelist_idINT FK
article_idINT FK
countINT
sortINT
>]; optionslist [label=<
optionslist
idINT PK
>]; brand [label=<
brand
idINT PK
nameNVARCHAR(255)
gsprpinfo?NVARCHAR(MAX)
>]; optionslistarticle [label=<
optionslistarticle
idINT PK
article_idINT FK
optionslist_idINT FK
countINT
sortINT
mandatedBIT
>]; } subgraph cluster_media { label="Media"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#ffffff60"; color="#a0aec0"; fontcolor="#1a365d"; margin=14; brandpic [label=<
brandpic
idINT PK
brand_idINT FK
pic_idINT FK
sortINT
>]; articlepic [label=<
articlepic
idINT PK
article_idINT FK
pic_idINT FK
sortINT
>]; pic [label=<
pic
idINT PK
wINT
hINT
sizeBIGINT
hashNVARCHAR(64)
thumbwINT
thumbhINT
thumbhashNVARCHAR(64)
sourceNVARCHAR(MAX)
fullbinaryVARBINARY(MAX)
thumbbinaryVARBINARY(MAX)
>]; categorypic [label=<
categorypic
idINT PK
category_idINT FK
pic_idINT FK
sortINT
>]; } subgraph cluster_commerce { label="Pricing & Documents"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#ffffff60"; color="#a0aec0"; fontcolor="#1a365d"; margin=14; tax [label=<
tax
idINT PK
rateDECIMAL(18,4)
>]; price [label=<
price
idINT PK
article_idINT FK
customergroup_idINT FK
tax_idINT FK
minmultiplierDECIMAL(18,4)
netFLOAT
>]; manifest [label=<
manifest
idINT PK
numberNVARCHAR(100)
typeNVARCHAR(100)
dateDATETIME2
>]; manifestarticle [label=<
manifestarticle
idINT PK
article_id?INT FK
tax_idINT FK
manifest_idINT FK
amountFLOAT
netFLOAT
transactedamountFLOAT
comment?NVARCHAR(MAX)
rebateFLOAT
>]; } subgraph cluster_units { label="Units"; labeljust="l"; fontsize=15; style="rounded,filled"; fillcolor="#ffffff60"; color="#a0aec0"; fontcolor="#1a365d"; margin=14; unit [label=<
unit
idINT PK
company_idINT FK
siNVARCHAR(50)
basesiNVARCHAR(50)
basesifactorFLOAT
>]; } __legend [label=<
Legend
PKprimary key
FKforeign key
?nullable column
—FOREIGN KEY constraint
- -naming convention only, no constraint
>]; google_auth:selected_company:sw -> company:in5:n [color="#c53030", fontcolor="#c53030", tooltip="FK_google_auth_selected_company"]; category:parent_id:e -> category:id:e [color="#2f855a", fontcolor="#2f855a", tooltip="FK_category_parent"]; company:root_category_id:w -> category:in4:n [color="#2b6cb0", fontcolor="#2b6cb0", tooltip="FK_company_root_category"]; company:default_language_id:w -> language:in3:n [color="#b7791f", fontcolor="#b7791f", tooltip="FK_company_default_language"]; company:taxrate:e -> tax:in2:n [color="#6b46c1", fontcolor="#6b46c1", tooltip="FK_company_taxrate"]; company:reducedtaxrate:e -> tax:in0:n [color="#c05621", fontcolor="#c05621", tooltip="FK_company_reducedtaxrate"]; company:taxfreerate:e -> tax:in1:n [color="#319795", fontcolor="#319795", tooltip="FK_company_taxfreerate"]; customergroup:company_id:nw -> company:in4:n [color="#97266d", fontcolor="#97266d", tooltip="FK_customergroup_company"]; company:poscustomergroup_id:se -> customergroup:in1:n [color="#4c51bf", fontcolor="#4c51bf", tooltip="FK_company_poscustomergroup"]; entity:customergroup_id:e -> customergroup:in0:n [color="#276749", fontcolor="#276749", tooltip="FK_entity_customergroup"]; unit:company_id:e -> company:in0:n [color="#9c4221", fontcolor="#9c4221", tooltip="FK_unit_company"]; unittext:unit_id:se -> unit:in0:n [color="#0987a0", fontcolor="#0987a0", tooltip="FK_unittext_unit"]; unittext:language_id:se -> language:in2:n [color="#553c9a", fontcolor="#553c9a", tooltip="FK_unittext_language"]; article:unit_id:w -> unit:in1:n [color="#742a2a", fontcolor="#742a2a", tooltip="FK_article_unit"]; article:brand_id:se -> brand:in0:n [color="#22543d", fontcolor="#22543d", tooltip="FK_article_brand"]; article:articlelist_id:sw -> articlelist:in0:n [color="#1a365d", fontcolor="#1a365d", tooltip="FK_article_articlelist"]; article:optionslist_id:se -> optionslist:in0:n [color="#702459", fontcolor="#702459", tooltip="FK_article_optionslist"]; article:fatherarticle_id:e -> article:id:e [color="#744210", fontcolor="#744210", tooltip="FK_article_fatherarticle"]; articlehistory:article_id:e -> article:in1:n [color="#285e61", fontcolor="#285e61", tooltip="FK_articlehistory_article"]; articleean:article_id:se -> article:in2:n [color="#d53f8c", fontcolor="#d53f8c", tooltip="FK_articleean_article"]; articlepic:article_id:w -> article:in7:n [color="#dd6b20", fontcolor="#dd6b20", tooltip="FK_articlepic_article"]; articlepic:pic_id:se -> pic:in1:n [color="#38a169", fontcolor="#38a169", tooltip="FK_articlepic_pic"]; brandpic:brand_id:sw -> brand:in1:n [color="#3182ce", fontcolor="#3182ce", tooltip="FK_brandpic_brand"]; brandpic:pic_id:se -> pic:in0:n [color="#805ad5", fontcolor="#805ad5", tooltip="FK_brandpic_pic"]; articlelistarticle:articlelist_id:sw -> articlelist:in1:n [color="#c53030", fontcolor="#c53030", tooltip="FK_articlelistarticle_articlelist"]; articlelistarticle:article_id:sw -> article:in5:n [color="#2f855a", fontcolor="#2f855a", tooltip="FK_articlelistarticle_article"]; optionslistarticle:optionslist_id:sw -> optionslist:in1:n [color="#2b6cb0", fontcolor="#2b6cb0", tooltip="FK_optionslistarticle_optionslist"]; optionslistarticle:article_id:sw -> article:in6:n [color="#b7791f", fontcolor="#b7791f", tooltip="FK_optionslistarticle_article"]; categoryarticle:category_id:se -> category:in1:n [color="#6b46c1", fontcolor="#6b46c1", tooltip="FK_categoryarticle_category"]; categoryarticle:article_id:se -> article:in3:n [color="#c05621", fontcolor="#c05621", tooltip="FK_categoryarticle_article"]; categorypic:category_id:sw -> category:in3:n [color="#319795", fontcolor="#319795", tooltip="FK_categorypic_category"]; categorypic:pic_id:sw -> pic:in2:n [color="#97266d", fontcolor="#97266d", tooltip="FK_categorypic_pic"]; categorytext:category_id:e -> category:in0:n [color="#4c51bf", fontcolor="#4c51bf", tooltip="FK_categorytext_category"]; categorytext:language_id:se -> language:in0:n [color="#276749", fontcolor="#276749", tooltip="FK_categorytext_language"]; articletext:article_id:e -> article:in0:n [color="#9c4221", fontcolor="#9c4221", tooltip="FK_articletext_article"]; articletext:language_id:se -> language:in1:n [color="#0987a0", fontcolor="#0987a0", tooltip="FK_articletext_language"]; price:tax_id:sw -> tax:in3:n [color="#553c9a", fontcolor="#553c9a", tooltip="FK_price_tax"]; price:article_id:w -> article:in8:n [color="#742a2a", fontcolor="#742a2a", tooltip="FK_price_article"]; price:customergroup_id:sw -> customergroup:in2:n [color="#22543d", fontcolor="#22543d", tooltip="FK_price_customergroup"]; manifestarticle:manifest_id:sw -> manifest:in0:n [color="#1a365d", fontcolor="#1a365d", tooltip="FK_manifestarticle_manifest"]; manifestarticle:article_id:w -> article:in9:n [color="#702459", fontcolor="#702459", tooltip="FK_manifestarticle_article"]; manifestarticle:tax_id:sw -> tax:in4:n [color="#744210", fontcolor="#744210", tooltip="FK_manifestarticle_tax"]; numbers:company_id:se -> company:in1:n [color="#285e61", fontcolor="#285e61", tooltip="FK_numbers_company"]; companyuser:google_auth_id:se -> google_auth:in0:n [color="#d53f8c", fontcolor="#d53f8c", tooltip="FK_companyuser_google_auth"]; companyuser:company_id:sw -> company:in3:n [color="#dd6b20", fontcolor="#dd6b20", tooltip="FK_companyuser_company"]; syncpos:company_id:se -> company:in2:n [color="#38a169", fontcolor="#38a169", tooltip="FK_syncpos_company"]; }