【问题标题】:GridView edit problem If primary key is editable (design problem)GridView 编辑问题 如果主键可编辑(设计问题)
【发布时间】:2011-02-21 18:11:13
【问题描述】:

我想询问基于表格在网格视图中的可编辑性的表格设计。让我解释。例如,我有一个名为 ProductCustomerRel 的表。

方法一

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

因此 CustomerCode、StoreCode 和 ProductCode 的组合必须是唯一的。记录显示在网格视图上。要求是您可以编辑客户、产品和商店代码,但在保存数据时,PK 约束必须仍然存在。

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

对此的替代方法是仅更新表并添加 SeqNo,并在网格视图中插入和更新时强制执行 3 列的唯一约束。

方法二

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

我的问题是这两种方法中哪一种更好?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: asp.net sql-server database database-design gridview


    【解决方案1】:

    我总是鼓励你使用方法 2。它让生活变得不那么复杂。这种主键的术语是代理键,而不是基于其他字段的自然键,这些字段除了作为主键之外还有其他用途。您仍然可以在数据库级别对 3 个外键字段强制执行唯一约束,而不必在主键中使用它们。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 2016-02-22
      • 2023-03-10
      相关资源
      最近更新 更多