马列矛盾理论告诉我们:数据库设计就是‘主体’和‘关系’的设计

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySql 官方工具 WorkBench 设计数据库要点分析太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

MySql 官方工具 WorkBench 设计数据库要点分析

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。



巧妇难为无米之炊,研究这些内容,我们得先有 MySql 和 WorkBench,下面就在 www.gfsoso.com 搜一下 mysql 关键字吧!

第一项就是

MySQL :: MySQL Community Downloads


幸好 MySql 落入 Oracle 的怀抱之后,还能一如即往地弄个社区版,这也看得出社区对开源的贡献力量有多么大。

废话不多说,下面贴出来 MySql 和 WorkBench 的下载链接,当然了,还是得继续点下去的,要有心理准备噢,很慢很慢地:

  • MySQL Community Server (GPL)
    (Current Generally Available Release: 5.6.21)
    MySQL Community Server is the world's most popular open source database.DOWNLOAD
  • MySQL Workbench (GPL)
    (Current Generally Available Release: 6.2.4)
    MySQL Workbench is a next-generation visual database design application that can be used to efficiently design, manage and document database schemata. It is available as both, open source and commercial editions.DOWNLOAD
晚上休息时待续。。。

MySql 的搜狐镜像站:

http://mirrors.sohu.com/mysql/

Android 的东软镜像站:

http://mirrors.neusoft.edu.cn/android/repository/

这个镜像站是从 这里 翻出来的,一个一个地翻的确费了不少事儿。

由此也明白了东软镜像代理的来由:

你可以把 mirrors.neusoft.edu.cn 作为代理,指定给 Android SDK Manager 的代理,那下载速度就可想而知了,不信那就试试:


好像没有办公室快,4M 联通宽带要 22分钟更新完 4.4.2 的 SDK 包,办公室的电信光纤,早上没上班时,更新同样的 SDK 只需要不到 10 分钟。

---------------------


以下一大堆图,还没来得及整理,大致过程中截到的图都有了

可以这么说,数据库设计与数据库管理是两个层次上的事儿,

知道咋建表,但并不一定知道咋设计,如有哪些字段、主键、外键、索引等等,这些都要考虑实际业务需求。


不过,总结起来,数据库设计就涉及到两个对象

1、实体对象,如人、商店、货车;

2、关系对象,如人顾了货车拉货,这是一个顾佣关系;人从商店买东西,这是一个买卖关系;货车给商店送化,这是一个服务关系;

                        如人有档案,档案其实是一个实体,但它属于某个人,这种关系,不体现在表,而是一个外键字段的增加;


关系对象又分为:静态依存关系与动态作用关系;

静态依存关系,如学生档案,依存于学生存在;

动态作用关系,如顾客买商店的东西;

有些可以是静态关系,也可以是动态关系,比如,学生上学,学生属于这个学校,是一种静态关系,而学生到这所学校就读,算是一种动态关系;

还有一种,就是课外学校,一个学生可以在多所课外学校学习,而一所课外学校,可以有很多学生,这是一种交叉的作用关系,而非依存关系;

                        

实体用表存储实体的特性;

关系也用表存储关系的特性,以及关系的双方的载明;


除了这些,数据库设计最主要的东西,还有什么?!可能都是边边角角不常用的了吧,即或也很重要!。。。

上面插了一段,接下来转入正题,这周末也只能写点儿这个了,至于 MyBatis 和 MyBatis-Spring 还需要进一步研究细节,以便能说得清楚,虽然已经能正常构建出可用的环境了。

Mysql Workbench 上面有镜像站,自个儿下载安装吧,无论是 Mac 版,还是 Windows 版,或者 Linux 版(好像 Unix 没人用了?!),

基本差不多,我这里以 Mac 版来描述说明:

1、新建设计模型


点按那个 New Model ,如下:


我们暂时只关于中间部分:




































由以上可知,在这个 Model 当中,包含两部分内容:

1、物理方案管理(方案在 Oracle 和 Mysql 中使用,其实就是数据库,当然了,数据库和数据库实例是不同的,一个是存储,一个是存储守护进程)

      以及每个方案下的表、视图、函数、函数组、方案下用户、角色、SQL 脚本等;

2、这些表和视图等之间的关系,即 EER Diagram

      在物理方案管理中创建的表、视图等会自动带到新建的 EER Diagram 列表中,实际是一回事儿,只不过不会在 EER Diagram 图上显示,但可拖上去;

      在 EER Diagram 图上拖动建立的表等,会自动在物理方案管理中生成,其实两者都有同一个物理管理的功能;


那么为什么还要 EER Diagram 呢?

因为表是孤立的,要表明表之间的关系,光靠表中创建的外键,并不形象,那么在 EER Diagram 中拖动拖线来关联,才表示得清晰;

