怎样用MySQL Workbench设计数据库?

作者: 李佶澳   转载请保留:原文地址   更新时间:2017/10/30 10:41:30

说明

MySQL WorkBench是mysql社区提供的一个数据库设计软件。

可以通过这里快速上手: 怎样用MySQL WorkBench设计数据库?

MySql WorkBench Design

这里是一些更深入的内容,主要参考了MySQL DocumentMYSQL’s SQL Statement Syntax

关于外键

MySQL’s FOREIGN KEY中对MySQL的外链做了很详细的说明。

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

表A中的列可以索引到表B中的行,表A是child、表B是parent,外键在child上设置。

使用外键的关键点是,parent中的数据更新时,索引到parent的child中的数据应该如何处理。

在child的外键定义中,可以通过ON DELETEON UPDATE指定下列五种Action中的一种:

CASCADE:      级连,更新或删除parent中的数据时,也更新或删除child中对应的行。
SET NULL:     置空,更新或删除parent中的数据时,将child中对应行的列设置为NULL。
RESTRICT:     禁止,如果child中存在对应的数据,禁止更新或操作parent中对应的行。
NO ACTION:    禁止,等同于RESTRICT,表中SQL中用`NO ACTION`表示RESTRICT。
SET DEFAULT:  重置,设置为默认值

关于SET DEFAULT:

This action is recognized by the MySQL parser, but both InnoDB and NDB reject table
definitions containing ON DELETE SET DEFAULT or ON UPDATE SET DEFAULT clauses. 

在MySql Workbench左侧的工具栏中,有五个外键按钮,分别为:

key1: 1:1 Non-identifying Relationship  parent与child是1对1的关系,child的primary key不包含外键
key2: 1:n Non-identifying Relationship  parent与child是1对N的关系,child的primary key不包含外键
key3: 1:1 Identifying Relationship      parent与child是1对1的关系,child的primary key中包含外键
key4: 1:n Identifying Relationship      parent与child是1对N的关系,child的primary key中包含外键
key5: n:m Identifying Relationship      创建一张新表记录parent与child的`多对多`关系

需要注意key1和key2, key3和key4,虽然分别是1:1和1:n,但是生成的数据库表其实并没有区别。

导出的mysql

EER图设计完之后,可以直接导出到mysql数据库:

Database -> Synchronize Model

记录的修改时间

在如果一个列的类型为TIMESTAMP,创建得到的表中,这个列的定义将如下:

`updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

创建、修改记录的时候,都会更新时间。

如果要只在创建的时候,自动写入创建时间,可以将创建一个类型DATETIME的列,默认值设置为now():

自动写入创建时间

生成的数据库表中定义:

`createtime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,

注意,必须勾选not null。

参考

  1. MySQL WorkBench主页
  2. 怎样用MySQL WorkBench设计数据库?
  3. MySQL Document
  4. MySQL’s SQL Statement Syntax
  5. MySQL’s FOREIGN KEY
  6. MySQL Workbench’s Document

本文原创首发于网站:www.lijiaocn.com

可以加微信,需备注姓名和方向

QQ交流群

区块链实践互助QQ群:576555864

Kubernetes实践互助QQ群:947371129

Prometheus实践互助QQ群:952461804

Kong/Envoy实践互助QQ群:952503851

Ansible实践互助QQ群:955105412

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: lijiaocn@foxmail.com,备注网站合作 友情链接: lijiaocn github.com