Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 电子商务网站的数据库设计_Mysql_Database_Database Schema - Fatal编程技术网

Mysql 电子商务网站的数据库设计

Mysql 电子商务网站的数据库设计,mysql,database,database-schema,Mysql,Database,Database Schema,我更多的是一个前端的人,所以如果这些问题出来的愚蠢,我提前道歉:) 我正在为一个电子商务网站设计一个数据库模式。本网站出售的产品可以包含其他产品。情商:把汽车想象成一种产品。汽车还可以包含其他产品,如座椅、方向盘、挡风玻璃等,每种产品都可以单独出售 问题#1:产品表应该考虑什么?Product表中有一个名为Products的字段,其中包含与此产品关联的所有ProductID,这有意义吗?(或规范化到自己的表中以进行优化) 问题#2:本网站还将不时提供适用于某一产品的折扣(无论是针对单个产品还是包

我更多的是一个前端的人,所以如果这些问题出来的愚蠢,我提前道歉:)

我正在为一个电子商务网站设计一个数据库模式。本网站出售的产品可以包含其他产品。情商:把汽车想象成一种产品。汽车还可以包含其他产品,如座椅、方向盘、挡风玻璃等,每种产品都可以单独出售

问题#1:产品
表应该考虑什么?
Product
表中有一个名为
Products
的字段,其中包含与此产品关联的所有ProductID,这有意义吗?(或规范化到自己的表中以进行优化)


问题#2:本网站还将不时提供适用于某一产品的折扣(无论是针对单个产品还是包含其他产品的产品)。还有适用于整个订单的折扣。设计折扣表的最佳方法是什么?

在不了解更多信息的情况下,这应该适合您的需要:

问题1

带ID的产品表
包含具有多行包含产品id和包含产品id的表

问题2

包含以下内容的折扣表:
折扣开始日期时间
折扣结束日期时间
金额小数
金额类型-百分比或直接美元金额
产品Id-如果为空,则折扣适用于整个订单,而不仅仅是一个产品

希望这有帮助。

问题1:

不要包含ID以逗号分隔的列。你最终会憎恨生活。它很难查询、更新,并且不允许您强制执行数据完整性。我建议您使用以下方法:

Product
--------
ProductId
ProductName
ParentProductId  --nullable
这将为您提供一个具有递归层次结构的表。如果产品没有任何父项,只需将
ParentProductId
列保留为空即可

问题2:

我会将此结构用于折扣:

ProductDiscounts
-----------------
DiscountId
ProductId  --nullable
Discount

Order
------
OrderId
DiscountId --nullable
OtherStuff

在这种结构下,您必须建立逻辑,在没有特定产品ID的情况下对整个订单应用折扣。

看看我们谈论的是家庭作业吗?Abe,我已经再次检查了我的大部分问题,并接受了我认为已回答的问题@丹尼,是的,这个问题纯粹是为了我的学习目的。正如我提到的,我主要是一个前端人员,但我认为我应该多样化一点:)分支没什么错;)保持向上,阿贝。您如何区分产品折扣与整个订单折扣?如果ProductId=null,那么它就是订单折扣,就像@evan建议的那样?是的,我会更新我的答案。我将包括对
订单
表中的
折扣
表的参考,以及Abe的其他银行。我也喜欢
ParentProductId
的想法。如果没有更好的答案,我会接受你的答案。有一个表的产品和包含的产品将只允许一个产品包含在一个父产品。一个座位可以放在多种类型的汽车上,每种汽车都有方向盘,一支笔可能与笔记本或笔盒捆绑在一起,等等。@evan,这是真的。我假设产品只能有一个父项,但如果不是这样,那么您的结构就更有意义了。