另外,外键不需要你手动去建,建表只需要管好自已,外键是靠建立表间关系时自动创建的。

再有,基本属性表之间建立的关联关系,其实代表着一个表,比如顾客和商店,一个顾客可能买过多个商店的物品,而一个商店可能卖给过多个顾客,

这就没办法通过简单的外键来关联了,而是两者之间产生的交易记录,这个得有一个表来存储才行。

其实,这个表也是不用建的,关系表,不是基本属性表,它是一种关系关联产生的:


中间的那个由两个标识外键组成的表,就是关系表,我并没有建它,而是通过建立关系,自动生成的。

所以说 Mysql Workbench 把这种复杂的数据库设计中的关系,简化到如此地步,可想而知,花费了多少心思,不是往大了整,而是往小了整,仅取常用的,就像 MyBatis 一样,现在简化得,我用它,都不知道是在用它,简化到了极至,而且都是常用功能,稍复杂的,都摒弃,这就是当年俺研究完 Hibernate 之后,立马放弃,自已用 SqlHelper 来操作数据库一样。当年的 iBatis 研究完之后,俺就一直在等它完善,不光是操作上,尤其是性能处理上,现在它做到了,并且取了个大名儿,登堂入室了,叫 MyBatis。


闲话不多说,回归正题,数据库设计中一定要找好两样东西,基本个体和个体间的关系。

你能造出来的表,是静态的个体表,你造不出来的是个体表间的关系,那是动态的,当产生关系后,你可以在这关系上完善一些信息,比如哪天买的,买了多少东西,付款方式,等等。至于个体之间的关系,谁主谁次,这个倒无所谓了,那是站的角度不同,把一个同样的东西看出了两样而已,我买你的东西,跟你卖给我东西,这个区别,不在特定领域,并不会有差别。


你会发现,关系表中以产生关系的个体表的主键联合起来作为主键。

有时会觉得这样用两个会显得麻烦,那么我们给关系表再建个自增加的主键。



在实做过程中,新建的 id 行会排在最后,这时你是无法设定 AL 自增加属性的,需要把它移到第一行。

而且你也会发现,每一个实体表的主键都是  id,但当通过关系加入到其它个体表,或关系表中时,自动加上了表名_id,这个很人性化吧。







相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
SQL 数据库
SQL主体内容一致,但是对于不同的数据库,对于SQL就可能有一些细节的拓展
SQL主体内容一致,但是对于不同的数据库,对于SQL就可能有一些细节的拓展
77 1
|
SQL 数据库
《SQL与关系数据库理论——如何编写健壮的SQL代码》一3.4 关系及其主体
本节书摘来华章计算机《SQL与关系数据库理论——如何编写健壮的SQL代码》一书中的第3章 ,第3.4节 C. J. Date 著 单世民 何英昊 许侃 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
994 0
|
1月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
3月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
1月前
|
存储 关系型数据库 MySQL
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
本文详细介绍了在 MySQL 中创建数据库和表的方法。包括安装 MySQL、用命令行和图形化工具创建数据库、选择数据库、创建表(含数据类型介绍与选择建议、案例分析、最佳实践与注意事项)以及查看数据库和表的内容。文章专业、严谨且具可操作性,对数据管理有实际帮助。
大数据新视界 --面向数据分析师的大数据大厂之 MySQL 基础秘籍:轻松创建数据库与表,踏入大数据殿堂
|
1月前
|
SQL 关系型数据库 MySQL
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
这是一份详细的MySQL安装与配置教程,适合初学者快速上手。内容涵盖从下载到安装的每一步操作,包括选择版本、设置路径、配置端口及密码等。同时提供基础操作指南,如数据库管理、数据表增删改查、用户权限设置等。还介绍了备份恢复、图形化工具使用和性能优化技巧,帮助用户全面掌握MySQL的使用方法。附带常见问题解决方法,保姆级教学让你无忧入门!
MySQL下载安装全攻略!小白也能轻松上手,从此数据库不再难搞!
|
3月前
|
关系型数据库 MySQL 数据库连接
docker拉取MySQL后数据库连接失败解决方案
通过以上方法,可以解决Docker中拉取MySQL镜像后数据库连接失败的常见问题。关键步骤包括确保容器正确启动、配置正确的环境变量、合理设置网络和权限,以及检查主机防火墙设置等。通过逐步排查,可以快速定位并解决连接问题,确保MySQL服务的正常使用。
591 82
|
1月前
|
关系型数据库 MySQL 定位技术
MySQL与Clickhouse数据库:探讨日期和时间的加法运算。
这一次的冒险就到这儿,期待你的再次加入,我们一起在数据库的世界中找寻下一个宝藏。
63 9