1
3
您所描述的是一个类似于实现表继承的数据库设计问题(其中主表是父表,特定于类型的表是子表)。您可以在这里看到如何使用SQL Server 2005/2008实现表继承的非常好的解释: http://www.sqlteam.com/article/implementing-table-inheritance-in-sql-server …但是我将根据您下面的具体情况调整文章中的设计模式。 首先,您需要一个新表来保存可能的上载类型列表:
现在,请确保主表具有UploadType表的外键,并在“MasterTableID”和“UploadTypeID:
假设您在uploadType表中插入了值,以便HTTP上载的uploadTypeID=1,FTP上载的uploadTypeID=2,而SFTP上载的uploadTypeID=3,那么现在可以按如下方式设置上载特定的表(末尾的说明):
每个特定于类型的表都包含MasterTableID和UploadTypeID上主表的双键外键(这是获得引用完整性的方法),每个表都包含反映存储在该表中的特定上载类型的UploadTypeID计算列。这些计算列中的每一列都将强制使用特定的uploadtypeid创建插入到这些特定类型表中的任何新记录,从而将表锁定到特定的上载类型。 这种设计的好处在于,它为您提供了数据库驱动的引用约束,这些约束可以满足您所有的数据完整性要求,而不需要很多空值。如果您想更深入地了解这个模式如何在插入、删除等过程中防止数据完整性问题,您可以看到上面发布的文章中的详细示例。 |
Community wiki · SQL语法新手 1 年前 |
KateMak · 是否将多行中的多列与唯一id组合? 1 年前 |
Karuna · SQL中列内的筛选器[重复] 1 年前 |
Irvan Affandy · 为另一个选择选择声明的键 1 年前 |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |