这里是逻辑设计,你应该可以直接翻译成SQL方言。
请注意,这里的所有内容都不是 NULL。
产品 (PROD_NAME) 存在。
Product {PROD_NAME}
KEY {PROD_NAME}
样式 (STYLE_NO) 存在。
Style {STYLE_NO}
KEY {STYLE_NO}
颜色 (CLR_NAME) 存在。
Colour {CLR_NAME}
KEY {CLR_NAME}
样式 (STYLE_NO) 有颜色 (CLR_NAME)。
对于每种样式,该样式可能有多种颜色可供选择。
对于每种颜色,该颜色可能有多个样式可用。
如果一种样式在某种颜色中可用,则该样式必须存在并且该颜色必须存在。
StyleColour {STYLE_NO, CLR_NAME}
KEY {STYLE_NO, CLR_NAME}
FOREIGN KEY {STYLE_NO} REFERENCES Style {STYLE_NO}
FOREIGN KEY {CLR_NAME} REFERENCES Colour {CLR_NAME}
产品 (PROD_NAME) 有样式 (STYLE_NO)。
对于每种产品,该产品可能有多种款式可供选择。对于每种样式,该样式可能有不止一种产品可用。
如果产品以某种样式提供,那么该产品必须存在并且该样式必须存在。
ProductStyle {PROD_NAME, STYLE_NO}
KEY {PROD_NAME, STYLE_NO}
FOREIGN KEY {PROD_NAME} REFERENCES Product {PROD_NAME}
FOREIGN KEY {STYLE_NO} REFERENCES Style {STYLE_NO}
样式 (STYLE_NO) 是产品 (PROD_NAME) 的默认样式
每个产品最多有一个默认样式;对于每种样式,可能有多个产品默认具有该样式。
如果产品的默认样式是该样式,则该产品必须以该样式提供。
DefaultProductStyle {PROD_NAME, STYLE_NO}
KEY {PROD_NAME}
FOREIGN KEY {PROD_NAME, STYLE_NO} REFERENCES ProductStyle {PROD_NAME, STYLE_NO}