代码之家  ›  专栏  ›  技术社区  ›  Patricia Rozario

数据库设计确保一对一关系

  •  0
  • Patricia Rozario  · 技术社区  · 6 年前

    我试图理解数据库设计中类表继承的局限性。例如,如果我有这样一个模式,如何确保school field表或non-profit表中的多行不引用相同的联系人id

    Contact
    --------
    id - PK 
    fname - String
    lname - String
    email - String
    
    School Field
    --------------
    id - PK
    contact_id - FK
    notes - String
    
    Non Profit Field
    -----------------
    id - PK
    contact_id - FK
    donation - unsigned int
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   dfundako    6 年前

    我建议采用不同的方法。

    Entity
    -------------- 
    id - PK 
    Field_Type_ID - FK 
    contact_id - FK 
    notes - String
    donation - unsigned int (nullable)
    
    Contact
    -------------- 
    id - PK 
    fname- String
    lname- String
    email- String
    
    Field_Type
    -------------- 
    id - PK 
    Description- FK 
    notes - String
    

    这样,如果最终得到更多的“字段”类型,就不需要添加更多的表。您只需在Field\u Type表中添加一条新记录。然后,为了实施所需的行为,您在实体上添加了一个唯一的约束,该约束同时查看contactID和FieldTypeID。这将确保每个联系人只能链接到字段类型一次。

    https://www.w3schools.com/sqL/sql_unique.asp