请问大家是怎样维护数据库字段含义的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
onlyice

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

  •  
  •   onlyice 2015 年 7 月 7 日 4106 次点击
    这是一个创建于 3943 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    有没有更好的解决办法?

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

    23 条回复    2020-09-28 11:18:29 +08:00
    wintersun
        1
    wintersun  
       2015 年 7 月 7 日   1
    MySQLWorkBench,自带数据库设计功能,由设计驱动数据库创建、变更
    PowerDesign,老牌数据库设计软件,DB2,Oracle,MySQL,PostgreSQL,通吃。当然价格嘛,我只能嘿嘿 and 呵呵了。

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

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

    Web 版的系统想法很赞~~
    onlyice
        4
    onlyice  
    OP
       2015 年 7 月 7 日
    @jybox 恩,也是一个办法
    wintersun
        5
    wintersun  
       2015 年 7 月 7 日   1
    jybox提到的SQL就是MySQL WorkBench/PowerDesign的产出之一。
    工具和人手维护都是可以的,取决于有否条件。
    maemual
        6
    maemual  
       2015 年 7 月 7 日   1
    把建表的 sql 放到 git 里面进行版本控制。
    强制要求在修改数据库,或者新建数据库的时候,通过提 PR 的方式,并且要求进行相关人员进行 review,同时写相应的注释和文档。
    loveyu
        7
    loveyu  
       2015 年 7 月 7 日   1
    一般我会再SQL中写注释,然后几条脚本把注释更新到文档,最后GIT什么的,也挺方便
    onlyice
        8
    onlyice  
    OP
       2015 年 7 月 7 日
    loveyu
        9
    loveyu  
       2015 年 7 月 7 日   1
    @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
        10
    onlyice  
    OP
       2015 年 7 月 7 日
    @loveyu Thanks, 我来了解下 COMMENT
    shakoon
        11
    shakoon  
       2015 年 7 月 7 日   1
    数据库建模业界第一的当然是Power Designer,MySQL Workbench是专为MySQL定制的工具,也不错。
    顺便强烈建议开发创始人不要图一时方便,因为省略掉数据库建模的粗放型的开发一定会导致后期继续开发、维护的一系列困难,给自己给后人挖下巨坑
    onlyice
      nbsp; 12
    onlyice  
    OP
       2015 年 7 月 7 日
    @shakoon Thanks :-)
    “留下巨坑” 可能是怎样的坑呢?能简单举例讲一下么?
    akira
        13
    akira  
       2015 年 7 月 7 日   1
    字段名不要用缩写,尽量描述清楚
    适当的注释是必需的
    gelupk
        14
    gelupk  
       2015 年 7 月 7 日   1
    加注释,用的navicat挺方便的
    virusdefender
        15
    virusdefender  
       2015 年 7 月 7 日   1
    使用orm 注释在model中
    Dowding
        16
    Dowding  
       2015 年 7 月 7 日   1
    如果是php的话,一些框架提供的migrate功能就和记录sql的效果是一样的,而且方便迁移
    onlyice
        17
    onlyice  
    OP
       2015 年 7 月 7 日
    @virusdefender 恩,的确是个办法
    但是我的场景里读数据库不只是用 ORM,也有裸写 SQL 的,就比较蛋疼。。
    onlyice
        18
    onlyice  
    OP
       2015 年 7 月 7 日
    @gelupk 也是用 MySQL 的 COMMENT 选项?
    onlyice
        19
    onlyice  
    OP
       2015 年 7 月 7 日
    @takashiki 恩,php 的 ORM 框架可以纪录 migrate 的注释么?
    Dowding
        20
    Dowding  
       2015 年 7 月 8 日   1
    @onlyice 有些是可以的如yii2,有些原生不行但是有人写了扩展如laravel,而且orm一般都支持执行裸sql的
    shakoon
        21
    shakoon  
       2015 年 7 月 8 日
    @onlyice 比如我和某系统做接口时见到了某数据库,在一个字段存了若干个参数,直接拼在一个字符串里,取出来后还得一位一位的分割开才能用,而且码表还找不到,得跟踪程序到前台显示界面才知道这是什么,遇到这种你不想抽人吗。如果有个pdm,字段的意义、码值这些都能一目了然,而且类似这样的完全不符合第一范式要求的破烂设计根本就通不过
    iamsk
        22
    iamsk  
       2019 年 2 月 13 日
    同样有这样的困惑
    枚举值的变更,直接 alter 数据库,很不好;
    使用文档,同步又存在问题;
    自己开发了数据库同步方案,针对枚举,描述变更,可以单独更新。
    http://dbhub.bastionhost.org/
    iamsk
        23
    iamsk  
       2020 年 9 月 28 日
    原地址已失效,放个代码地址: https://github.com/huifenqi/dbhub
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5314 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 79ms UTC 06:01 PVG 14:01 LAX 23:01 JFK 02:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86