惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Blog — PlanetScale
Blog — PlanetScale
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
小众软件
小众软件
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
Y
Y Combinator Blog
云风的 BLOG
云风的 BLOG
I
InfoQ
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Martin Fowler
Martin Fowler
P
Proofpoint News Feed
MyScale Blog
MyScale Blog

博客园 - 远去的河流

haproxy + rabbitmq + keepalived的高可用环境搭建 iis7下站点日志默认位置 在vs2012中配置使用iisexpress BackOffice Common中实现的相关功能 MVC中Action相关方法的建议 源代码配置的约定 mysql 创建函数时出现 Error Code : 1418 错误解决办法 sql中的日期计算 mysql的数据库相关维护操作:重启、修改连接数、删除连接 mysql中查看Event(作业)执行情况 mysql中用HEX和UNHEX函数处理二进制数据的导入导出 关于mysql函数GROUP_CONCAT mysql中标量子查询和关联子查询的性能比较 mysqldump和smbclient的简单使用 找到自己除编码外可以做的事情 关于业务系统可审计的操作记录设计建议 英语词根、词根、前缀、后缀大全 一个简单的职责链设计 smalldatetime和datetime的区别
数据库设计相关习约定
远去的河流 · 2010-06-11 · via 博客园 - 远去的河流

父子关系:objectID —— parentID
关联关系:objectID —— targetID

时间字段:不考虑存储空间的问题时,通常用DateTime字段类型;
关系表主键: RelationID

XXX信息表: XXX 或者 XXXInfo  信息实体
XXX信息快照表: XXXSnap  信息行记录的复制,可用于回溯和恢复
XXX信息日志表: XXXLog   信息变更记录,仅用于记录变更记录,通常包括:变更类型,变更内容(系统备注),操作人员备注;在时间轴上更为精细;在数据轴上,比较粗粒度。
XXX信息记录表: XXXRecord  信息变更历史,强调有意义的经历,比如工作经历、薪水发放记录等
XXX信息细节表: XXXDetail  信息的相关明细记录 

关于逻辑删和实际删除的操作:
如果表之间关联较少(最好只有一个表),可以考虑物理删除;
如果涉及多个表的操作,最好做逻辑删除;可以在日后的维护时,对大量的垃圾数据进行批量清理。
逻辑删除可以放入一个标记字段(或者某个状态字段,或者单独的一个逻辑删除标识字段),在正常业务逻辑对数据操作时,要增加对删除逻辑数据的过滤。

关于可审计的操作:

(1)所有的写操作保留操作日志;操作日志通常仅用于查询变化,不用于业务判断。可以有不同的粒度:系统级日志、功能级日志、数据级日志。

(2)关键操作,还要对原记录生成快照;通过快照,可以形成链表式的回溯检索;

(3)当前资源始终为最新内容;同时记录最新快照。

(4)快照记录:记录某一个记录变化前的镜像数据,可以通过前后的快照、或者跟当前记录比较,得出变化的内容;优点的是记录全面,缺点是冗余数据较多,尤其当只有个别数据发生变化时。另外的一种变通办法是,把易变的字段放入快照中,减小快照的冗余字段。

快照记录还有另外的一个问题是对审计的支持不够,尤其是在反映将来、现在、过去(快照)的过程变化时,会有些问题。当需要支持某一个变化的审批过程时,应该还需要另外的表来支持。

(5)变动记录:在一条变动记录中,同时记录下变化前和变化后的变化了的数据内容,比快照直观一些,但如果可变化的字段较多时,而实际变化又很少的时候,会显得比较啰嗦。可以有两种方式:

(a)将表中所有易变字段都计入一个表中,每一个字段都包括变化前后的记录(变为两个字段);优点是可以适应多种业务数据的变化支持,缺点是冗余字段多;

(b)如果业务变动较少,可以根据业务变化的不同,增加不同的业务变化的前后数据的支持;优点是冗余数据少,缺点是如果业务变动类型多时,会需要增加不同的表来支持,另外对业务变化也支持不够;