[数据库的三层结构是什么]所谓三层体系结构,是在客户端与数据库之间加入了一个中间层。三层体系不是指物理上的三层,不是简单地放置三台机器就是三层体系,三层是指逻辑上的三层,即使这三个层放置到一台机...+阅读
1. 自增长primary key采用自增长primary key主要是性能。早期的数据库系统,经常采用某种编号,比如身份证号码,公司编号等等作为数据库表的primary key。然而,很快,大家就发现其中的不利之处。 比如早期的医院管理系统,用身份证号码作为病人表的primary key。然而,第一,不是每个人都有身份证;第二,对于国外来的病人,不同国家的病人的证件号码并不见得没有重复。
因此,用身份证号码作为病人表的primary key是一个非常糟糕的设计。考虑到没有医生或者护士会刻意去记这些号码,使用自增长primary key是更好的设计。 公司编号采用某种特定的编码方法,这也是早期的数据库系统常见的做法。它的缺点也显而易见:很容易出现像千年虫的软件问题,因为当初设计数据库表的时候设计的位数太短,导致系统使用几年后不能满足要求,只有修改程序才能继续使用。
问题在于,任何人设计系统的时候,在预计某某编号多少位可以够用的时候,都存在预计不准的风险。而采用自增长primary key 则不存在这种问题。同样的道理,没有人可以去记这些号码。 使用自增长primary key另外一个原因是性能问题。略有编程常识的人都知道,数字大小比较比字符串大小比较要快得多。使用自增长primary key可以大大地提高数据查找速度。
2. 避免用复合主键 (compound primary key)这主要还是因为性能问题。数据检索是要用到大量的 primary key 值比较,只比较一个字段比比较多个字段快很多。使用单个primary key 从编程的角度也很有好处, sql 语句中 where 条件可以写更少的代码,这意味着出错的机会大大减少。 3. 双主键双主键是指数据库表有两个字段,这两个字段独立成为主键,但又同时存在。
数据库系统的双主键最早用在用户管理模块。最早的来源可能是参照操作系统的用户管理模块。 操作系统的用户管理有两个独立的主键:操作系统自己自动生成的随机 ID (Linux, windows 的 SID), login id。这两个 ID 都必须是唯一的,不同的是,删除用户 test 然后增加一个用户 test, SID 不同,login id 相同。采用双主键主要目的是为了防止删除后增加同样的 login id 造成的混乱。
比如销售经理 hellen 本机共享文件给总经理 peter, 一年后总经理离开公司,进来一个普通员工 peter ,两个peter 用同样的 login id, 如果只用 login id 作操作系统的用户管理主键,则存在漏洞:普通员工 peter 可以访问原来只有总经理才能看的文件。操作系统自己自动生成的随机 ID 一般情况下面用户是看不到的。 双主键现在已经广泛用在各种数据库系统中,不限于用户管理系统。
4. 以固定的数据库、表应付变化的客户需求这主要基于以下几个因素的考虑: ◆4.1 大型EPR系统的正常使用、维护需要软件厂商及其众多的合作伙伴共同给客户提供技术服务,包括大量的二次开发。 如果用户在软件正常使用过程中需要增加新的表或者数据库,将给软件厂商及其众多的合作伙伴带来难题。 ◆4.2 软件升级的需要。 没有一个软件能够让客户使用几十上百年不用升级的。
软件升级往往涉及数据库表结构的改变。软件厂商会做额外的程序将早期版本软件的数据库数据升级到新的版本,但是对于用户使用过程中生成的表进行处理就比较为难。 ◆4.3 软件开发的需要。 使用固定的数据库库表从开发、二次开发来说,更加容易。对于用户使用过程中生成的表,每次查找数据时都要先查表名,再找数据,比较麻烦。
举例来说,早期的用友财务软件用Access作数据库,每年建立一个新的数据库。很快,用户和用友公司都发现,跨年度数据分析很难做。因此这是一个不好的设计。在 ERP 中,很少有不同的年度数据单独分开。一般来说,所有年份的数据都在同一个表中。对于跨国公司甚至整个集团公司都用同一个 ERP 系统的时候,所有公司的数据都在一起。
这样的好处是数据分析比较容易做。 现在大多数数据库系统都能做到在常数时间内返回一定量的数据。比如,Oracle 数据库中,根据 primary key 在 100万条数据中取 10 条数据,与在1 亿条数据中取 10 条数据,时间相差并不多。 5. 避免一次取数据库大量数据,取大量数据一定要用分页这基本上是现在很多数据库系统设计的基本守则。ERP 系统中超过 100万条数据的表很多,对于很多表中的任何一个,一次取所有的会导致数据库服务器长时间处于停滞状态,并且影响其它在线用户的系统响应速度。
一般来说,日常操作,在分页显示的情况下面,每次取得数据在 1-100 之间,系统响应速度足够快,客户端基本没有特别长的停顿。这是比较理想的设计。这也是大型数据库系统往往用 ODBC, ADO 等等通用的数据库联接组件而不用特定的速度较快的专用数据库联接组件的原因。因为系统瓶颈在于数据库( Database) 方面(数据量大),而不在于客户端(客户端每次只取少量数据)。
在B/S 数据库系统中,分页非常普遍。早期的数据库系统经常有客户端程序中一次性取大量数据做缓冲。现在已经不是特别需要了,主要原因有: ◆5.1 数据库本身的缓冲技术大大提高 大部分数据库都会自动将常用的数据自动放在内存中缓冲,以提高性能。 ◆5.2 数据库联接组件的缓冲...
以下为关联文档:
项目管理软件带给企业的益处应用项目管理软件有很多益处,下面介绍一些: 1. 精确性 应用项目管理软件的一个主要益处是可以大大提高精确性。对于大型项目,人工绘制网络图、计算起止时间、临近资源使用情况...
数据库长途汽车管理系统1、售票窗口,可根据发车日期和发车班次等信息进行车票打印,并在售票时实时显示当班车次在指定日期的当前售票情况,售票时可将车票信息以及客户信息一同记录到数据库,方便后售票...
机械制造行业企业管理软件有哪些机械行业首先应该掌握的就是制造能力与存货管制的核心竞争能力,所以在导入ERP的过程中第一阶段选择的模块,当然也必须是提升核心竞争能力的相关模块,如主生产计划、MRP、制造管...
国内的人力资源管理软件有哪些比较好用国内的人力资源管理软件有哪些比较好用?有很多软件供应商各有有的优势,各自都有自己的好用之处,如:北森、SAP、宏景、红海科技,用友、Oracle等等。但小编认为好用的人力资源管理...
ios开发用什么数据库一般的数据量很小的项目,没必要使用数据库,如果只是保存写用户信息,大可以用其他的方法,用keychain或者nsuserdefault或者其他的都可以。任何一个项目都需要保存一个使用状态,不...
讨论一下现在国内哪款供应商管理软件最好用国内较领先的供应商管理软件是8Manage SPM。理由如下: 1、基于美国25年中国香港3年的IT经验开发而成 2、8Manage SPM提供详细的供应商信息、绩效管理、基准价及电子化货比多...
房屋托管中介使用的出租屋管理软件有没有比较好用的您好,请搜索“出租屋管理软件” 房屋托管,是委托中介替你来管理,即替你找租客,每月为你收租(替收租很多中介是要收费的),租客有什么问题中介他们会替你解决或找你商量解决,解决中发...
出租屋管理软件收租管理软件有没有你好,你可以看一下青松软件开发的一款“大房东公寓出租管理系统” 这个软件支持多种收费类型:你可以根据自己的收费类型自由添加。 周期性:你可以像租金,卫生费,等每月一收的类型...
跑跑卡丁车在网吧管理软件下无法创建快捷GameGuard更新失败了。错误代码 (340,350,360,361,380) 每次GameGuard执行的时候,自己确认有否要更新的。 GameGuard更新失败的时候,出现错误代码 340,350,360,361,380 解决办法...