表与许多表具有一对一的关系

Roo*_*bah 3 database one-to-one

1)表格可以与多个表格保持一对一的关系!

为了澄清更多,如果我想进行插入,第一个表将受到影响,其他表中只有一个会受到影响.

2)如果是这样,主键将如何?

3)此外,如果我想从这些表中检索大量记录,查询会是什么样子?

谢谢 .

Tho*_*mas 6

表格可以与多个表格保持一对一的关系!

是的,如果你真的是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 )
    ...
    )
Run Code Online (Sandbox Code Playgroud)

此设置需要先在父表中输入一个值,然后再输入子表(无特定顺序).此外,您可以将一个值添加到其中一个子表而不是另一个,因为它们都只依赖于父表中存在的值而不是彼此.


加成

要从子表中进行选择,它将涉及与任何其他父子关系相同的过程.例如:

Select P.Col1, P.Col2...
    , Child1.Col1, Child1.Col2...
From Parent
    Inner Join Child1
        On Child1.FKCol = Parent.PKCol
Run Code Online (Sandbox Code Playgroud)

通过在这里使用内部联接,我只返回存在子行的父行.如果您想要所有父行以及只有那些匹配的子行,您将使用左连接而不是内连接.如果要同时从多个子表中选择数据,可以在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
Run Code Online (Sandbox Code Playgroud)