jel*_*key 8 sql-server-2005 foreign-key
我们有一个基表,用于定义部件并保存部件号、描述、价格、重量等信息。我们还有大约 400 个表引用基表,并根据部件的类型/类别提供有关部件的附加信息。
我们首先使用外键约束,这样如果某个部分在 400 个特定于部分的表中的一个中被引用,则无法从基表中删除该部分,但我们很快达到了 SQL Server 2005 的最大 253 个推荐外键。
在这种情况下,是否有任何外键替代方案可以确保数据完整性?我们在访问数据时没有看到性能问题,但由于查询计划太复杂,更新基表中的现有部分将失败。
如果有任何方法可以对部件进行分组,您也许可以引入中间表作为解决方法。 这行不通。
Parts
+ Table 1
+ Table 2
+ ...
+ Table 400
Run Code Online (Sandbox Code Playgroud)
但沿着这些路线的东西可能会。
Parts
+ RedOrangeYellow parts
+ Table 1
+ Table 2
+ ...
+ Table 200
+ GreenBlueIndigoViolet parts
+ Table 201
+ Table 202
+ ...
+ Table 400
Run Code Online (Sandbox Code Playgroud)
不过,在我建议这样做之前,我想仔细研究一下您的 DDL 。如果你这样做,不要开始到处乱扔身份证号码。您应该能够将“Table 400”直接加入“Parts”,而不包括“GreenBlueIndigoViolet 零件”。
小智 4
如果确实无法合并表,为什么不在TRIGGER基表上创建一个以防止删除呢?
从这里开始:http ://msdn.microsoft.com/en-us/library/ms189799(v=sql.90).aspx