代码之家  ›  专栏  ›  技术社区  ›  Shuo

如何在数据库设计中表示一对一的关系?

  •  1
  • Shuo  · 技术社区  · 15 年前

    假设我有两个班 Laptop Lcd . 现在假设每个笔记本电脑只能有一台 液晶显示器 和一个 液晶显示器 只能安装在一个 笔记本电脑 任何时候。我们还假设 液晶显示器 可以从其中删除 笔记本电脑 安装在另一个。所以这是一对一的联系 笔记本电脑 液晶显示器 .

    现在的问题是,如何为这个一对一关系设计DB模式?

    非常感谢,

    布莱恩

    3 回复  |  直到 15 年前
        1
  •  4
  •   Adam Robinson    15 年前

    最简单的建模方法是将一个外置键放在LCD表中,该表链接回笔记本电脑表。使该列不可为空且唯一。

    Laptop
    -------------
    LaptopId (PK)
    ...
    
    LCD
    -------------
    LCDId (PK)
    LaptopId (FK, Non-null, Unique constraint)
    

    (同样值得注意的是,同样的方法也会在另一方面起作用——与 Laptop 具有不可为空的唯一外键的表 LCD 表)。

        2
  •  1
  •   srkiNZ84    15 年前

    这可以通过在笔记本电脑桌上有一个指向LCD桌上的主键的外键来实现。主键通常是一个自动递增的整数,并确保表中的每一行都是唯一的。

        3
  •  0
  •   Charles Hooper    15 年前

    您只需在 laptop 引用其 lcd 的主键 没有 联接表。

    您没有指定要使用的数据库软件,但在MySQL中,这看起来像这样:

    CREATE TABLE laptops (
     id INTEGER NOT NULL AUTO_INCREMENT,
     lcd_id INTEGER,
     PRIMARY KEY (id)
    )
    
    CREATE TABLE lcds (
     id INTEGER NOT NULL AUTO_INCREMENT,
     PRIMARY KEY (id)
    )