自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 数据库设计之半结构化存储

业务场景:用户填一些单据,然后上报,完成审批。单据中有几个字段是需要统计的,业务并不复杂。    看似简单的场景,当开发人员拿出PDM设计的时候,我惊呆了,密密麻麻的有接近70张表,每张表都是一百多个字段。开发人员抱怨,花了一周的时间来做数据库设计,实在是太麻烦了。     设计方案1,我问能不能把单据进行归类,一类单据设计成一张表,用一个字段区分是那张单据,这样会减少很多表。得到的回复是

2014-09-28 09:33:04 2118

原创 数据库设计之EAV(实体、属性、值)

有这么一个业务,用于客户记录每天做的事情,由于是非常专业的事情,需要专业的记录本,这种记录本有20多种。实际工作中也是有20多样的记录本,记录本的格式每隔一年会有点变动。如何进行数据库设计?   有两种方案:    1.为每个记录本建单独的表。    2.动态表,把记录本的属性放入到字典中,记录本的内容以实体、属性、值的形式存储。   --存储记录本的格式   createta

2014-09-26 09:39:09 9057

原创 数据库设计之外键的思考

关于是否使用外键在业界也没有统一的标准,大家争论的焦点是数据一致性和性能上。    支持使用外键方,强调如果不使用外键,数据一致性无法保证,性能消耗可以忽略。    反对使用外键方,数据一致性可以通过程序保证,性能有大问题,数据维护很麻烦,如果是大系统,整个外键的关系就像编制的一张大网。再者开发人员很难真正用好外键。    其实两种观点我都支持,现状是我基本没用过外键。没使用外键会出现

2014-09-23 19:51:39 1753

原创 数据库设计之主键的思考

根据第二范式,主键是必须的。主键还是是唯一的,主键也被作为外键引用建立表和表之间的关系。从这几个方面讨论主键(数据库是Oracle):    1.主键的命名    最近看到由于架构使用hibernate的原因,导致所有主键的命名是ID,我觉得非常糟糕,如部门表(department),用户表(user),角色表(role),这些表如果关联都是id之间关联,非常难辨认这个叫ID是那张表的,如

2014-09-23 18:06:35 1918 3

原创 数据库设计之存储多值的问题

存储多值的问题在设计数据库时是很普遍的问题,看到很多开发人员在上面吃了亏,我觉得有必要拿出来说。业务场景:一个业务单据,有多个联系人。一个设备维护工作,有多个维护班组。下面来举个例子createtable BILL(  bill_id numberprimarykey,  bill_name varchar2(20),  bill_contentvarchar2(200

2014-09-22 09:17:21 6386 3

原创 Oracle alter index disable/unusable的区别

alter index index_name disable,enable针对函数索引。SQL> create table test as select * from all_objects;SQL> create index ind_t_object_id on test(object_id) nologging;SQL> exec dbms_stats.gather_table_s

2014-09-15 18:01:51 9667

原创 Oracle 在线扩展分区

在对分区表操作是,当一个分区已经有了最大的分区,如何再次扩展分区呢?简单的方式是先删除最大分区,然后添加需要的分区,再次建立最大分区,如果对于7*24小时的系统,可能不行。哪有什么办法呢?下面来做个试验:SQL> select * from v$version;BANNER---------------------------------------------------------

2014-09-15 16:43:55 1707

原创 Oracle数据库设计字段类型选择错误的隐患

数据类型不准确的一个隐患,下面来构造一张表存日期字段,一个存varchar2,一个存date,做一个测试。之前也写过两篇blog:1.字段类型设计与实际业务不符引发的问题1  2.字段类型设计与实际业务不符引发的问题2  SQL> drop table test purge;SQL> create table test as select      to_char(to

2014-09-11 19:17:56 1815

转载 数据库设计中的14个技巧

下述十四个技巧,是许多人在大量的数据库分析与设计实践中,逐步总结出来的。对于这些经验的运用,读者不能生帮硬套,死记硬背,而要消化理解,实事求是,灵活掌握。并逐步做到:在应用中发展,在发展中应用。       1. 原始单据与实体之间的关系          可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可

2014-09-11 15:35:46 958

原创 Oracle嵌套表存储格式浅析

Oracle嵌套表很少用,下面来研究下其如何存储的。用一个例子,一个用户对应对个部门。SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edi

2014-09-10 18:55:51 1529

原创 .net控件安装不成功导致功能慢

刚实施反馈,有个功能时快时慢,快的时候1s,慢的时候60s,有点奇怪。先说下部署结构:     weblogic + Oracle , jsp struts mybatis。 中间件发布在两台物理机器上(windows的操作系统),在中间件服务器1上访问功能慢,在中间件服务器2上访问功能很快。    1.使用httpwatch,可以看到慢的地方     http://10.15.152

2014-09-09 16:29:17 1201

原创 Oracle 11g下用模板建复合分区

利用模板建复合分区大大的降低了脚本的复杂度,下面来做个试验:--未使用模板的方法建复合分区SQL> drop table test purge;SQL> create table test  (   owner VARCHAR2(10),   created date,   object_name VARCHAR2(10),   object_type VARCHA

2014-09-04 15:27:04 1786

原创 Oracle 多键值分区测试

分区可以按照两个字段分区,先比较第一个列,如果满足,则忽略第二列,如果第一个不满足,则需要比较第二个列。这种分区的方式有点难以让人理解,建议不要使用。SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Or

2014-09-02 18:44:39 1336

原创 Oracle 11g 列转行listagg

在Oracle 11g之前列转行有些麻烦,11g之后,非常简单。现在有功能的业务是,有一张test的表记录的是单据的审批信息,id为审批信息的主键,sheet_id为外键,是单据的id,remark为审批的内容,在前端的列表页面上,要看到这个单据所有的审批信息,要显示在一个格子里面。SQL> drop table test purge;SQL> create table test(

2014-09-02 11:37:57 2821

原创 Oracle 11g虚拟列上建分区

在Oracle 11g上,可以在虚拟列上做分区,这个特性还比较有用,下面来做一个测试:SQL> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edi

2014-09-02 10:50:41 1690

原创 index rebuild和rebuild online的区别

1. rebuild 会阻塞dml语句而rebuild online则不会。         2. rebuild online时系统会产生一个SYS_JOURNAL_xxx的IOT类型的系统临时日志表,所有rebuild online时索引的变化都记录在这个表中,当新的索引创建完成后,把这个表的记录维护到新的索引中去,然后drop掉旧的索引,rebuild online就完成了。

2014-09-01 15:29:42 2233

编译原理及实践

一起来学编译原理,看看编译器内部的工作

2008-03-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除