sql - 数据库设计: please help me to understand relationship types

标签 sql database-design

我正在使用 DBDesigner Fork 为社交网络网站设计数据库,我需要帮助来理解关系类型...我真的很困惑在每种情况下应该使用哪种类型。

这些类型:1:1、1:n、1:n(非识别)、n:m、1:1(后代对象)、1:1(非识别)

您能为我提供一个简短的解释和每种情况的实际示例吗?

最佳答案

存在与数据库本身直接相关的三种基本类型:

  • 1:1 - 一对一
  • 1:n - 一对一
  • n:m - 多对多

实际上,这些又可以归结为两个问题 - 外键是否存在于子表中 (1:*),或者是否需要一个中间表 (n:m)。

一对一是直接的。它通常用于子类型。给定两个表:

person
    id int NOT NULL
    name varchar(255) NOT NULL


parent
    id int NOT NULL
    person_id int NOT NULL
    spouse_id int NULL

有两种关系 - 1:1身份( parent 是一个人)和非身份( parent 可以有配偶)。现在,更进一步:

children
    person_id int NOT NULL
    parent_id int NOT NULL

“ child ”表是将“ parent ”映射到“个人”表以关联子对父、多对多关系的一种方式。

此外,在此示例中,“父对象”将是“person”的后代对象 - 因为它扩展了 person。大多数后代对象关系都是非标识性的。

关于sql - 数据库设计: please help me to understand relationship types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125591/

相关文章:

sql - 如何使用vbscript捕获SQL错误

mysql - 用户、游戏、历史关系的数据库架构

php - 冗余数据总是不行吗

Sqlmap流量抓包

javascript - 用于在 SQL 中插入多行的循环

mysql - sql获取不同记录

php - SQL IF 语句与 PHP 变量

database - 我应该如何拆分数据库?

mysql - 设计需要包含配料和子食谱的食谱数据库

database - 固定大小数组数据库字段