![]() |
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创建插入到这些特定类型表中的任何新记录,从而将表锁定到特定的上载类型。 这种设计的好处在于,它为您提供了数据库驱动的引用约束,这些约束可以满足您所有的数据完整性要求,而不需要很多空值。如果您想更深入地了解这个模式如何在插入、删除等过程中防止数据完整性问题,您可以看到上面发布的文章中的详细示例。 |
|
Johnny T · 基于当前值的SQL合并表[重复] 5 月前 |
![]() |
John D · 需要为NULL或NOT NULL的WHERE子句 5 月前 |
![]() |
ojek · 如何对SQL结果进行分组和编号? 5 月前 |
![]() |
senek · 如何在PL/SQL中将选择结果(列)放入数组中 5 月前 |
![]() |
Sax · 规范化Google表格(第一步) 5 月前 |
![]() |
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 5 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 6 月前 |