欢迎来到天天文库
浏览记录
ID:30980850
大小:66.50 KB
页数:3页
时间:2019-01-05
《大型erp等数据库系统常见的几种设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、・自增长primarykey采用自增长primarykey主耍是性能。早期的数据库系统,经常釆用某种编号,比如身份证号码,公司编号等等作为数据库表的primarykeyo然而,很快,大家就发现其中的不利之处。比如早期的医院管理系统,用身份证号码作为病人表的primarykeyo然而,第一,不是每个人都冇身份证;第二,对于国外來的病人,不同国家的病人的证件号码并不见得没冇垂复。因此,用身份证号码作为病人农的primarykey是一个非常糟糕的设计。考虑到没有医牛或者护士会刻意去记这些号码,使用自增长primarykey是更好的设计。公司编号采川某种特定
2、的编码方法,这也是早期的数据库系统常见的做法。它的缺点也显而易见:很容易出现像千年虫的软件问题,因为当初设计数据库农的时候设计的位数太短,导致系统使用儿年后不能满足耍求,只有修改程序才能继续使用。问题在于,任何人设计系统的时候,在预计某某编号多少位可以够用的时候,都存在预计不准的风险。而采用白增长primarykey则不存在这种问题。同样的道理,没有人可以去记这些号码。使川白增长primarykey另外一个原因是性能问题。略有编程常'识的人都知道,数字大小比较比字符串大小比较要快得多。使用口增长primarykey可以大大地提高数据查找速度。2.避免
3、用复合主键(compoundprimarykey)这主要还是因为性能问题。数据检索是要用到大量的primarykey值比较,只比较一个字段比比较多个字段快很多。使用单个primarykey从编程的角度也很冇好处,sql语句中where条件可以写更少的代码,这意味着出错的机会大大减少。3.双主键双主键是指数据库表有两个字段,这两个字段独立成为主键,但乂同时存在。数据库系统的双主键最早用在用户管理模块。最早的来源可能是参照操作系统的用户管理模块。操作系统的用户管理有两个独立的主键:操作系统日己白动住成的随机ID(Linux,windows的SID),lo
4、ginid。这两个ID都必须是唯一的,不同的是,删除用户test然后增加一个用户test,SID不同,loginid相同。采用双主键主耍冃的是为了防止删除后增加同样的loginid造成的混乱。比如销售经理hellen木机共享文件给总经理peter,—年后总经理离开公司,进來一个普通员工peter,两个peter用同样的loginid,如果只用loginid作操作系统的用户管理主键,则存在漏洞:普通员工peter可以访问原来只有总经理才能看的文件。操作系统口己口动生成的随机ID一般情况下面用户是看不到的。双主键现在已经广泛用在各种数据库系统中,不限于用
5、户管理系统。4.以固定的数据库、表应付变化的客户需求这主要基于以下几个因素的考虑:4.1大型EPR系统的正常使用、维护需要软件厂商及其众多的合作伙伴共同给客户提供技术服务,包括大量的二次开发。如果川户在软件正常使川过程中需要增加新的表或者数据库,将给软件厂商及其众多的合作伙伴带来难题。4.2软件升级的需要。没有一个软件能够计客户使用儿十上百年不用升级的。软件升级往往涉及数据库表结构的改变。软件厂商会做额外的程序将早期版本软件的数据库数据升级到新的版本,但是对于用户使用过程中生成的表进行处理就比较为难。4.3软件开发的需要。使用固定的数据库库表从开发、
6、二次开发来说,更加容易。对于用户便用过程中生成的表,每次查找数据时都要先查表名,再找数据,比较麻烦。举例來说,早期的用友财务软件用Access作数据库,每年建立一个新的数据库。很快,用户和用友公司都发现,跨年度数据分析很难做。因此这是一个不好的设计。在ERP屮,很少冇不同的年度数据单独分开。一般來说,所冇年份的数据都在同一个表中。对于跨国公司其至整个集团公司都用同一个ERP系统的时候,所有公司的数据都在一起。这样的好处是数据分析比较容易做。现在大多数数据库系统都能做到在常数时间内返回一定量的数据。比如,Oracle数据库小,根据primarykey在
7、100万条数据屮取10条数据,与在1亿条数据屮取10条数据,时间相差并不多。2.避免一次取数据库大量数据,取大量数据一定要用分页。这基本上是现在很多数据库系统设计的基本守则。ERP系统中超过100万条数据的表很多,对于很多表中的任何一个,一次取所有的会导致数据库服务器长吋间处停滞状态,并且影响其它在线用户的系统响应速度。一般来说,日常操作,在分页显示的情况下而,每次取得数据在1-100Z间,系统响应速度足够快,客户端基本没有特别长的停顿。这是比较理想的设计。这也是大型数据库系统往往川ODBC,ADO等等通川的数据库联接组件而不川特定的速度较快的专川数
8、据库联接组件的原因。因为系统瓶颈在于数据库(Database)方面(数据量大),而不在于客户端(客户端每次只
此文档下载收益归作者所有