2010-05-20 59 views
1

我想问一下表格的设计是基于它在Grid View中的可编辑性。让我解释。例如,我有一个名为ProductCustomerRel的表。GridView编辑问题如果主键是可编辑的(设计问题)

方法1

CustomerCode varchar PK 
ProductCode varchar PK 
StoreCode varchar PK 
Quantity int 
Note text 

所以CustomerCode的组合,商店代码和产品代码必须是唯一的。记录显示在gridview上。要求是您可以编辑客户,产品和商店代码,但是当保存数据时,PK约束必须仍然存在。

这里的问题是很自然的一个网格,能够编辑3主键,你只能通过先删除行,然后用更新的数据插入行实现网格视图的更新操作。

另一种方法是只更新表格并添加一个SeqNo,并且在网格视图中插入和更新时只强制执行3列的唯一约束。

方法2

SeqNo int PK 
CustomerCode varchar 
ProductCode varchar 
StoreCode varchar 
Quantity int 
Note text 

我的问题是这两种方法的比较好?还是有另一种方法来做到这一点?

回答

1

我总是鼓励你使用方法2.它使生活更简单。这种主键的术语是代理键,而不是基于其他字段的自然键,该字段具有除主键之外的其他目的。您仍然可以对数据库级别的3个外键字段实施唯一约束,而不必在主键中使用它们。

对这篇文章有http://www.wingenious.com/article1.html的读,然后如果你有兴趣在此,这里是关于同一主题的一系列文章:http://www.wingenious.com/articles.html