标签: erd

ERD图中的继承关系

我对 ERD 图中的继承表示有疑问。下面的例子:我有飞机,我也有两种类型的飞机 1-PersonsPlane 2-CargoPlane 我对使用哪种关系感到困惑(1-to-1 OR 1-to-Many)。我的 DB 老师告诉我应该使用 1 对 1 关系,但是我在互联网上发现许多示例使用(1 对多)关系而不是(1 对 1)关系。检查这些图像:

一对一关系 一对一关系

一对多关系 一对多关系

哪一个是正确的??

database erd mysql-workbench

7
推荐指数
2
解决办法
2万
查看次数

保存图失败了!验证Graphviz是否已安装在路径中,或使用filetype = dot

当我跑步时,rake db:migrate我得到这个错误

rake aborted!
Saving diagram failed!
Verify that Graphviz is installed and in your path, or use filetype=dot.
Run Code Online (Sandbox Code Playgroud)

完整日志:

rake db:migrate
Loading application environment...
Loading code in search of Active Record models...
Generating Entity-Relationship Diagram for 20 models...
rake aborted!
Saving diagram failed!
Verify that Graphviz is installed and in your path, or use filetype=dot.
/home/bcc/.rvm/gems/ruby-2.2.3/gems/rails-erd-1.4.5/lib/rails_erd/diagram/graphviz.rb:207:in `rescue in block in <class:Graphviz>'
/home/bcc/.rvm/gems/ruby-2.2.3/gems/rails-erd-1.4.5/lib/rails_erd/diagram/graphviz.rb:198:in `block in <class:Graphviz>'
/home/bcc/.rvm/gems/ruby-2.2.3/gems/rails-erd-1.4.5/lib/rails_erd/diagram.rb:142:in `instance_eval'
/home/bcc/.rvm/gems/ruby-2.2.3/gems/rails-erd-1.4.5/lib/rails_erd/diagram.rb:142:in `save'
/home/bcc/.rvm/gems/ruby-2.2.3/gems/rails-erd-1.4.5/lib/rails_erd/diagram.rb:120:in `create'
/home/bcc/.rvm/gems/ruby-2.2.3/gems/rails-erd-1.4.5/lib/rails_erd/diagram.rb:74:in `create'
/home/bcc/.rvm/gems/ruby-2.2.3/gems/rails-erd-1.4.5/lib/rails_erd/tasks.rake:41:in `block (2 levels) …
Run Code Online (Sandbox Code Playgroud)

ruby erd ruby-on-rails graphviz ruby-on-rails-4

7
推荐指数
2
解决办法
3531
查看次数

Neo4j - 是否可以直观地概述我的数据库?

我有我的图形数据库,填充了节点,关系,属性等.我希望看到整个数据库如何连接,每个节点的每个关系,节点的属性等的概述.

我并不是指查看每个单独的节点,而是来自关系数据库的ERD,类似这样的节点标签.这可能吗?

在此输入图像描述

diagram erd visualize neo4j

7
推荐指数
3
解决办法
3539
查看次数

需要数据库设计指导

一位兼职漫画家的奶农也有几头奶牛.他将每头牛分配给一个特定的牛群.在每个牛群中,农民都有一头他最喜欢的牛 - 通常是牛在动画片中的特色.每个牛群中的一些不满,主要是那些认为应该出现在卡通片中的人,不同意农民对最喜欢的牛的选择,他们贬低地称之为神圣的牛.结果,每个牛群现在都选出了一个牧群领袖.

这就是我认为表格应该是什么样的,如果可以做得更好,你可以告诉我吗?到目前为止,我正在使用喜欢的表做多对多,因为中间是这是最好的解决方案,也不需要SQL语句这只是出于设计目的.

先感谢您

Table Herd           Table Favorite               Table Cartoon   Table Cow
PK herdID          Intermediate Table             PK cartoonID     PK cowID
   herdname                                          cartoonTitle     cowName
   herdleader                                        cartoonType
                                                     cartoonDate
Run Code Online (Sandbox Code Playgroud)

编辑图片@ 3:01 pmEST这是对的吗?

cowErd http://img838.imageshack.us/img838/1268/capture3h.png

添加了新的图像@ 8:57 am 7/20/2010可以有人评论这个ERD请 Erd2 http://img37.imageshack.us/img37/5794/capture3fc.png

添加新图片@ 12:47 pm 7/20/2010除非有任何异议,这是每个Mark的解释标记ERD的最终草案 http://img651.imageshack.us/img651/691/capture4b.png

sql database database-design erd

6
推荐指数
1
解决办法
914
查看次数

当我们需要在数据库设计中使用一对一关系时?

我们什么时候需要在数据库设计中使用一对一的关系?在我看来,如果两个表是一对一的关系,它们可以组合成一个表.这是真的?

database database-design erd

6
推荐指数
1
解决办法
1171
查看次数

避免循环依赖

我正在开发旅行管理应用程序.有问题的设计如下:

旅游中的每个人都被指定为旅行者.每位旅行者都有护照.现在,旅行者可以是主会员或子会员,具体取决于他是否是家庭主管.MainMember决定像TourPackage这样的东西,他的旅行家庭的总金额等.一个SubMember在旅行时依赖于MainMember.因此,如果删除了MainMember,则还必须删除其所有子成员.

所以,旅行者有护照.(一对一关系)旅行者是主会员或子会员.(Traveler-MainMember和Traveler-SubMember之间的一对一/一)MainMember可能有几个SubMembers.(一对多)子成员只有一个主要成员.(多到一个)

我目前的ERD如下.

旅行者ER图

如您所见,三个表 - Traveler,MainMember和SubMember - 形成了循环依赖.不过,我不确定它是否会伤害我的应用程序.如果我删除作为MainMember的Traveler,则1.删除Traveler中的记录.2.删除其相关的MainMember记录.3.删除依赖于MainMember的SubMember记录.4.删除子成员的旅行者记录.

虽然它似乎不是问题,但由于Traveler-MainMember删除将始终只删除Traveler-SubMember(s).不过,我对此感觉不好.

任何人都可以指导我更好的设计吗?

更新 -

在等待回复的同时,我根据@ Daveo的回复提出了另一种设计.基本上,Traveler包含自引用外键.SubMember记录将使用它来识别他们的父母.

这是ERD.

ERD与自我参考表

现在,正如@Branko指出的那样,我之前的设计中没有循环依赖问题,我想知道哪种设计更好?

另外,通过Hibernate实现哪种设计会更好?我认为第二种方法可能会在通过Hibernate实现时导致复杂性.

我还要感谢关于您喜欢的设计的实现模式(Hibernate实体中的继承等)的一些指示.

database-design erd circular-dependency hibernate-mapping class-table-inheritance

6
推荐指数
1
解决办法
6379
查看次数

如何使用phpmyadmin创建ERD

是否可以使用phpmyadmin创建ERD?

我看到人们发布以下链接:http://goo.gl/0z3vFE

但这对我不起作用,由于某些原因我在"更多"菜单中没有这个选项.

谢谢!

erd phpmyadmin

6
推荐指数
1
解决办法
2万
查看次数

为什么需要在 ERD 中指明识别或非识别关系?

在 ERD 中,弱/非识别关系是连接两个强实体的关系,用虚线表示。强/识别关系是一种将强实体连接到弱实体的关系(弱实体是一种包含来自其相关实体的外键 [FK] 作为其自己的主键 [PK] 的组成部分),并被指示用实线。

我的问题是,那又怎样?为什么区分弱/非识别关系与强/识别关系如此重要,以至于 ERD 设计者应该分别用虚线和实线进行区分?为什么这么重要?

对我来说,ERD 中的每个元素和约定都应该添加必要的信息,这些信息要么直接转换为数据库设计(即 DDL SQL 语句),要么至少解释重要但不一定明显的信息(以及最后一种情况的示例)将命名关系 - 它们不会转换为 SQL,但它们对于理解 ERD 非常有用)。为了讨论起见,这是一个示例 ERD(从另一个 StackOverflow 问题修改而来):

样品ERD

我已经考虑了很多,对我来说,实线与虚线添加的唯一信息已经在以下约定中得到充分传达:

  • FK 是否是实体 PK 的一部分(示例 ERD 中的 PK,FK1 或 PK,FK2)。
  • FK 是必需属性(粗体)还是可选属性(非粗体)。

据我所知,实线与虚线的关系线没有增加额外的有用信息。这种约定不是添加信息,而是不直观且非常混乱。作为它们造成的混淆的一个例子,StackOverflow 上有许多重复的问题,询问哪个是哪个;这里只是几个例子:

任何人都可以向我解释约定添加的哪些附加信息不包含在 FK 可能是也可能不是 PK 的一部分这一事实中?我正在认真考虑完全忽略约定(也就是说,我想开始用所有实线绘制我的 ERD),但如果有人能指出我忽略的重要内容,我将不胜感激。

database-design erd foreign-keys composite-primary-key

5
推荐指数
1
解决办法
4958
查看次数

如何以图形方式表示 SQL 查询

我有一个 SQL Select 查询,表之间有很多连接,我想知道哪种图表可以以图形方式表示它,以便可视化表及其类型之间的连接(区分 INNER 和 LEFT)?

我做了这个简单的模式来表示我的查询,但我正在寻找一种已知的更好类型的图表:

在此处输入图片说明

sql database-design erd

5
推荐指数
0
解决办法
2294
查看次数

如何在数据库 ERD 中模拟钻石般的多对多关系

组织 ID 作为外键 organization_id 作为主键

传奇:

  • PK(蓝色):主键
  • FK(绿色):外键
  • PFK(蓝色):同时主键和外键

如何模拟类似钻石(如果术语正确)的关系?最好用一个简化的例子来解释:

organization,itemtag实体。

我的目标是建模:

  1. 每一个tag都是独一无二的,属于一个组织。
  2. 每一个item都是独一无二的,属于一个组织。
  3. 项目有许多标签(使用 M2M 表连接)并且相关tag/item对必须属于同一组织。(即来自组织 A 的项目不能与来自组织 B 的标签配对)

我绘制了两种替代解决方案,但没有一个让我满意。

图1个断裂第三目标itemstags使用是自己唯一id的主键,但没有什么可以阻止插入到对item_tag属于不同的组织。

图2不破,但弯曲第一和第二目标organization_id加入作为主键和外键itemtag表和item_tag.organization_id列引用两者。这可以防止来自不同组织的配对。tag.idanditem.id列现在是不必要的复合主键的一部分,因为实际上单列id表示itemand 的唯一性tag

我如何正确地为这些需求建模?

mysql postgresql database-design erd database-diagram

5
推荐指数
1
解决办法
483
查看次数