ERP系统数据库设计
大型ERP等数据库系统常见的几种设计
目录
1. 自增长 primary key
2. 避免用复合主键 (compound primary key)
3. 双主键
4. 以固定的数据库、表应付变化的客户需求
5. 避免一次取数据库大量数据,取大量数据一定要用分页。
详细内容
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 一般情况下面用户是看不到的。
ERP系统数据库设计的检查
(1)完整性检查:完整性即记录数量是否完整。可以请企业中有经验的人员复查或计算一下总数,将其和历史数据比较。同时还要检查字段的完整性,所有的ERP软件都有必须输入的字段,如果缺少这些字段就会造成系统的不稳定,如物料的提前期、默认仓库等。另外还有一些非软件要求的必须输入的字段,对企业今后的业务和统计分析有用的字段也要列入检查范围,例如客户分类和所属地区等。
(2)正确性检查:正确性的范围很广,这里不做一一说明,可以由企业自己根据需要制定检查原则。有些错误如会计科目是资产类型的,但是因为人为错误输入成负债类型的,再比如有的物料是采购来的,但是录入成自制件,这样的错误在系统上线前必须发现并改正。
(3)唯一性检查:数据的唯一性应该从两个角度检查,常见错误有多个实物编成同一个编码,如果以后录入系统,成熟的ERP软件会提示编码已经存在,并拒绝接受。同时一个实物对应多个编码的现象也必须杜绝,这种错误ERP软件是发现不了的,必须利用人工查找,否则在上线后会发生多个账务错误。
在改正错误的同时,要做好资料版本的控制,这个工作在多部门参与的数据整理工作中尤为重要。曾经有个客户,多个部门都在同时修改一份相同的资料,修改之后的文档中只有自己的一部分数据是正确的,其他部门数据还是错误的。在录入数据时,无论以谁的数据为准都是不行的,必须用正确的数据替换错误数据后进行合并才行。由此可见,针对每类数据都应该设置负责部门和负责人员,每次修改后由负责人员将文档的版本更新,同时旧版本数据也要保存。这样做可将误操作的损失降低到最小。
- 1企业应如何推动全流程数据化管理?
- 2怎样打破数据孤岛实现数据整合与共享?
- 3如何利用数据实现经营指标数字化?
- 4数据埋点的深入解析
- 5深入解析数据采集四种高效策略的具体内容
- 6企业对数据集成工具的需求体现在哪几方面?
- 7大数据可视化的用户体验有哪些优化建议?
- 8深入探讨数据资产管理的发展现状
- 9企业进行数据治理的关键要素与优化策略阐述
- 10从实施策略角度深入阐述数据治理的重要性
- 11撰写数据分析报告的五个核心流程剖析
- 12企业数据安全治理的基本概念和治理体系分析
- 13深入解析数据库的读写分离策略及其优势阐述
- 14数据仓库建设的必要性和实施策略分析
- 15如何实现数据分析与业务的深度融合?
- 16erp数据开发利用
- 17企业该如何降低数据泄露的风险?
- 18实时数据同步和传统数据同步有哪些方面的区别?
- 19主数据管理关键要素的深入解析
- 20数据回滚的未来发展趋势分析
- 21数据编织及其优势挑战的深入解析
- 22数据集成平台和实时数据中台的区别有哪些?
- 23深入解析企业数据管理战略的重要组成部分
- 24数据集成的基本概念和难点剖析
- 25如何解决企业内部数据孤岛问题?
- 26数据录入的核心意义及使用场景剖析
- 27数据传输的效率如何影响数据传输的实时性?
- 28数据湖的核心能力与架构的深入剖析
- 29常见的六种数据分析可视化图表是什么?
- 30数据质量管理技术的三大核心领域分析
成都公司:成都市成华区建设南路160号1层9号
重庆公司:重庆市江北区红旗河沟华创商务大厦18楼