1) 一个表可以和多个表有一对一的关系吗!?
为了更清楚地说明,如果我想插入第一个表将受到影响并且 只有一个其他表会受到影响。
2) 如果是这样,主键将如何?
3) 另外,如果我想检索多条记录,查询会是什么样子 来自这些表?
谢谢。
最佳答案
Can a table have a one-to-one relationship with a number of tables !?
是的,如果你真的是说 1:0/1:
Create Table Parent
(
Id ... not null Primary Key
, ...
)
Create Table Child1
(
Id ... not null Primary Key
, Foreign Key ( Id ) References Parent ( Id )
...
)
Create Table Child2
(
Id ... not null Primary Key
, Foreign Key ( Id ) References Parent ( Id )
...
)
此设置需要先在父表中输入值,然后在子表中输入值(无特定顺序)。此外,您可以将一个值添加到其中一个子表而不是另一个,因为它们都只依赖于父表中值的存在,而不依赖于彼此。
添加
要从您的子表中进行选择,它将涉及与任何其他父子关系相同的过程。例如:
Select P.Col1, P.Col2...
, Child1.Col1, Child1.Col2...
From Parent
Inner Join Child1
On Child1.FKCol = Parent.PKCol
通过在此处使用内部联接,我只返回存在子行的父行。如果您想要所有父行并且只需要那些匹配的子行,您可以使用 Left Join 而不是 Inner Join。如果你想同时从多个子表中选择数据,你可以简单地将它们包含在 From 子句中:
Select P.Col1, P.Col2...
, Child1.Col1, Child1.Col2...
, Child2.Col1, Child2.Col2...
, Child3.Col1, Child3.Col2...
From Parent
Left Join Child1
On Child1.FKCol = Parent.PKCol
Left Join Child2
On Child2.FKCol = Parent.PKCol
Left Join Child3
On Child2.FKCol = Parent.PKCol
关于database - 表与许多表具有一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5750456/