我有一个映射表,例如:怎么能一个多主键的一列被用作外键
english.Phrases (PhraseId int, WordId int, Order int)
Primary Key Clustered (PhraseId, WordId)
而另一个表:
english.RelatedPhrases (RelatedPhraseId int, PhraseId int)
如何设置外国使用PhraseId
的2个表之间的关键关系?
编辑回答评论哪个数据库: 我使用的是Microsoft SQL 2008,因此我更改了标记。
映射应该如下;考虑下面的语句:
1. "turn out to be", phraseId of 1
2. "grow to be", phraseId of 2
3. "turn into", phraseId of 3
4. "come to be", phraseId of 4
每个字有以下表中的条目:
english.Words (WordId int, Word varchar(20))
的english.Phrases表中是否有“变成是”下面的条目:
(1, @word1Id, 1) @word1Id = id of 'turn'
(1, @word2Id, 2) @word2Id = id of 'out'
(1, @word3Id, 3) @word3Id = id of 'to'
(1, @word4Id, 4) @word4Id = id of 'be'
现在,我想要从english.RelatedPhrases表中得到PhraseId为1,代表“结果是”,与其他短语相关,比如在这种情况下,2,3和4;所有相关关键词中的4个条目的RelatedPhraseId = 1。
通常情况下,您不能将外键设置为(完整)主键以外的任何其他键。你使用的是哪个数据库? –
那究竟是什么映射?无论wordid与所有PhraseB有关吗?重新思考你的模式 –
@JoachimIsaksson IIRC根据数据库你也可以指向一个完整的唯一索引 – Luis