我有一个映射表:
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; RelatedPhrases中有4个条目,其中RelatedPhraseId = 1。
答案 0 :(得分:1)
如果Phrase
表可以有多个具有相同PhraseID的行,则应该引入一个新表。例如:
create table PhraseIds (
PhraseId int primary key)
create table Phrase (
PhraseId int foreign key references PhraseIds,
WordId int,
[Order] int,
primary key (PhraseID, WordId))
create table RelatedPhrases (
RelatedPhraseId int primary key,
PhraseId int foreign key references PhraseIds(PhraseID))
答案 1 :(得分:0)
您可以检查触发器中是否存在记录.. 只是不要忘记表现。