Mysql 如果两个字段都不唯一,是否可以创建外键?
我正在考虑创建以下2个数据库表: 问题表:Mysql 如果两个字段都不唯一,是否可以创建外键?,mysql,database-design,Mysql,Database Design,我正在考虑创建以下2个数据库表: 问题表: QuestionId(PK) QuestionNo QuestionContent SessionId (FK) 11 1 Question1 3 12 2 Question2 3 13 3 Question3 3 形象问题 ImageId (PK) Ses
QuestionId(PK) QuestionNo QuestionContent SessionId (FK)
11 1 Question1 3
12 2 Question2 3
13 3 Question3 3
形象问题
ImageId (PK) SessionId (Fk) QuestionNo (FK)
1 3 1
2 3 2
由于我设置图像上载的方式,用户可以在问题提交到db之前将图像上载到问题,因此确定图像在我的html中属于哪个问题的唯一方法是使用html中的问号来知道哪个问题上载了图像文件,因为在提交页面之前不会输入问号
我的问题是,是否可以将两个非唯一字段作为外键
另外,如果我只是将SessionId单独设置为(FK),如果QuestionNo允许(FK),那么它是单独设置的,因为有多个会话具有相同的QuestionNo
,如果我单击上面的QuestionNo
,它可以在包含该QuestionNo
的所有会话中显示相同QuestionNo
的行
我的另一个问题是如何组合
SessionId
和QuestionNo
(FK),这样如果我在QuestionNo
下搜索,它会在相关的SessionId
中搜索该QuestionNo
?如果我点击SessionId
,它会显示该SessionId
的详细信息,这样就可以了。我发现你的问题有点难以理解,但据我所知,你使用QuestionNo作为临时标记,将几个http请求链接在一起(图像上传+问题帖子)
我建议如下:
SessionQuestionToken
{
Token
SessionId
}
Image
{
ID
QuestionId FK references Question(Id)
ImageName
}
Question
{
Id
Content
}
TempImage
{
Token FK references SessionQuestionToken(token)
ImageName
}
逻辑是这样的:
至于外键是否仍然可以引用非唯一列的问题,答案是肯定的。您可以引用表中的多个外键。只需确保您的主键是唯一的