database - 表与许多表具有一对一关系

标签 database one-to-one

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/

相关文章:

performance - JPA @OneToOne 选择带有 N+1 个查询的列表

mysql - 只保留实体 id 而不是 Set<Entity> 来减少连接操作是个好主意吗

objective-c - 优化数据库调用

mongodb - 以下和提要的mongodb设计,我应该在哪里嵌入?

java - 如何使用 @OneToOne 关系同时持久化两个实体?

mysql - hibernate OneToOne 关系中的未知mappedBy

database - sails .js : Is Waterline ORM safe without foreign key constraints?

SQL数据库设计建议: Naming a database table

python - 为具有 OnetoOne 关系的 Django 模型创建工厂

symfony - Doctrine OneToOne 删除实体