问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何重构数据库设计满足超类/子类层次结构需求

发布网友 发布时间:2022-04-11 22:20

我来回答

2个回答

懂视网 时间:2022-04-12 02:41

数据库重构探讨系列 (1) 基础 1、数据库重构分成6类: 2、数据库味道 与代码味道概念相似,代码味道是代码中出现常见问题,表明需要进行重构。 数据库味道表明数据库需要重构。这些味道包括: (1) 多用途的列 如一个列被用于多种用途,就可能存在额外的代码

数据库重构探讨系列

(1) 基础

1、数据库重构分成6类:


2、数据库味道
与“代码味道”概念相似,代码味道是代码中出现常见问题,表明需要进行重构。
数据库味道表明数据库需要重构。这些味道包括:


(1) 多用途的列
如一个列被用于多种用途,就可能存在额外的代码来确保源数据以“正确的方式”使用,这些代码常常会检查一个列或更多其它列的值。
比如:
某列用于存储某人的生日,如果此人是顾客的话。假如此人是公司雇员,此列则用于存储入厂日期。

(2) 多用途的表
如一个表被用于存放几种类型的实体,就可能存在设计缺陷。
例如:
某个表Customer同时存放了人和公司的信息。


(3) 重复的数据
重复的数据对操作型数据库来说是一个严重的问题,因为如数据存放在几个地方,不一致的机会就增加了。


(4) 列太多的表
当一个表包含太多的列,则说明这个表缺乏内聚。
比如:
Customer表包含了一些列,存放了3种不同的地址(发货地址、账单地址、公司地址)或几个电话号码(家庭电话、工作电话、手机号等),你可能需要将这种结构进行标准化处理,加入Address和PhoneNumber表。


(5) “智能”列
“智能”列是这样一种列,其中数据的不同位置代表不同的概念。
例如:
客户ID的前4位数字代表客户的开户行,则客户ID就是一个“智能”列。因为你会解析它以取得更细粒度的信息,如开户行ID。

3、数据库重构
数据库重构是一种数据库实现技术,与代码重构相似,对数据库Schema进行重构,使得在上面增加东西变得容易。


上图提供了一些关键开发活动的高层视图,这些活动发生在涉及对象和关系数据库技术的现代项目中。需要在这些活动之间来回迭代。

数据库重构是演进式数据库开发的一个重要组成部分。还需要采用演进/敏捷的方式进行数据建模。
耦合越厉害,就越难重构。代码重构、数据库重构均是如此。
最简单的场景:单应用数据库。因为数据库Schema只与它本身和一个应用相耦合。
而在多应用的数据库架构中,你的数据库Schema可能与应用源码、持久框架、ORM工具、其它数据库(提供复制、数据抽取/加载等)、数据文件Schema、测试代码,甚至数据库自身等耦合在一起。

减少涉及数据库的耦合的一种有效方式是封装对数据库的访问。让外部程序通过持久层来访问数据库,可以实现对数据库访问的封装。
持久层有多种实现方式:
(1) 通过数据访问对象DAO,它实现了所需的SQL代码;
(2) 通过框架;
(3) 通过存储过程;
(4) 通过Web服务。

永远也不可能把耦合降到0,但肯定可以把它降到能管理的程度。

热心网友 时间:2022-04-11 23:49

既然超类子类都设计完了,数据结构和属性Bean之类的应该都有了把。
可以使用Hibernate反射数据表。重建数据库。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
黑色芳纶哪家的好一些? 苏子叶我们中国叫什么苏子叶在中国叫什么 福州小车过户多少钱啊 福州车辆过户要多少钱 民生山西怎么查不到医疗保险信息 app查询养老金医疗保险方法介绍_百度... 太原医保查询平台(附入口二维码) 鉴定伤残等级去哪个部门 2024年中国铝业集团高管团队名单 2024中铝集团董事会成员一览 右枕位胎儿图怎么睡 一鸣楼宇对讲,刷卡开不了门,但分机能开,对讲能用,怎样维修? 数据库重构技术是什么 数据库是干什么用的,谢谢??菜鸟我是 数据库是做什么用的 数据库相关子查询 IBM,甲骨文,SUN,SAP,惠普等IT界巨头的业务范围? 市面上数据库产品除了甲骨文、微软、IBM等,还有谁家有做?使用方便些,安全些,最好在厦门有代理的!! 甲骨文的竞争对手I S W是指那三家公司? 甲骨文银行数据库系统国内类似公司有哪些? 360为什么攻击腾讯他们不懂和好吗? 还得我上Q又下还要开来开去 甲骨文裁员,真的是响应川普号召吗? 安装db2 时不能勾选ibm ssh server自启动是什么i情况 世界上还有和甲骨文公司,一样的数据库公司,也就是他们的竞争对手? 中国有数据库软件吗?能和甲骨文公司竞争的? 亚马逊是如何一步步把甲骨文逼上云的? 到底应该如何才能成为一个计算机高手? 哪位电脑高手可以给我介绍关于电脑日常操作的基本知识的好书啊 !!最好有些好的操作技巧的啊!谢谢了。 我是一名初中生,我要掌握哪些电脑技巧才能成为电脑高手? 成为电脑高手具备的能力 电脑顶级高手请进!!! 成为电脑高手的第一步-只用键盘,不用鼠标 电脑高手来!!!(高奖励) psv怎么重构数据库 psv 重构数据库 作用 psv重构数据库如何进 oracle数据库,结果集拆分重构。 ps5重构数据库会造成啥影响 MFC开发Oracle数据库,选择什么接口好 MFC怎么连接数据库 mfc连接sqlserver 关于编程和数据库!MFC(C++) 在MFC中用ODBC访问SQLserver数据库的问题 你知道怎么用mfc的单文档连接sql数据库吗? eclipse怎样批量修改变量名 ECLIPSE 怎么样选中一个把同名字的全部改掉啊 Eclipse:如何替换文件内容呢?是部分替换而不是全部替换 java项目中怎样批量替换一段文字? eclipse中怎么把选中的变量全部换名 在Myeclipse下连接Microsoft SQLServer数据库,URL怎样填写,要那些JAR包~ java工程链接sql2005数据库JAR驱动包出错 java 中,什么是驱动类,驱动包? ProxyGenerator 属于哪个jar包