`

DB设计的常见问题

阅读更多

转载:http://www.blogjava.net/relax/archive/2010/10/22/335905.html

第一次做数据库设计的开发人员,难免会碰到一些问题,根据自己的经验简单的总结一下这些问题,在没有更好的解决方法前的一种可能的备选方案。

一、 从技术上对表进行分组
我们在做业务数据库设计的时候,个人认为首先要从技术上对表进行分组,下面是个人的标准:
1、 流程和交易相关的表:它的特点是记录数保持最小,以便快速响应交易需求,并且相关交易主题对象的生命周期比较短;比如纳税申报表。或者可以称为操作数据库。
2、归档后的查询表:它的特点就是记录数很大,有足够多的索引,关键保持查询速度;它的特点就是查的多,改的少;比如车辆档案表。或者可以称为查询数据库。
3、 提供给分析使用的汇总表:它的特点就是表中存储了很多计算后的数据并且是冗余数据。如果使用BI,这一部分就不用了;如果自己设计为了出报表方便还是需要的;比如纳税情况归集表。或者可以称为查询分析表
4、支持类的表:这一类是对业务的支持,包括代码表、配置表、规则表等。
特别是1和2在设计时最好分别进行处理,不要将交易数据和查询数据混在一块;如果后续要分别部署交易服务器和查询服务器就麻烦了。
二、主键策略
个人建议在客户没有要求的情况下全部使用替代健而不是自然键,自然键是指业务本身的唯一区别,比如员工工号等。而替代健建议使用GUID,这样在有离线业务处理时也能应付。
1、替代健中的冗余问题
在使用替代健后,有一个问题就是需要频繁的查找自然健,个人建议增加冗余字段将自然健也加入关联表中。
2、代码管理策略
在客户没有特别要求的情况下,使用整数来表达代码。并确定代码表的建表策略,是建一个表统一管理还是分别建表管理?个人建议使用一个表管就行了。具体表设计后续可以和大家分享。
3、 字符串字典管理策略
我们经常碰到一个问题,内部一些状态和它的名称的管理;比如审批流程中的审核、批准等等,建议使用字符串字典表统一管理。具体表设计后续可以和大家分享。
4、 大字段管理策略
当碰到大字段时,建议尽量集中管理,并建在一个表空间(Oracle)或文件组(Sqlserver)上。后续和大家分享一下关于附件管理的表设计。
5、使用视图
个人很少使用视图,原因就是Powerdesign对视图设计支持不好,但是有几个方面给大家建议,所有的Select查询最好从视图检索,视图中将相应需要的中文信息统一带出来(比如:代码相对的名称或一个流程的状态名称等);这样统一处理前台需要的显示问题;在业务层构建对象模型时增加状态名称的属性以保持它;这样做的另一个好处就是减少和物理表的耦合性,毕竟一般系统中查询远比修改要多。
三、 使用标量函数
我们有时有这样的需求,要查今天的收入,要查最近7天的收入;这时我们可以使用标量函数来完成这个工作,并能保证时间以数据库服务器一致;当然还有很多其他用途,大家去发现。
下面是一个标量函数的声明来去给定日期当月的第一天:
Create function [dbo].[fn_BeginOfMonth](
@DayUTC         datetime
)
returns datetime
1、使用模版表
用户需要做相似又有微小差别的录入或配置,可以使用模版表来增强用户体验。
2、 和业务相关的表都包含下列字段
CreatedBy 创建人
CreatedOn 创建时间
ModifiedBy 最后修改人
ModifiedOn 最后修改时间
VersionNumber版本号
特别是VersionNumber作为开放式锁的必要字段;在修改记录时可以通过它来判断用户提交数据时,是否其他人做过改动,以便后续处理。

 

分享到:
评论

相关推荐

    DB2索引及其优化(设计,优化,问题分析,解答,举例)

    DB2索引设计及其优化,并对常见的数据库索引问题进行分析,解答。包括索引失效,针对不同情况该如何建立索引,建立怎样的索引等等····

    Java面试宝典:包含Redis各种使用场景,分布式事务,分布式锁,DB,异步并发,JVM,微服务组件,常见的设计模式等

    Java面试宝典:包含Redis各种使用场景,分布式事务,分布式锁,DB,异步并发,JVM,微服务组件,常见的设计模式,高级数据结构。

    电磁兼容设计的一些常见问题解答

    1. 为什么要对产品做电磁兼容设计?  答:满足产品功能要求、减少调试时间,使产品满足电磁兼容标准的要求,使产品... 电磁兼容设计的一些常见问题解答  4. 为什么频谱分析仪不能观测静电放电等瞬态干扰?  答:

    射频电路设计实例以及一些经常遇见的问题

    一、RF电路设计的常见问题 1、数字电路模块和模拟电路模块之间的干扰 如果模拟电路(射频)和数字电路单独工作,可能各自工作良好。但是,一旦将二者放在同一块电路板上,使用同一个电源一起工作,整个系统很可能就...

    高速放大器设计三大常见问题, TI 帮您攻克

    以下设计师在使用高速放大器时遇到的一些常见问题。 问:为什么某些高速运算放大器具有 增益规格? 答:失补偿的运算放大器具有闭环 增益稳定规格,但与单位增益稳定的同类产品相比,在相同电流消耗下,其可提供...

    毕业论文资料查找技巧、盲审、评定与论文文献参考、摘要写法等常见问题

    毕业论文资料查找技巧、盲审、评定与论文文献参考、摘要写法等常见问题。 毕业论文参考文献格式 毕业论文盲审 毕业论文写作时间安排 毕业论文摘要写法 毕业论文成绩评定 毕业论文资料查找 毕业论文后面的参考文献...

    db_springboot_wechat_security.sql

    这是一个基于mysql的数据库设计,包含用户、角色、权限、用户组及其关系的数据库设计,适用于比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个用户拥有多个角色,一个角色拥有多个...

    电磁兼容常见问题对答,你能答对几道?

    为什么要对产品做电磁兼容设计? 答:满足产品功能要求、减少调试时间,使产品满足电磁兼容标准的要求,使产品不会对系统中的其它设备产生电磁干扰或影响周边电磁干扰环境。 对产品做电磁兼容设计可以从哪几个方面...

    PHP 数据库 常见问题小结第1/3页

    本文说明了数据库设计和访问数据库的 PHP 代码中出现的五个常见问题,以及在遇到这些问题时如何修复它们。 问题 1:直接使用 MySQL 一个常见问题是较老的 PHP 代码直接使用 mysql_ 函数来访问数据库。清单 1 展示了...

    常见的关系型数据库管理系统.docx

    它采用windows编程思想,利用windows特有的技术设计查询、用户界面和报表等数据对象,并嵌入VBA(全称:Visual Basic application)编程语言。它有一个集成的开发环境。Access提供图形查询工具、屏幕和报告生成器。...

    具有 12 dB/倍频程旁瓣的可调窗口:用户命令的主瓣宽度,12 dB/倍频程滚降而不是 6 dB 或 0 dB-matlab开发

    众所周知的可调窗口具有 6 dB/octave(Kaiser、Taylor)或 0 dB/octave(Chebyshev)的旁瓣滚降。 Win12 提供了一个可调节的 12 dB/倍频程窗口,具有良好的旁瓣。 调整参数 F0 (1 <... 有关常见

    测试一下市面上常见的iOS DB存储库及iOS系统自带的CoreData存储方案.zip

    软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...

    《MySQL数据库入门》教学设计.docx

    教师首先向同学讲述数据库的概念:数据库(Database,DB)是按照数据结构来组织、存储和管理数据的仓库。然后向同学介绍数据库的4个特点。最后通过画图的方式向同学介绍数据库系统(可参考教材 图1-1),以及它们...

    单片机原理发生器课程设计.doc

    前 言 波形发生器也称函数发生器,作为实验信号源,是现今各种电子电路实验设计应用 中必不可少的仪器设备之一。目前,市场上常见的波形发生器多为纯硬件的搭接而成, 且波形种类有限,多为锯齿波,正弦波,方波,...

    数据库原理-课件

    cs-db-ppt/第7章 数据库设计.ppt cs-db-ppt/第12章 数据仓库与数据挖掘.ppt cs-db-ppt/数据库新技术-传感器网络与数据流技术.ppt cs-db-ppt/第5章 关系数据库.ppt cs-db-ppt/第2章 数据模型.ppt cs-db-ppt/第6章 ...

    JSP 程序设计从入门到精通 PDF 教程

     2.7 JSP运行时错误处理与应该注意的六个常见问题 37  2.8 JSP小实例 38  2.8.1实例1(在JSP中定义函数) 38  2.8.2实例2(获取各种CGI环境变量) 39  2.8.3实例3(JSP里request变量列表) 42  2. 9本章...

    十种常见的器件噪声分析错误.pdf

    但有几种常见的错误可能导致严重高估或低估器件噪声的影响,进而造成严重的过度设计和设计不足。 DNA 有三种基本类型。瞬态噪声分析是一种适用于所有电路类型的统计时序方法。瞬态噪声分析也是唯一适用于非周期...

    星云:星云是由Cosmos DB支持的轻量级,快速且经济高效的.NET Core数据抽象库

    这为常见用例提供了简化的版本控制,而无需直接在Cosmos DB的变更提要支持之上构建逻辑。 使用Nebula存储的文档与框架元数据一起包装,以支持版本控制,高效查询等。例如, { "@version" : 1 , "@actor" : ...

    会议厅方案设计说明.doc

    对"艺术"的理解更直接地表现为对调音师工作流程的了解,对该问题的了 解是需要具备丰富的现场演出调音经验的,如何创造一个更符合调音师操作流程的工作 平台(调音台,重放设备,传声器,效果器),工程设计人员需要...

    会议厅方案设计说明(1).doc

    对"艺术"的理解更直接地表现为对调音师工作流程的了解,对该问题的了解 是需要具备丰富的现场演出调音经验的,如何创造一个更符合调音师操作流程的工作平 台(调音台,重放设备,传声器,效果器),工程设计人员需要与...

Global site tag (gtag.js) - Google Analytics