Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在RDBMS中发现关系?_Mysql_Sql Server_Postgresql_Relational Database_Relationship - Fatal编程技术网

Mysql 如何在RDBMS中发现关系?

Mysql 如何在RDBMS中发现关系?,mysql,sql-server,postgresql,relational-database,relationship,Mysql,Sql Server,Postgresql,Relational Database,Relationship,我在研究关系型数据库中的关系。我已经理解了映射关系背后的基本概念,但我无法发现它们 三种可能性: 一对多(最常见)需要PK-FK关系SIP。涉及两个表 多对多(不太常见)需要一个连接表。涉及三个表 一对一(非常罕见)。涉及一张桌子 当我开始一个项目时,我无法区分前两个条件,我的头脑也不清楚。 当我学习的时候,举个例子会有短暂的帮助,但当我需要把这些原则付诸实践的时候就没有了 这是大多数初出茅庐者踌躇不前的地方。 我如何发现这些关系。有一种更简单的方法吗?< /P> < P>假设你有两个表A和B。

我在研究关系型数据库中的关系。我已经理解了映射关系背后的基本概念,但我无法发现它们

三种可能性:

  • 一对多(最常见)需要PK-FK关系SIP。涉及两个表
  • 多对多(不太常见)需要一个连接表。涉及三个表
  • 一对一(非常罕见)。涉及一张桌子
  • 当我开始一个项目时,我无法区分前两个条件,我的头脑也不清楚。 当我学习的时候,举个例子会有短暂的帮助,但当我需要把这些原则付诸实践的时候就没有了

    这是大多数初出茅庐者踌躇不前的地方。
    我如何发现这些关系。有一种更简单的方法吗?< /P> < P>假设你有两个表A和B。考虑A的条目,并考虑B最多可能有多少个条目:只有一个或多个?然后从B中考虑一个条目,并考虑一个与它相关的条目。p> 一些例子:

    表A:母亲,表B:儿童。每个孩子只有一位母亲,但一位母亲可能有一个或多个孩子。母亲和孩子有一对多的关系


    表A:医生,表B:患者。每位患者可能会拜访一名或多名医生,而每位医生会治疗一名或多名患者。所以他们有一个强>多对多/ <强>关系。

    < P>假设你有两个表A和B。考虑A的条目,并考虑到B有多少条目可能最多相关:只有一个,或更多?然后从B中考虑一个条目,并考虑一个与它相关的条目。p> 一些例子:

    表A:母亲,表B:儿童。每个孩子只有一位母亲,但一位母亲可能有一个或多个孩子。母亲和孩子有一对多的关系


    表A:医生,表B:患者。每位患者可能会拜访一名或多名医生,而每位医生会治疗一名或多名患者。所以他们有一种多对多的关系。

    不要从技术角度看待关系。当你试图在脑海中想象人际关系时,使用类比和现实生活中的例子

    例如,假设我们有一个图书馆数据库。 图书馆必须有本书

    M:M 每本
    可能由多个
    作者撰写
    ,而每个
    作者
    可能撰写了多本
    。因此,它是一种多对多关系,将反映到数据库中的3个表中

    1:M 每本
    书籍
    还必须有一个
    出版商
    ,但是
    书籍
    只能有一个
    出版商
    ,而
    出版商
    可以出版多本
    书籍
    。因此,这是一种一对多关系,它反映在
    Books
    表中引用的
    PublisherId


    像这样一个简单的类比解释了它们与核心的关系。当你试图从技术的角度来看待他们时,你只会让自己更难接受。实际困难的是在构建数据库时应用真实世界的数据场景。

    不要从技术角度看待关系。当你试图在脑海中想象人际关系时,使用类比和现实生活中的例子

    例如,假设我们有一个图书馆数据库。 图书馆必须有本书

    M:M 每本
    可能由多个
    作者撰写
    ,而每个
    作者
    可能撰写了多本
    。因此,它是一种多对多关系,将反映到数据库中的3个表中

    1:M 每本
    书籍
    还必须有一个
    出版商
    ,但是
    书籍
    只能有一个
    出版商
    ,而
    出版商
    可以出版多本
    书籍
    。因此,这是一种一对多关系,它反映在
    Books
    表中引用的
    PublisherId

    像这样一个简单的类比解释了它们与核心的关系。当你试图从技术的角度来看待他们时,你只会让自己更难接受。实际困难的是在构建数据库时应用真实世界的数据场景。

    一对一的示例: 车牌到车辆。一个牌照属于一辆车,一辆车有一个牌照。

    一对一的示例:
    车牌到车辆。一个车牌属于一辆车,一辆车有一个车牌。

    我认为你没有得到你需要的答案的原因是因为你对问题的理解方式。不要问“我如何发现实体之间正确的关系类型”,而是思考“我的功能需求如何决定要实现什么关系”。数据库设计不驱动功能;正是功能需求驱动了您需要实现的关系

    设计数据库结构时,需要标识所有实体。实体是你想存储的所有事实:书名、发票、国家、狗种等东西的列表。然后识别你的关系,你必须考虑你想问你的数据库的问题类型。有时候需要一点前瞻性思考……仅仅因为现在没有人问这个问题并不意味着永远不会有人问这个问题。所以你不能问宇宙“这些事实列表之间的关系是什么?”因为没有明确的答案。你定义了宇宙……我只想知道这些问题的答案;因此,我需要使用这种类型的关系

    让我们检查两个常见实体之间的关系示例:客户表和门店位置表。没有