敏捷开发下, 由 User Story 中设计: 保证数据一致性的数据库表结构

过往的数据库设计思维∵强调整体,主要是期望借由所谓的整体,使的数据库设计可保证数据的 Integrity。

但这样的思维,在面向对象的世界里,往往因类设计时,类责任的不明确,而因为对象的存取破坏了数据的 Integrity。

所以,数据库设计真正的重点,不在所谓的 “整体”。而在 “明确”。

我在产品级敏捷,设计了一个实践;Story 场景树。

借由 Story 场景树,分析每个 Story下的场景,明确界定 Entity 校验的纬度,所以,每个 Entity 的定义便是明确的,每个 Entity 间的关系也是明确的。

所以,由各 Story 所分析出的 Entity,Value Object 便可形成与数据表相匹配的数据表结构,以提升数据的 Integrity。

Story 场景树,轻量级,可视化,可适用于敏捷开发下的团队协作。

Story 场景树主要是分析:Story 内部的活动,活动后所生成的 Entity,Entity 校验的纬度,Story 调用的接口。

所以,从 Story 场景树中,自然便会得知各 Entity 是从何而来?该如何定义(校验)?对外的依赖为何?

有了上述的信息,自然可分析出各 Entity 间是 “关联” 或 “包含”的关系,而可分析出数据表中的 Primary/Forient Key。

上述,是从领域  “广度” 的面向,由 Entity 间设计数据表 (Table)。

另一方面,各 Entity 都会有 Properties 来描述。Properties 便会形成 Value Objecs。而 Entity 的 Value Objects 便形成由领域 “深度”,设计数据表结构;也许就会形成 record 的字段设计。

当然,更讲究的会再进行正规化的设计。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏海说

[转]程序员你为什么这么累?

大家一提到程序员,首先想到的是以下标签:苦逼,加班,熬夜通宵。但是,但凡工作了的同学都知道,其实大部分程序员做的事情都很简单,代码CRUD可以说毫无技术含量,就...

842
来自专栏开源优测

[接口测试 - 基础篇] 02 你应该掌握的Python3接口测试内功

概述 本文主要介绍基于Python3进行接口测试时,应该掌握Python3哪些基本的能力,主要从以下几个方面进行说明。 Python3基本语法 ...

3346
来自专栏BeJavaGod

插件推荐 - twitter分布式主键id生成器与SID

推荐一个插件,那就是idworker,用了一年了,还是挺好用,先来说说干嘛的吧,鉴于现在主键的生成模式先来探讨一下 1、id自增:比较普遍,但是在数据备份恢复的...

4056
来自专栏数据和云

掀开SQL的神秘面纱,将优化进行到底

编辑手记:有这样一条奇怪的SQL,返回结果不足10行,逻辑读达到1.2w,存在索引却走多次全表扫描,如何揭开它神秘的面纱拯救系统性能,答案在这里,你不可错过! ...

35612
来自专栏编程派的专栏

提升 Python 编程效率的十点建议

程序员的时间很宝贵,Python这门语言虽然足够简单、优雅,但并不是说你使用Python编程,效率就一定会高。要想节省时间、提高效率,还是需要注意很多地方的。 ...

1.1K0

为什么我们从Python切换到Go?

切换到新的编程语言向来是关键一步,尤其是当你的团队只有一位成员有该语言的使用经验时。今年年初,我们将 Stream 的主要编程语言从Python 切换到 Go。...

1842
来自专栏电光石火

MySQL按天,按周,按月,按时间段统计

自己做过MySQL按天,按周,按月,按时间段统计,但是不怎么满意,后来找到这位大神的博客,转载一下,谢谢这位博主的分享

1295
来自专栏木宛城主

浅谈 SOLID 原则的具体使用

SOLID 是面向对象设计5大重要原则的首字母缩写,当我们设计类和模块时,遵守 SOLID 原则可以让软件更加健壮和稳定。那么,什么是 SOLID 原则呢?本...

2109
来自专栏上善若水

001-[转]11 个重要的数据库设计规则

简介 Rule 1:- What is the Nature of the application(OLTP or OLAP)? Rule 2:- Brea...

1304
来自专栏AlgorithmDog的专栏

Akka 使用系列之二: 测试

通过上一篇文章,我们已经大致了解怎么使用 Akka,期待细致用法。这篇文章将介绍如何用 Akka-testkit 对 Akka 程序进行测试。 ? ...

1947

扫码关注云+社区