笔记:oracle关于使用代理主键还是逻辑主键的好?

总结几点体会:

第一点:统一。

最近参与的项目,其公共模块(单位表、人员信息表等)全部使用的是代理主键,而集成进来的数据模型又使用的是逻辑主键。为了最大限度的使用已经写好的存储过程、函数等对象,公共模块的数据必须按照一定规则映射一份到集成进来的模块中,这就增加了数据库维护的工作量和难度;java程序使用的持久层是hibernate,在设计javabean的时候也要考虑这种情况,是的java程序员在处理单位信息的时候不得不建立2各javabean,还需要在java程序中进行手动转换,非常耗时。

针对这种现象,无论是使用代理主键还是使用逻辑主键,数据模型的设计必须要统一。混乱的主键策略会给数据库开发人员、应用程序开发人员造成混乱。

第二点:应对数据模型的变更——代理主键。

从实际应用来说,任何一个实体属性都是可能变化的。如:客户信息表使用的是8位客户编号作为主键,可是用户业务扩展,8为编码已经不够使用,此时就要调整主键。试想如果使用的是代理主键,那么业务上的调整就不需要调整主键。

从这个角度来说,代理主键优于逻辑主键。

第三点:习惯。

在实际编写SQL语句过程中,还是喜欢逻辑主键,因为它能帮助我尽快的过滤数据。

时间: 2024-08-04 18:03:30

笔记:oracle关于使用代理主键还是逻辑主键的好?的相关文章

MSSQL - 逻辑主键、业务主键和复合主键

转载自:http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接.下面是自己基于 SQL Server 做的一些总结,其他数据库(Oracle.MySQL.DB2.......)应该也类似吧.这个只是自己一时的思考,如有不当请告知,重新思考后再修 正. 定义(部分定义来源于 SQL Server 联机丛书): 主键(PRIMARY

设计表的时候,对于自增列做逻辑主键使用的一点思考

本文出处:http://www.cnblogs.com/wy123/p/7581380.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 关于自增列 自增列作为数据库的一个特性之一,在MSSQL和MySQL以及Oracle中都被支持.之前在网上发现一个类似的问题,是关于MySQL的:“为什么InnoDB表最好要有自增列做主键?”自增列作为一项特性,(可能)会应用到表的设计方面,不管是在那种数据库平台下.抛开具

主键,外键,自然主键,代理主键,关系型数据库及非关系型数据库

关系型数据库: 将复杂的数据结构转换为一个二维表格即利用关系模型把数据组织到一个二维数据表,通过SQL即结构化查询语句去操作数据:后期学习Jpa面向对象查询语句jpql语句操作数据 Oracle Oracle(甲骨文/神域) 运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域.对企业收费. DB2 IBM 速度快.可靠性好,适于海量数据,恢复性极强.适用于大中型企业领域. SQL SERVER 微软 全面,效率高,界面友好,操作容易,但是不跨平台.适用于于中小型企业领域. MYSQL

Oracle里count(1)、count(*)和count(主键)哪个更快

这两天听了将近20场演讲,感觉收获很多,最深的感觉就是自己还有很长的路要走.有几个点记录一下: 昨天听老猫讲,提到一个普遍的问题就是Oracle里count(*).count(1)和count(主键)到底哪个快的问题.这个问题看起来很简单,每个人都会有自己的答案,去百度上搜会出来一大堆帖子来讲哪个更快.但是老猫说了它们三个其实是一样的,我听到之后也觉得挺诧异的,因为我记得别人跟我说过count(主键)会快,然后自己简单想了一下,觉得好像是那么回事的就没有深入去追究.接着老猫说官方有这样的说法这三

Oracle使用游标为所有用户表添加主键语句

应用场合:数据表新增自增一主键能加快数据表的访问速度,而且是整形的索引速度最快.本程序适合在导入Oracle数据库时删除不存在主键的情况下运行. 代码说明:所有的表主键字段名都设置为ID,如果已存在ID字段,则判断是否是整形,如果不是就重命名字段为[表名ID],然后新增ID,如果不存在则直接添加自增一ID的主键 操作说明:打开PQSQL连接数据库后直接执行下面的详细脚本代码运行即可,脚本有风险(会删除原来的索引跟主键约束),请不要轻易在正式运行的数据库上直接执行 --Oracle使用游标为所有用

oracle创建表并添加主键,设置主键自增长

oracle序列详解和创建自增主键 Oracle序列主键 序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l 自动提供唯一的数值 l 共享对象 l 主要用于提供主键值 l 将序列值装入内存可以提高访问效率 1.首先创建序列,Oracle序列的语法格式为: CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUEn|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n

Oracle数据库,非空约束、主键约束、外键约束、唯一约束

非空约束:设置列时,可为空默认可为空,去掉对号之后设置数据不可为空: 唯一约束:在键中设置,唯一约束名称.类型Unique.列名:设置应用完成之后,此列数据具有唯一性:即数据不可重复 主键约束:主键列自动具有非空约束和唯一约束,一个表只能有一个主键约束(自动生成索引,提高查询效率)

Oracle 主键、联合主键的查询与创建

--查询某个表是否有唯一主键 select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name ='表名' --查询某个表是否有联合主键 select cu.* from user_cons_columns cu, user_constraints au whe

对逻辑主键、业务主键和复合主键的思考

转载的: http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接.下面是自己基于 SQL Server 做的一些总结,其他数据库(Oracle.MySQL.DB2.......)应该也类似吧.这个只是自己一时的思考,如有不当请告知,重新思考后再修 正. ? ? 定义(部分定义来源于 SQL Server 联机丛书): 主键(PR