数据库系统举例(数据库的实际应用举例)
大家好,关于数据库系统举例很多朋友都还不太明白,今天小编就来为大家分享关于数据库的实际应用举例的知识,希望对各位有所帮助!
大型ERP等数据库系统常见几种设计
早期的数据库系统,经常采用某种编号,比如身份证号码,公司编号等等作为数据库表的 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数据库联接组件的缓冲技术也在提高。包括 ADO在内的一些数据库联接组件都会自动对数据结果集(result set)进行缓冲,并且效果不错。比较新颖的数据库联接组件,比如 Hibernate也加入了一些数据结果集缓冲功能。当然,也有一些数据库联接组件没有对数据结果集进行缓冲,比如 JDBC Driver,不过几年之内情况应该有所改观。也有些不太成功的数据缓冲,比如 EJB中的实体Bean,性能就不尽如人意,实体Bean数据也是放在内存中,可能是因为占用内存过多的缘故。相对来说,今天的程序员写客户端数据缓冲,能够超过以上两个缓冲效果的,已经比较难了。
数据库和数据库管理系统各是什么
数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。
数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它提供多种功能,可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。它使用户能方便地定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和恢复数据库。
常见的数据库管理系统:目前有许多数据库产品,如Oracle、Sybase、Informix、Microsoft SQL Server、Microsoft Access、Visual FoxPro等产品各以自己特有的功能,在数据库市场上占有一席之地。
简述数据库管理系统的功能
按功能划分,数据库管理系统大致可分为6个部分:
1、模式翻译:提供数据定义语言。用它书写的数据库模式被翻译为内部表示。数据库的逻辑结构、完整性约束和物理储存结构保存在内部的数据字典中。数据库的各种数据操作(如查找、修改、插入和删除等)和数据库的维护管理都是以数据库模式为依据的。
2、应用程序的编译:把包含着访问数据库语句的应用程序,编译成在dbms支持下可运行的目标程序。
3、交互式查询:提供易使用的交互式查询语言,如SQL.DBMS负责执行查询命令,并将查询结果显示在屏幕上。
4、数据的组织与存取:提供数据在外围储存设备上的物理组织与存取方法。
5、事务运行管理:提供事务运行管理及运行日志,事务运行的安全性监控和数据完整性检查,事务的并发控制及系统恢复等功能。
6、数据库的维护:为数据库管理员提供软件支持,包括数据安全控制、完整性保障、数据库备份、数据库重组以及性能监控等维护工具。
扩展资料:
计算机数据库管理系统最大的优势在于能够进行数据信息的长期存储和管理。而这一特点在很多领域都有广泛的应用。但是需要注意的是技术人员在增强信息存管率时应当对用户的身份进行细致识别,防止非法用户的入侵,最终减少恶意访问、黑客攻击等问题,真正保障数据信息的安全。
在计算机网络应用的过程中经常会出现信息丢失、系统崩溃等现象,致使数据信息损坏,无法正常调用。
而计算机数据库管理系统主要就是数据的集合存储,在这一存储的过程中,管理系统会按照一定的模式进行数据存储,并建立较为复杂的数据结构关系。这样既能实现数据的单独处理,也能实现数据结合的使用、处理,从而实现高效率的数据恢复。
好了,关于数据库系统举例和数据库的实际应用举例的问题到这里结束啦,希望可以解决您的问题哈!