库存系统

时间:2013-02-28 13:12:08

标签: database-design

我正在尝试开发在线广告资源系统。 我有下表:

CREATE TABLE `product` (
  `ProductId` 
  `SubCategoryTypeId` 
  `MerchantId` 
  `ProductName`
  `MRP` 
  `Quantity` 
  `ProductCode` 
  `ProductSKUCode` 
  `BarCode`
  `Description_short`
  `Description_long`
  `ThumbnailImage`
  `ProductImage`
  `OurPrice`
  `MinBargainPrice`
  `Brand`
  `AirCost`
  `SurfaceCost`
  `ShippingAirTime`
  `ShippingSurfaceTime`
  `ColorCode`
  `DiscountPercent`
  `IsApproved`
  `IsActive`
  `HasSize`
  `isOnlineProduct`
  `isOfflineProduct`
  `ShippingCategory`
  `ProductExpiryDays`
  `RelatedVideo`
  `TechnicalSpecification`
  `CreatedDateTime`
  `ModifiedDateTime`
  `CreatedBy`
  `ModifiedBy`
  `IsCod`
  `HasOffer`
  `OfferText`
  `IsNewArrival`
  `HasColor`
  `NoOfRecommendation`
  `IsPremium` tinyint(1) 
  `IsImported`
  PRIMARY KEY (`ProductId`),
  KEY `Product_Category_Rel` (`SubCategoryTypeId`),
  KEY `Product_Merchant_Rel` (`MerchantId`)
) ENGINE=InnoDB AUTO_INCREMENT=2093 DEFAULT CHARSET=utf8 COMMENT='This table contains Product data.';

使用此表我可以添加大部分产品,但我如何优化此表以便也可以添加书籍。我有添加书籍的问题,因为它有作者,出版商等。任何人都可以建议做什么,以便我也可以添加书籍?

2 个答案:

答案 0 :(得分:1)

我认为您可以尝试使用规范化规则将表拆分到更多表中。试着了解如何应用关系。例如,您的数据库表可以拆分为一个表名为product ant的表,其他表可用于将产品属性作为IsNewArrival插入。

答案 1 :(得分:0)

我使用泛化/专业化。例如,您有一个包含所有公共数据的产品的表...但是有其他表用于更多特定数据(如您的书籍)。 一个更好的例子,请求您销售书籍,电影和其他东西,如钢笔,铅笔,印刷品等(图书馆用品)。那么你可以有一个ProductID(pk),name(varchar),description(varchar)的产品表。您还可以使用BookID(pk),AuthorID(FK到作者表),ISBN(varchar),编辑ID(FK到编辑表)的Books表...还可以将BookID FK设置为​​Products.ProductID,这样,当您插入时书籍表中的书首先插入产品中的产品表,该ID是Books.bookID ...(与电影表相同)

希望了解我。

干杯!