Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 多对一关系能否在逻辑ER图中表示?_Mysql_Sql_Database_Entity Relationship_Erd - Fatal编程技术网

Mysql 多对一关系能否在逻辑ER图中表示?

Mysql 多对一关系能否在逻辑ER图中表示?,mysql,sql,database,entity-relationship,erd,Mysql,Sql,Database,Entity Relationship,Erd,我的作业中有一个特别的问题,如下所示: “组成一套产品的每个产品都由一个供应商提供,并有一个唯一的ID。产品总是作为一套产品的一部分销售,从不单独销售。” 基于此,假设许多产品创建一个包(aka set),但我不知道我是否正确,如果正确,我如何以ER图的形式直观地显示多对一关系 我已经构建了自己的概念和逻辑ER图,我只需要知道我是对还是错,这样我就可以继续剩下的 根据您的描述,您的模式将具有一对多关系,即您的单个包包含许多产品 你也可以找到你的ERD图,这是作业的细目和我从中得到的信息: 构成一

我的作业中有一个特别的问题,如下所示:

“组成一套产品的每个产品都由一个供应商提供,并有一个唯一的ID。产品总是作为一套产品的一部分销售,从不单独销售。”

基于此,假设许多产品创建一个包(aka set),但我不知道我是否正确,如果正确,我如何以ER图的形式直观地显示多对一关系

我已经构建了自己的概念和逻辑ER图,我只需要知道我是对还是错,这样我就可以继续剩下的


根据您的描述,您的模式将具有一对多关系,即您的单个包包含许多产品


你也可以找到你的ERD图,这是作业的细目和我从中得到的信息:

构成一套产品的每个产品都由一个供应商提供,并提供一个唯一的ID,。产品总是作为一套产品的一部分销售,而不是单独销售

从这一点,我得到了这些实体:

  • 产品
  • 供应商
  • 包装(套)
  • 您应该知道每个实体都需要自己的主键。专业人士要么称这个id,要么称为产品id。如果你将每个表的pk命名为“id”,特别是当它是一个简单的序列号时,有一些ORM最适合开箱即用

    最好不要使用属性名。在sql中,人们坚持使用全大写或全小写命名,而不是camelcase。另外,我建议您不要仅仅因为价格属性在Package表中就将其命名为pPrice。只需将其命名为price,因为如果需要将其与其他包含price列的表区分开来,它可以称为Package.price

    重要的是要了解包装和产品之间的关系是多对多的

  • 一个产品可以是多个产品包的一部分
  • 一个包装可以包含许多产品
  • 为了为多对多关系创建实体,您需要一个位于两个表之间的表,该表中两个表都有外键。通常,人们会选择他们认为占主导地位的任何东西——我可能会使用包,并命名表“PACKAGE产品”来加强这张表让我把产品包装在一起并销售或分发它们的想法。
    PackageProduct
    --------------
    id (pk)
    package_id (foreign key to Package table)
    product_id (foreign key to Product table)
    
    您还需要一个供应商表,但您被告知包和供应商之间的关系是一个包可以有一个且只能有一个供应商

    这是代码:在供应商和包之间创建一对多关系。在执行此操作时,包中将包含一个外键,用于存储Supplier.id(或Supplier\u id)

    因此,要得出结论,您应该拥有以下实体(表):

  • 包装
  • 产品
  • 供应商
  • 包装产品
  • ERD

    这是一个用“关系”格式呈现的ERD,我发现它更具描述性,因为连接的许多方面都使用crowsfoot,所以它非常明显


    这并不是说它总是同一个包,所以一个产品可以包含在多个包中。它也可以是多对多吗?是的,我想是的。哦,非常感谢,我想我会切换到一对多。这种模式强制一个产品可以是一个包的一部分,并且只能是一个包的一部分。这将是非常不寻常的,除非这是一个被描述为需求的业务规则,否则我不认为这是对需求的正确解释。您似乎知道逻辑关系不同于物理模型。在逻辑模型中,两个实体之间可以存在多对多关系。对于物理关系,您需要实体/表以物理方式显示逻辑多对多。严格来说,您也可以在PackageProduct中使用package_id、product_id使用复合主键,但实际上最好让实体拥有自己的唯一键。如果出于任何原因您不想这样做,您应该从PackageProduct中删除id,并将product和package之间的关系更改为PackageProduct以进行定义。对于ERD,“定义”关系会导致外键成为连接到关系多个端的表主键的全部或部分