2021-08-18 1.1 数据库文档(一)
开发项目的时候,如果使用了关系型数据库,那么数据库文档就是关键之一,尤其是表的的标识性字段的含义必须写清楚,否则谁知道你的1,2,3是啥意思呀。
那么如何做这个文档呢?设计数据库的专业软件是Power Designer(可能还有其他软件),不过这个太专业了,不太好控制,所以我们可以用常见的 Excel 来写数据库文档。
数据库文档的结构
数据库文档,主要针对的是表、字段的说明,尤其是标记性的字段,一定要注明其含义。
至于表之间的关联关系,我们可以用脑图来表示,这样更简单易懂。
根据表和字段的特点我们可以做这样的设计:
数据库文档第一行是表名和表的说明,第二行开始是表的字段,用表编号来关联。
这种关联方式并不太好,只是也没想出来更好的方式。
然后记录字段的名称(英文和中文)、类型、大小、默认值、可否为空、说明、外键表和外键的信息。约束、索引等忽略。这样基本够用了。
文档在程序中的体现方式
那么在程序里面如何使用呢?我们可以建立一个object(或者类)来存储这些信息。
方案一:以表为最小单位
const tableInfo = {
tableId: 200,
tableName: 'r_role'
cols: {
200010: {
colId: 'roleId',
colName: '',
cnName: '',
colType: '',
colSize: 4
}
}
}
这样我们就可以以表为最小单位来表示信息了。
分析一下,首先要知道表的ID,才好找的字段的信息,如果只知道字段ID,那么就有点麻烦,虽然可以根据字段ID拆分出来表ID,但是批量查找的话,还得一个一个的拆分,有点麻烦。
方案二:以字段为最小单位
const col = {
200010: {
colName: '',
tableId: 200,
colName: '',
cnName: '',
colType: '',
colSize: 4
}
}
这样呢,我们就可以通过字段ID,直接找到字段信息了,然后可以通过表ID,寻找表的信息。
方案对比
两种设计方案,体现了两种思路,第一个是面向对象的思路,表和字段,组成一个整体。
第二个是关系型数据的思路,表是表,字段是字段。
两种设计方案各有优缺点,也就是说,有不同的适用范围。
因为“本体”会存放在关系型数据库里面,所以两种方案都可以支持。
用途
可能你会觉得奇怪,这是折腾啥呢?
其实我们可以通过这种结构实现各种功能!
生成建表的SQL语句
我们可以写个模板,根据这个文档生成建表用的SQL语句。
首先明确数据库的种类,然后根据数据的要求来制定模板,然后带入数据记录。
感谢vue的模板功能。
生成各种SQL语句
添加数据的时候,我们可以生成 insert into 的SQL语句,从而实现添加数据的目的。
这样是不是很方便,不用我们手撸SQL了。
还有其他很多用途,比如角色和权限。
未完待续。。。