Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql server在没有关系的情况下强制执行约束_Sql_Sql Server_Foreign Keys_Relational Database - Fatal编程技术网

sql server在没有关系的情况下强制执行约束

sql server在没有关系的情况下强制执行约束,sql,sql-server,foreign-keys,relational-database,Sql,Sql Server,Foreign Keys,Relational Database,我想基于实现一个简单的翻译。我知道有几种方法可以做到这一点,但我希望保持简单 我的问题是关于约束。。。显然,我无法创建FK关系,因为我将只保存订单表中的PN值,并且产品PK是复合的(id+语言) 为了保持某种完整性(级联删除或避免删除旧产品),我可以做什么?我在考虑应用程序代码中的触发器和/或业务逻辑规则 我想听听你的意见,谢谢,模型在关系上没有意义,你必须正常化才能接近它 e、 g 产品(产品ID(K),说明) ProductVersions(ProductVersionID(K)、Produ

我想基于实现一个简单的翻译。我知道有几种方法可以做到这一点,但我希望保持简单

我的问题是关于约束。。。显然,我无法创建FK关系,因为我将只保存订单表中的PN值,并且产品PK是复合的(id+语言)

为了保持某种完整性(级联删除或避免删除旧产品),我可以做什么?我在考虑应用程序代码中的触发器和/或业务逻辑规则


我想听听你的意见,谢谢,模型在关系上没有意义,你必须正常化才能接近它 e、 g

产品(产品ID(K),说明)

ProductVersions(ProductVersionID(K)、ProductID(FK)、Language(FK?),在ProductID和Language上具有唯一的复合键


他们订购的产品或产品/语言是什么?

产品总是相同的,在本例中为“PN”。我对保存订单中的语言不感兴趣。PN是我所需要的。客户端将使用用户选择的语言进行翻译。正如您所说,我可以创建一个引用,添加另一个表,就像您建议的那样。但这意味着为每个需要翻译的表添加一个新的翻译表,也意味着我所有的查询都需要至少一个连接。。。更复杂。我在寻找一个更简单的结构(如果值得的话),我还在设计过程中,我会选择Tony的建议。不要与体制对抗。如果您想要约束,那么将其标准化,并将RDBMS提供给您的东西从盒子中取出。对我来说,一个额外的加入vs笨拙的模型(如截图中的那个)是一个明显的选择。我帮不了你。如果您不使用额外的表来描述与数据库的关系,那么您就不可能拥有一个表,并且您将永远需要做所有的工作来处理潜在的无效数据。我知道我会做出什么选择,永远是一段很长的时间。这样想吧。你说产品总是一样的,你写了一个系统来实现这个逻辑,然后你把伊特鲁里亚的产品发给我,告诉我它和梅索波塔米版本是一样的。我会同意吗?不把兰格带上订单,省去你自己的很多心痛。如果翻译是对产品执行的一个过程,以完成订单,那么请查看某种供应方案。你似乎要做出的妥协会让你在未来的任何改进中损失巨大的风格。