因此,我正在开发一家在线服装店。正如你所知道的每个产品都有不同的尺寸(只要说我有产品T恤和小号,中号和大号)。如您所知,该产品可能具有多种尺寸,但您只能在数据库中的产品表中指向一个尺寸。那么实现它的最好方法是什么?当产品具有多种尺寸,类别等时,解决方案是什么?我是否必须为大小制作几个bool列,如果大小可用,请将其设置为true;如果大小不正确,请将其设置为false?我应该制作一个尺寸表,并通过产品表指向尺寸标识或其他方式?没有那么糟糕,因为尺寸总是一样的?所以请给我一些关于如何去做这件事的建议。提前致谢。在线商店数据库中的关系(一种产品有很多尺寸)
回答
设计系统时,不仅要将问题看作“编程”或“数据库”问题,这一点非常重要。这里真正重要的是将现实世界的问题翻译成代码!
您目前正在设计一家网上商店。你将如何去设计它?简单 - 通过看现实世界。如果这是实体店,每次收到产品时,都需要注意产品的确切特征。每个单独的产品可能都有一个序列号,您必须注册。所以,你需要一个表格来记录每个单独的产品!在这个表格中,你会添加每个的大小和颜色。并且单个产品将具有用于产品数据的FK,其包含条形码和产品名称。像这样的东西,在SQL伪代码。
CREATE TABLE Product (
barcode varchar(15) PRIMARY KEY, #Assuming a barcode has 15 characters
name varchar(500) not null
);
CREATE TABLE IndividualProduct (
serial int PRIMARY KEY,
size varchar(5) not null,
color varchar(15) not null,
barcode varchar(15) not null,
FOREIGN KEY (barcode) REFERENCES Product(barcode)
);
顺便说一句,我认为有几个电子商务软件,你需要完全准备好你需要的一切。我可以建议使用一个吗? Drupal可能是PHP的最佳选择!假设这不是为了学校,使用现成的解决方案将在许多方面更便宜。
编辑:你可能还需要一个查询,而不是做一个新表。请记住,查询也会输出表格!
SELECT distinct color
from IndividualProduct IP
inner join Product P on IP.barcode = P.barcode
where P.name = 'Nike Shoes';
该查询将输出特定产品的所有可用颜色,并且您不需要额外的颜色表!您也可以对尺寸进行类似的查询,如果您想要严格,可以将where P.name = 'Nike Shoes'
替换为where P.barcode = '<barcode>'
。并非所有的东西都需要一张表来进行查询!
在产品表中,我存储了各个项目。例如Nike Tempo Shirt或其他。我想知道Nike Tempo Shirt有哪些尺码和颜色可供选择。我正在考虑颜色表或尺寸表的唯一原因是他们重复自己。颜色表不是问题,因为产品大多只有一种颜色,但尺寸并非如此。所以如果一个产品有3种不同的尺寸,我可以指向一个。我对数据库很陌生,所以我不确定要走哪条路。这不适用于学校,但我使用Laravel进行学习。 – Codearts
然后你不需要额外的表格。进行查询以获取所需内容。我用细节编辑了我的答案! –
从你说的话,我会创建这些实体:
- 产品
- PRODUCT_TYPE
- SIZE_TYPE
- 大小
这将是关系:
product_type 1 ---> m product size_type 1 ---> m product_type size_type 1 ---> m size
方法如下:
product
使用product.product_type_id
product_type
表将定义类型的服装产品将持有这将与product_type
有关个别产品的记录;这是因为不同类型的服装产品需要不同的尺寸组合;例如裤子大小不同于T恤,领衬衫,小孩等;product_type
将有size_type_id
列链接到大小类型size_type
表将定义大小类型;例如kids_shirts
,mens_pants
等size
表将保存实际大小,并将通过size.size_type_id
字段链接到size_type
;这将包含行S
,M
,L
,XL
...34x32
,36x30
,38x34
等
零售行业使用的术语叫SKU来定义产品,尤其是它关系到库存管理。当您创建出售物品时,您可能需要考虑如何跟踪库存,这将决定您创建的SKU。鉴于上述关系结构,它应该使您能够创建列出所有项目的sku
表格。它至少会有这些列:product_id
,size_id
,也可能是其他人,如color
等,以及链接到您的系统的库存部分的一些方法。
- 1. 建立一家只有一种产品的在线商店
- 2. 产品的商店清单数据库
- 3. Asp.Net店产品属性(尺寸,数量)
- 4. 数据库设计:产品尺寸
- 5. 多种类别/产品关系的数据库模式
- 6. 在具有多种关系的商店中创建新记录
- 7. 将产品从更多数据库载入商店,如何?
- 8. Magento产品尺寸的尺寸单位
- 9. 如何为各种颜色和尺寸的商品构建数据库?
- 10. Spree商业中是否有任何产品尺寸图宝石?
- 11. 有很多产品类别的电子商务网站的数据库设计
- 12. 防止在导入数据时没有产品的在线商店
- 13. 为产品页面显示多种尺寸的图像?
- 14. Magento多店 - 展示所有商店的产品
- 15. 超过200家商店与多商店和相同的产品?
- 16. 具有多种语言首选产品的多厂商电子商务系统
- 17. Magento:一种简单产品下的不同尺寸和颜色?
- 18. 实体关系图冗余:商店,产品,订单,类别
- 19. iOS应用商店上的大尺寸
- 20. ASP.NET网上商店产品
- 21. 如何在Magento中创建多种尺寸和价格的产品?
- 22. 根据商店位置搜索商店产品
- 23. 如何链接经销商的产品表和许多零售店关系? mysql
- 24. 数据库,店铺关系
- 25. 数据库设计采用多很多一对多的关系
- 26. 具有多种价格的ASP.NET核心MVC产品数据库
- 27. 如何在关系数据库中有多对多的关系
- 28. 在magento的多个商店中保存产品的问题
- 29. 列出发行商在Play商店的所有产品
- 30. SSAS尺寸关系
我不认为尺寸或颜色在典型的RDBMS模型中被认为是“相关的”,就像“属性”一样。对于相关的大小,这表明其他记录也可能与该“大小”表相关。因此,如果“小,中,大”对于T恤来说是独一无二的,那么为这三种尺寸设置一张桌子并不一定是个好主意。 – Anthony
http://2.bp.blogspot.com/-unSSm86LT-k/UNDJPlmVh9I/AAAAAAAAAMA/TKZ7hdQlmHk/s1600/options.png –
取决于您是否需要存储每种尺寸的数量?在这种情况下,您的产品有代码,而您的尺寸使用产品代码和“尺寸”标签和编号。 – BugFinder