我要做的是将此数据输入数据库以便在用户表单上使用。
例如,如果用户在“产品”下拉列表中选择“产品A”,则“样式”下拉列表将仅填充产品A可用的样式,并将选择默认样式。并且颜色下拉列表仅显示与该样式对应的颜色。基本上我所拥有的是依赖于另一个值的值。颜色列表取决于样式,具体取决于产品类型。
此方案的合理数据库架构是什么?我现在已经绞尽脑汁好几天了,非常感谢一些指导。
产品类型(A,B,C,D,E)
有以下样式:
风格1
样式2(默认)
Style 3
有以下样式:
样式4(默认)
Style 5
只有一种风格:
风格6
样式7(默认)
注意:每种风格都有自己独特的颜色
注意:每个产品都有默认样式
答案 0 :(得分:0)
如果你想保持简单:
CREATE TABLE products (
id serial NOT NULL,
CONSTRAINT pk_products
PRIMARY KEY (id)
);
CREATE TABLE styles (
id serial NOT NULL,
product_id integer NOT NULL,
CONSTRAINT pk_styles
PRIMARY KEY (id),
CONSTRAINT fk_styles_id
FOREIGN KEY (product_id)
REFERENCES products (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TABLE colors (
id serial NOT NULL,
style_id integer NOT NULL,
CONSTRAINT pk_colors
PRIMARY KEY (id),
CONSTRAINT fk_colors_id
FOREIGN KEY (style_id)
REFERENCES styles (id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
);
如果你想让它更复杂,你可以尝试避免重复(即重复使用颜色等),但这完全取决于你。
答案 1 :(得分:0)
考虑以下数据库架构:
1)Table_Product:Product_ID,Product_Name(所有产品列表)。
2)Table_Style:Style_ID,Style_Name(所有样式的列表)
3)Table_Color:Color_ID,Color_Name(所有颜色的列表)
4)Table_Product_Style:Product_ID,Style_ID,IsDefault(每个产品的默认样式的产品和样式的映射)
5)Table_Style_Color:Style_ID,Color_ID(样式和颜色的映射)
6)Table_User_Preference:User_ID,Product_ID,Style_ID,Color_ID。
答案 2 :(得分:0)
这是逻辑设计,你应该能够将它直接翻译成SQL方言。
请注意,此处的所有内容均为非空。
产品(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(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}