当前位置: 首页 > 科技观察

软件设计技巧的数据库设计也可以这样玩

时间:2023-03-22 13:27:50 科技观察

数据库设计复习记得刚学java开发的时候,老师推荐PowerDesigner来设计数据库,图形比较直观易懂。后来工作之余,在实际开发中,喜欢直接连接数据库进行操作,所以使用了Navicat作为数据库管理工具,顺便兼顾一下设计工作。在团队合作中,数据库文件需要进行审查。想想自己整理过的word文档,难免要吐槽一下。近几年很少写word文档了(除非是正规文档),因为markdown的出现,更符合程序员的书写习惯,写代码的感觉,缩进,特殊标记,代码插入,表格,etc.可以很方便的实现。为了讲后面的内容,这里我简单说明一下什么是markdown。markdown是一种标记语言,使用更易理解的纯文本格式,可以很方便的实现各种写文章需要的效果。那么,你有没有想过,数据库的设计也可以通过类似的标记语言来完成呢?数据库标记语言的主角将于今天正式登场(^_^),她就是DBML,全称DatabaseMarkupLanguage(数据库标记语言)。说之前,我们先来看看张良钊。从上图可以看出,table、pk、varchar这些关键字,大家再熟悉不过了。这种语言是专门为数据库设计的,所以称为数据库标记语言,接下来我们再细细想想她的美。DBML语法表定义Tabletable_name{column_namecolumn_type[column_settings]}table_name:表名column_name:字段名column_type:字段类型column_settings:字段设置字段定义Tablebuildings{...addressvarchar(255)[unique,notnull,note:'toincludeunitnumber']idinteger[pk,unique,default:123,note:'Number']}primarykey:primarykeyorpknull/non-null:nullornotnullnote:noteuniqueindex:unique默认值:defaultindexdefinitionTablebookings{idintegercountryvarcharbooking_datedatecreated_attimestampindexes{(id,country)[pk]//compositeprimarykeycreated_at[note:'Date']booking_date(country,booking_date)[unique]booking_date[type:hash](`id*2`)(`id*3`,`getdate()`)(`id*3`,id)}}主要分为三种索引:单字段索引、复合索引、表达式索引外键关系定义//LongformRefname_optional{table1.column1users.id]}Note//Inlineform使用双斜线来注释Tableusers{idint[pk]namevarcharNote:'Thisisanoteofthistable'//或Note{'Thisisanoteofthistable''}}enumerationenumjob_status{createn[note:'Waitingtobeprocessed']runningdonefailure}DBML工具允许通过DBML进行表设计,用纯文本描述非常方便。好吧,如果只是这样,肯定不够吸引人。我猜您仍然希望将DBML转换为SQL。将SQL语句转换为DBML可视化当然,这些DBML都为您提供了。我们先来看图。这是一个所见即所得的在线工具。对于DBML和SQL的转换,DBML提供了基于节点的命令工具dbml2sql和sql2dbml。总结DBML是一种新型的数据库设计工具。当然,有人喜欢,也有人吐槽。当然,我希望你喜欢它。随着软件设计时代的进步,引入了许多新概念。作为一名程序员,当然要不断地吸收和改造。