具有非标识键的表

时间:2012-11-22 21:11:20

标签: mysql database-design database-schema

我的公司正在使用此模型来管理广告资源

Model 1 http://img534.imageshack.us/img534/6024/modeltest2.jpg

但我遇到了问题,因为在这个月我们在同一个仓库买了一些价格不同的塑料袋,有效期。

所以现在我将模型更改为此。

Model 1 http://img16.imageshack.us/img16/8416/modeltest.jpg

我的问题是,如果这是好的..它正在工作,但是我第一次创建一个只有主键的表。

数据示例:

PRODUCT        WAREHOUSE   Quantity   Price  Expiration_Date
PLASTIC BAG    NEW YORK    20         1.20$  12-10-2013
PLASTIC BAG    NEW YORK    130        1.50$  21-12-2015

由于

2 个答案:

答案 0 :(得分:1)

特定于MySQL和InnoDB存储的一个问题是,InnoDB将在内部静默创建一个额外的6字节整数作为代理主键。此外,如果您可以通过主键执行查询,则对任何InnoDB表的查询都会更有效。因此,如果可能,定义主键(或唯一键)对您有利。

如果Product_ID,Warehouse_ID列的组合不足以唯一标识每一行,则可以添加第三列以区分重复项。例如,Stock_ID或其他。

答案 1 :(得分:1)

基本上没关系。在销售,仓库系统中,您无法在产品表中保存具有不同到期日期的所有产品,因为每个产品都会有很多记录。但通常你需要将它们保存在“Item_Ledger_Entry”表中,这里将是Sales of Sales或Purcahse的所有交易。

您使用同一产品只有不同的到期日期。我认为你根本不需要Product has warehouseKey

中的Priamrey Key