在sql server中设计范式
我有 2 个表(FirstTable 和 SecondTable)。我的FirstTable是标题表,SecondTable是明细表,但是FirstTable有复杂的主键。我如何在我的第二个表中对第一个表进行正常和最佳选择的引用。
I have 2 table (FirstTable & SecondTable). My FirstTable is header table and SecondTable is detail table, but FirstTable has complex primary key. How I can have a reference in my SecondTable to first Table that be NORMAL and best choice.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于您的情况,至少有三种方法可以做到这一点。您选择的方式取决于您尚未告诉我们的信息。
选择之前请仔细考虑。事实上,您问这样一个非常基本的问题表明您可能在实施过程中犯错误。 (这是一个观察,而不是批评。)首先处理数据库的临时副本。期望摧毁它。
第二个表中的第一个表。那
表示为 Key_F2 添加一列
SecondTable,用以下内容填充它
正确的数据,丢弃旧的
约束,并添加一个新约束,
其中将包括一个类似的子句
外键(Key_F1、Key_F2)
。引用 FirstTable (Key_F1,
Key_F2)
FirstTable.Key_F1。然后你可以添加
SecondTable 的新约束
其中将包括一个类似的子句
外键 (Key_F1) 引用
。当然这个第一个表(Key_F1)
仅当值为
FirstTable.Key_F1 是唯一的。
FirstTable.ID 中的值,以及
用右边填充该列
数据。然后你可以删除SecondTable.Key_F2列,并设置外键
从 SecondTable.ID 引用到
第一个表.ID。
There are at least three ways to do this in your case. The way you choose depends on information you haven't told us yet.
Think hard before you choose. The fact that you're asking such a very basic question suggests that you're likely to make mistakes in the implementation. (That's an observation, not a criticism.) Work on a scratch copy of your database first. Expect to destroy it.
FirstTable in SecondTable. That
means adding a column for Key_F2 in
SecondTable, populating it with the
right data, dropping the old
constraint, and adding a new one,
which will include a clause like
foreign key (Key_F1, Key_F2)
.references FirstTable (Key_F1,
Key_F2)
FirstTable.Key_F1. Then you can add
a new constraint to SecondTable
which will include a clause like
foreign key (Key_F1) references
. Of course thisFirstTable (Key_F1)
will only work if values in
FirstTable.Key_F1 are unique.
the value in FirstTable.ID, and
populate that column with the right
data. Then you can drop the column SecondTable.Key_F2, and set a foreign key
reference from SecondTable.ID to
FirstTable.ID.