2016-04-08 50 views
0

因此,我正在开发一家在线服装店。正如你所知道的每个产品都有不同的尺寸(只要说我有产品T恤和小号,中号和大号)。如您所知,该产品可能具有多种尺寸,但您只能在数据库中的产品表中指向一个尺寸。那么实现它的最好方法是什么?当产品具有多种尺寸,类别等时,解决方案是什么?我是否必须为大小制作几个bool列,如果大小可用,请将其设置为true;如果大小不正确,请将其设置为false?我应该制作一个尺寸表,并通过产品表指向尺寸标识或其他方式?没有那么糟糕,因为尺寸总是一样的?所以请给我一些关于如何去做这件事的建议。提前致谢。在线商店数据库中的关系(一种产品有很多尺寸)

+0

我不认为尺寸或颜色在典型的RDBMS模型中被认为是“相关的”,就像“属性”一样。对于相关的大小,这表明其他记录也可能与该“大小”表相关。因此,如果“小,中,大”对于T恤来说是独一无二的,那么为这三种尺寸设置一张桌子并不一定是个好主意。 – Anthony

+0

http://2.bp.blogspot.com/-unSSm86LT-k/UNDJPlmVh9I/AAAAAAAAAMA/TKZ7hdQlmHk/s1600/options.png –

+0

取决于您是否需要存储每种尺寸的数量?在这种情况下,您的产品有代码,而您的尺寸使用产品代码和“尺寸”标签和编号。 – BugFinder

回答

1

他们的方式我wouold到处是这样的:

  1. ,你的衣服表

  2. 你的尺寸表

  3. 透视表引用大小的ID和ID的一件衣服。通过这种方式,您可以根据自己的需要连接任意尺寸的衣服,并在整个商店中重复使用尺寸。我会做类似的一样。

这是Laravel所谓的belongsToMany关系,您可以在laravel网站上找到相关文档。

+0

这似乎最适合我。谢谢! – Codearts

+0

没问题! :-) – Anoxy

0

设计系统时,不仅要将问题看作“编程”或“数据库”问题,这一点非常重要。这里真正重要的是将现实世界的问题翻译成代码!

您目前正在设计一家网上商店。你将如何去设计它?简单 - 通过看现实世界。如果这是实体店,每次收到产品时,都需要注意产品的确切特征。每个单独的产品可能都有一个序列号,您必须注册。所以,你需要一个表格来记录每个单独的产品!在这个表格中,你会添加每个的大小和颜色。并且单个产品将具有用于产品数据的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>'。并非所有的东西都需要一张表来进行查询!

+0

在产品表中,我存储了各个项目。例如Nike Tempo Shirt或其他。我想知道Nike Tempo Shirt有哪些尺码和颜色可供选择。我正在考虑颜色表或尺寸表的唯一原因是他们重复自己。颜色表不是问题,因为产品大多只有一种颜色,但尺寸并非如此。所以如果一个产品有3种不同的尺寸,我可以指向一个。我对数据库很陌生,所以我不确定要走哪条路。这不适用于学校,但我使用Laravel进行学习。 – Codearts

+0

然后你不需要额外的表格。进行查询以获取所需内容。我用细节编辑了我的答案! –

1

从你说的话,我会创建这些实体:

  • 产品
  • 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;这将包含行SMLXL ... 34x3236x3038x34

零售行业使用的术语叫SKU来定义产品,尤其是它关系到库存管理。当您创建出售物品时,您可能需要考虑如何跟踪库存,这将决定您创建的SKU。鉴于上述关系结构,它应该使您能够创建列出所有项目的sku表格。它至少会有这些列:product_id,size_id,也可能是其他人,如color等,以及链接到您的系统的库存部分的一些方法。

相关问题