请问大家是怎样维护数据库字段含义的?

2015-07-07 15:44:19 +08:00
 onlyice

比如 MySQL 的某个表中,各个字段的含义是怎样维护的?

现在我们这边用了一个 DOC 文档纪录字段的含义,但是时间一久字段的含义发生了变化,或者有一些字段废弃了,总是无法及时纪录到文档中。

有没有更好的解决办法?

有没有专门的系统来维护字段含义、是否废弃、负责人是谁等各种信息?

3717 次点击
所在节点    问与答
23 条回复
wintersun
2015-07-07 16:01:14 +08:00
MySQLWorkBench,自带数据库设计功能,由设计驱动数据库创建、变更
PowerDesign,老牌数据库设计软件,DB2,Oracle,MySQL,PostgreSQL,通吃。当然价格嘛,我只能嘿嘿 and 呵呵了。

想当年,远古时代,我们用excel、word记录数据库设计,甚至有哥们写了套web版的数据库字段定义、维护系统,呜呼那个哀哉!
jybox
2015-07-07 16:02:47 +08:00
在项目的代码里维护两个 SQL 文件,一个是创建数据库的 SQL 语句(CREATE TABLE 之类的),每个字段前加有关这个字段的注释,比如详细解释、和其他字段的隐性关联、有效/无效/弃用情况。
另一个是历史更改数据库结构的语句(ALTER TABLE 之类的),每条命令的注释写上做这项修改的原因和注意事项等,这个文件只在末尾新增新增,不删改之前的。
改数据库之前一定要先修改这两个文件,然后在部署的时候执行第二个文件中新增的语句。
onlyice
2015-07-07 16:10:51 +08:00
@wintersun
多谢指点 :-)

刚试了一下 Workbench 的设计功能,的确很强大

Web 版的系统想法很赞~~
onlyice
2015-07-07 16:11:30 +08:00
@jybox 恩,也是一个办法
wintersun
2015-07-07 16:15:46 +08:00
jybox提到的SQL就是MySQL WorkBench/PowerDesign的产出之一。
工具和人手维护都是可以的,取决于有否条件。
maemual
2015-07-07 16:16:26 +08:00
把建表的 sql 放到 git 里面进行版本控制。
强制要求在修改数据库,或者新建数据库的时候,通过提 PR 的方式,并且要求进行相关人员进行 review,同时写相应的注释和文档。
loveyu
2015-07-07 16:18:51 +08:00
一般我会再SQL中写注释,然后几条脚本把注释更新到文档,最后GIT什么的,也挺方便
onlyice
2015-07-07 16:42:09 +08:00
loveyu
2015-07-07 16:44:18 +08:00
@onlyice
类似这样的:
CREATE TABLE `courses` (
`courseID` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '课程ID',
`courseName` varchar(30) NOT NULL COMMENT '课程名称',
`pinyin` varchar(120) DEFAULT NULL COMMENT '拼音的全拼',
`pinyin_index` varchar(30) DEFAULT NULL COMMENT '拼音的索引',
PRIMARY KEY (`courseID`),
UNIQUE KEY `courseName` (`courseName`)
) ENGINE=InnoDB AUTO_INCREMENT=575 DEFAULT CHARSET=utf8 COMMENT='课程信息,相当于一张索引表';

这个注释可以通过SQL语句查询的
onlyice
2015-07-07 16:49:00 +08:00
@loveyu Thanks, 我来了解下 COMMENT
shakoon
2015-07-07 19:13:44 +08:00
数据库建模业界第一的当然是Power Designer,MySQL Workbench是专为MySQL定制的工具,也不错。
顺便强烈建议开发创始人不要图一时方便,因为省略掉数据库建模的粗放型的开发一定会导致后期继续开发、维护的一系列困难,给自己给后人挖下巨坑
onlyice
2015-07-07 19:41:03 +08:00
@shakoon Thanks :-)
“留下巨坑” 可能是怎样的坑呢?能简单举例讲一下么?
akira
2015-07-07 20:16:06 +08:00
字段名不要用缩写,尽量描述清楚
适当的注释是必需的
gelupk
2015-07-07 21:13:48 +08:00
加注释,用的navicat挺方便的
virusdefender
2015-07-07 21:21:48 +08:00
使用orm 注释在model中
takashiki
2015-07-07 21:29:53 +08:00
如果是php的话,一些框架提供的migrate功能就和记录sql的效果是一样的,而且方便迁移
onlyice
2015-07-07 21:37:36 +08:00
@virusdefender 恩,的确是个办法
但是我的场景里读数据库不只是用 ORM,也有裸写 SQL 的,就比较蛋疼。。
onlyice
2015-07-07 21:37:55 +08:00
@gelupk 也是用 MySQL 的 COMMENT 选项?
onlyice
2015-07-07 21:38:49 +08:00
@takashiki 恩,php 的 ORM 框架可以纪录 migrate 的注释么?
takashiki
2015-07-08 09:12:44 +08:00
@onlyice 有些是可以的如yii2,有些原生不行但是有人写了扩展如laravel,而且orm一般都支持执行裸sql的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/203967

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX