数据库设计复习记得刚学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.column1
