数据库
首页 > 数据库> > mysql – 我的ER图是否正确?为何使用关系?

mysql – 我的ER图是否正确?为何使用关系?

作者:互联网

这是我第一次为将构建在MySQL上的数据库制作实体关系图(ERD).相关的业务领域是关于设备问题管理.

在此之前,我永远不会在表之间创建关系,我只是在MySQLAdmin中创建表并在我的PHP / MySQL代码中进行链接.

我有理由建立这些关系吗?

我已经阅读了很多关于数据库设计和关系的信息.

我想确定我创建的ERD是正确的;我犯了错误吗?或者有更好的方法来做到这一点?

正在考虑的ERD

我的数据库应该做什么:

>我有一个可以创建票证的用户(用户)列表(issue_tickets).
>他们会给出问题的描述,也许会添加一些文件(issue_files).
>然后将附加其他用户(issue_watchers)来解决问题.
>所有用户(用户)都可以对故障单(issue_tickets)发表评论.
>票证(issue_tickets)一次只有一个状态(issue_status).
>票证(issue_tickets)只有一个类别(issue_category).
>票证(issue_tickets)可以有很多评论(issue_comments)和许多观察者(issue_watchers)
>票证(issue_tickets)只有一个用户(用户)创建了票证.
>票证(issue_tickets)仅适用于一个设备(设备).
>用户可以创建许多票证
>一个设备可以有很多门票

解决方法:

期望从应用程序维护PK / FK关系是一种非常糟糕的做法.在任何非常重要的数据库中,数据有100%的可能性从其他来源(包括即席查询,数据导入等)进行更改.认为数据库中的数据受到保护是不负责任的,因为应用程序具有保护功能.当然,您认为您将通过网络服务或其他方式强制进行所有更改,但实际情况是,没有人会从您刚刚购买的公司添加一百万条新客户记录,一次通过一项服务添加一条记录.您的数据库必须设计为考虑到人们将直接在源或其他应用程序(其中一些可能无法使用您的Web服务)更改它的事实.此外,应用程序界面通常比数据更容易被丢弃或重新设计,当发生这种情况时,您可能会丢失所有或部分数据完整性规则.在设计数据库时,您必须考虑如何随着时间的推移保护数据,而不是考虑程序员或初始应用程序最简单和最方便的数据.数据专业人员在数据库中设置PK / FK关系,因为这是数据所在的位置,并且是设置它以保护数据质量的最佳位置.

我看到当前位置上来自很多不同公司的数据,我看到太多没有在数据库中设置PK / FK关系的数据,因为它们存在正确设计的数据库不具备的数据完整性问题.

标签:mysql,database-design,mysql-workbench,erd,database-diagrams
来源: https://codeday.me/bug/20190806/1595956.html