软件设计文档_软件设计技巧之数据库设计还能这样玩

导读:随着软件设计的发展,设计思想不断革新,作为程序员,就需要不断的学习,不断的尝试新方法,本文将介绍一种新的数据库设计方法,个人感觉非常符合现代设计风格,接下来一起看看吧。

数据库设计回顾

记得刚学习java开发的时候,老师推荐PowerDesigner设计数据库,图形化更加直观易懂。

后来工作后,实际开发,喜欢直接连接数据库操作,因此使用Navicat作为数据库管理工具,顺带包揽设计工作。

而在团队协作中,数据库文档是评审必须的,想想自己整理的word文档,免不了会吐槽一番。最近几年,word文档写的很少了(除非正式的文档),因为markdown的出现,更加符合程序员的编写习惯,感觉就和写代码一样,缩进、特殊标记、代码插入、表格等,很方便的就能实现。

为了讲下面的内容,这里我简单说明下markdown是什么。

markdown是一种标记语言,使用更加易懂的纯文本格式,很方便实现写文章所需的各种效果。

那么,你有没有想过,数据库设计也能通过类似的标记语言呢?

数据库标记语言

今天要讲的主角正式登场(^_^),她就是DBML,全称是Database Markup Language(数据库标记语言)。讲之前,先来张靓照瞧瞧

89d109b9ff975a5e45832b7fc56790a7.png

从上图可以看到,table、pk、varchar等关键字,再熟悉不过了。这种语言是专门为数据库设计的,所以叫数据库标记语言,接下来我们就想起的细品下她的美好。

DBML语法

  • 表定义
Table table_name {    column_name column_type [column_settings]}

table_name:表名

column_name:字段名

column_type:字段类型

column_settings:字段的设置

  • 字段定义
Table buildings {    ...    address varchar(255) [unique, not null, note: 'to include unit number']    id integer [ pk, unique, default: 123, note: 'Number' ]}

主键:primary key 或 pk

空/非空:null 或 not null

注释:note

唯一索引:unique

默认值:default

  • 索引定义
Table bookings {  id integer  country varchar  booking_date date  created_at timestamp  indexes {      (id, country) [pk] // composite primary key      created_at [note: 'Date']      booking_date      (country, booking_date) [unique]      booking_date [type: hash]      (`id*2`)      (`id*3`,`getdate()`)      (`id*3`,id)  }}

主要分三种索引:

单字段索引、复合索引、表达式索引

  • 外键关系定义
//Long formRef name_optional {  table1.column1 < table2.column2}//Short form:Ref name_optional: table1.column1 < table2.column2// Inline formTable posts {    id integer    user_id integer [ref: > users.id]}
  • 注释
// Inline form

使用双斜杠即可

  • 备注
Table users {  id int [pk]  name varchar  Note: 'This is a note of this table'  // or  Note {    'This is a note of this table'  }}
  • 枚举
enum job_status {    created [note: 'Waiting to be processed']    running    done    failure}

DBML工具

通过DBML可以让表设计,通过纯文本的方式,很方便的描述。那么,如果仅仅是这样的,肯定不够吸引,我猜你还希望

  • DBML转成SQL语句
  • SQL语句转换成DBML
  • 可视化

当然了,这些DBML都给你提供了,先来看张图

73b4e260185dd669f67f6856422cd30f.png

这个是所见即所得,在线工具。

至于DBML与SQL的互相转化,DBML提供了基于node的命令工具dbml2sql、sql2dbml

总结

DBML是一个新型的数据库设计工具,当然有人喜欢,有人吐槽,当然希望你能够喜欢哈。软件设计随着时光的推进,很多新的理念被推出,作为程序员,当然是要不断的吸收和转化。最后,欢迎大家一起分享、讨论心得软件设计方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值