问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

合作伙伴4g业务系统数据库表

发布网友 发布时间:2022-05-02 02:01

我来回答

1个回答

热心网友 时间:2022-06-26 15:55

早期的数据库系统,经常采用某种编号,比如身份证号码,公司编号等等作为数据库表的 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数据也是放在内存中,可能是因为占用内存过多的缘故。  
  相对来说,今天的程序员写客户端数据缓冲,能够超过以上两个缓冲效果的,已经比较难了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 求人教版小学数学第十一册电子课本免费下载地址 小学电子课本在哪能下载 数据仓库怎么从业务系统中提取数据 如何将业务系统的数据加载到数据仓库 crm 和 业务系统 数据库分开吗 业务数据库表一般多少条 读书郎学生平板电脑g50怎么样 spring 官网为什么都是spring boot 没有spring 怎么在icloud上查找我的iphone 登陆icloud为什么找不到“查找我的iphone”? 查找我的iphone 必须是被查找的设备登录icloud 才能够定位到被查找的设备 icloud怎么查找我的iphone 怎么使用iCloud查找我的iPhone? 弹弓飞弹的原因是什么? 保险套弹弓枪的基本概述 弹弓枪违法吗? 弹弓皮筋1842和2040哪个威力大? 哪种弹弓最好? 音乐作品的词曲作者,表演者,唱片公司分别有对该音乐作品有什么权利?以及三者之间的关系。 弹弓打用什么配置 市级统计局的业务系统用什么数据库,和省级的是否联网。数据量大吗?大概... 想学oracle dba,不知道从哪开始学。本人现在工作上的业务系统数据库是ORACL数据库 百户和总旗哪个大 明朝时代将领军挟如何辨别?(如总旗。小旗等) 百户相当于现在什么官职 百户,什么意思? 大家所说的百户有几个意思啊,都是什么? 明朝百户,100个兵丁,10个小旗,2个总旗,没 百户是什么、 明朝千户大还是百户大呢? 百户什么意思啊? 就在百度知道里面的。 什么是百户 杭州哪里隆胸最好 明朝百户,100个兵丁,10个小旗,2个总旗,没有百户长?谁管总旗?2个总旗... 明史关于总旗的由来 哪里丰胸效果好价格合适 哪里假体丰胸效果好? 广州哪家丰胸效果最好? 石家庄哪里丰胸效果好?想让胸部变丰满 .鲁滨逊漂流记的作家是谁国的什么