我正在尝试创建一个电子商务/商店系统,我决定基于this great answer在SQL设计中选择类表继承设计。
现在我有了以下表结构:
product ( id [PK], name, description )
product_shirt ( id [PK], product_id [FK], color, size, stock, price )
product_ring ( id [PK], product_id [FK], size, stock, price )
// maybe coming more
这适用于在网站上展示产品。但是,如果我想下订单,一些产品会如何运作?
如果我的产品有一个表,我可以将product_id
作为外键分配给关系表,但是对于多个表,这似乎不再可能。是否可以使用类表继承?
我看了很多,大多数答案/教程似乎专注于产品的代表,但不是客户的订单。
答案 0 :(得分:4)
从product_id
和product_shirt
删除字段product_ring
,并将id
字段的主键和外键设为{{1} }。
您的product.id
表格将包含order_item
的外键。
如果您需要以给定订单提取有关产品的信息,请仅使用加入product.id
进行查询。如果您需要特定产品的完整详细信息,请根据实际产品类型与product
或product_shirt
加入。
示例:
product_ring