社区
Oracle 高级技术
帖子详情
到底该不该用主键
jon_____
2011-06-12 12:50:58
本人it从业2年,以前以java开发为主,现在的公司做通信行业,以数据处理为主,包括我以前,现在的公司开发的时候建表是从来不用主外键的,但上天我一同学在跟我争论在开发的时候到底要不要用主外键,我竟说不出个靠的住的理由,特来请教大家。
1.主外键到底该不该用?
2.用它为什么?
3.不用又为什么?
...全文
247
27
打赏
收藏
到底该不该用主键
本人it从业2年,以前以java开发为主,现在的公司做通信行业,以数据处理为主,包括我以前,现在的公司开发的时候建表是从来不用主外键的,但上天我一同学在跟我争论在开发的时候到底要不要用主外键,我竟说不出个靠的住的理由,特来请教大家。 1.主外键到底该不该用? 2.用它为什么? 3.不用又为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
27 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chen7788
2011-06-25
打赏
举报
回复
[Quote=引用 25 楼 yangting_lisa 的回复:]
这么多人跟帖,我就不发言了。
[/Quote]
我也是这么认为的~~~ ;-)
dynamo_
2011-06-24
打赏
举报
回复
我们以前的也是用唯一索引的
谁给都解释解释! 或者在传个官方文件 学习学习!
小笨熊
2011-06-24
打赏
举报
回复
这么多人跟帖,我就不发言了。
hardycheng
2011-06-24
打赏
举报
回复
没有主键的话怎么确保行之间数据的不同
怎么和其他表进行关联
如果没有索引
数据量很大的情况下select也会特别慢
所以这个要不要用就取决你是做什么操作比较多
而且是对那个操作的效率要求比较高
BlueskyWide
2011-06-21
打赏
举报
回复
在一个正规的中度及以上的应用数据库里,主键、外键及外键参考都是必不可少的。
没有主键的数据库很难想象你准确地操纵数据;
同样,没有外键及外键参考,保持数据的低冗余度和数据的完整性(父子关系)也是不可想象的。
License2Kill
2011-06-21
打赏
举报
回复
外键很恐怖,除非数据质量百分百高。
山之魂2
2011-06-20
打赏
举报
回复
个人认为,主键是必须要的,以前在项目中处理过一些历史遗留的没有主键的数据,非常崩溃……
yanran_hill
2011-06-16
打赏
举报
回复
这个要看你所在的公司的生产流程是不是有规定:
如果你的公司没有关于数据库设计方面对于遵循的范式有明确的要求,如果要求第二范式以上就用主键,否则就可以不用呗.
关于数据库范式的定义说明:
构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、...其中第二范式要求是表必须有主关键字
wolianlin1987
2011-06-16
打赏
举报
回复
[Quote=引用 10 楼 java3344520 的回复:]
引用 4 楼 cjing310 的回复:
当你的数据量很大的时候,主键还应该用么,比如频繁的插入操作等,会不会引起效率上的问题
如果主键没有被索引,没有必要建立主键,大数据量的前提下建议不建立主键,
[/Quote]
主键没有被索引?再建主键的时候不是会最动创建唯一索引?
toadzw
2011-06-15
打赏
举报
回复
靠,当然要用,用来定位文件;
richard_2010
2011-06-15
打赏
举报
回复
具体情况区别对待咯
quanhj
2011-06-15
打赏
举报
回复
[Quote=引用楼主 cjing310 的回复:]
本人it从业2年,以前以java开发为主,现在的公司做通信行业,以数据处理为主,包括我以前,现在的公司开发的时候建表是从来不用主外键的,但上天我一同学在跟我争论在开发的时候到底要不要用主外键,我竟说不出个靠的住的理由,特来请教大家。
1.主外键到底该不该用?
2.用它为什么?
3.不用又为什么?
[/Quote]
我觉得数据量很大,而且对数据的修改什么的都不多的话,建主键、外键什么的都没有必要了,建了还有可能影响数据的入库量。
iqlife
2011-06-13
打赏
举报
回复
外键的建立是更加直接的直观的约束了表间关系
为了业务容易扩展,不在数据库里建立主外键关系,而采用了意识流的外键关系
iqlife
2011-06-13
打赏
举报
回复
[Quote=引用 4 楼 cjing310 的回复:]
当你的数据量很大的时候,主键还应该用么,比如频繁的插入操作等,会不会引起效率上的问题
[/Quote]
如果主键没有被索引,没有必要建立主键,大数据量的前提下建议不建立主键,
ycproc
2011-06-13
打赏
举报
回复
主键肯定需要的
没有主键导致的一些操作很麻烦的
如果利大于弊 肯定做有利的事情
别为了一点小问题 丢了西瓜捡芝麻
biandongfeng
2011-06-13
打赏
举报
回复
我也从事2年电信项目的开发,项目组严格规定不允许使用主键和外键,至于原因没有问过,个人认为外键是完全没必要的,如果有了,容易引起一些问题,比如二个表有关系,删除一张表的数据时不允许删除,主键个人认为可要可不要,我们开发中为保持数据的唯一性用的是唯一所以来控制
至于表之间的关系是在设计的时候搞出一个数据字典,大家可以去对照使用
zjwssg
2011-06-13
打赏
举报
回复
非开发,围观,感觉只要是数据有唯一性,就用主键
roykingw
2011-06-13
打赏
举报
回复
主键可以提高数据的完整性和一些效率,另外,从库表设计模式来看,一般都需要对一些单元表设置一个与逻辑无关的主键列,这样便于管理和以后的关联关系扩展。
外键更能体现出库表的结构,对于主要用页面代码来控制完整性的应用,外键的功能可能体现不出来,但是对于大量调用数据库存储过程、函数等来进行逻辑管理的应用,外键就能发挥很大的作用了。我见过一个牛逼的系统,所有的业务逻辑都是通过数据库来进行的,页面值负责传值和调用。这样的系统里,主外键就显得相当的重要了。
kimifdw
2011-06-12
打赏
举报
回复
听了牛人的解释,受益良多
huangdh12
2011-06-12
打赏
举报
回复
主外键都是为了完整性约束吧。 有些项目是靠程序来控制完整性,有些是靠数据库来进行。
我们也比较少用外键,
加载更多回复(7)
MySQL实操极简入门
MySQL的快速使用入门。19节微课,不求全面,只为上手。帮助初学者,在最短的时间内上手使用MySQL。内容包括:1-客户端登录与退出MySQL2-操作数据库3-创建表4-
主键
5-
主键
自增6-非空7-修改表8-插入数据9-修改数据10-删除数据11-查询数据一12-查询数据二(条件查询)13-查询数据三(模糊查询)14-查询数据四(字段控制查询)15-查询数据五(排序)16-查询数据六(聚合函数)17-Limit18-分组查询19-having的使用
IT老齐架构300讲笔记(040) 为什么表的
主键
要使用自增
主键
,不建议使用业务
主键
目录 一、业务
主键
与自增代理
主键
1.1 使用业务
主键
的缺点 1.2 使用场景 一、业务
主键
与自增代理
主键
1.1 使用业务
主键
的缺点 1. 业务
主键
更浪费空间 2. 业务
主键
无顺序,可能会造成写入数据时需要更长组织索引 3. 业务
主键
如果是字符串,在分库分表时,无法直接取模运算,需要先转换为数字,处理更麻烦了。 1.2 使用场景 身份证从15位更新到18位 员工离职再入职 ...
复合
主键
与联合
主键
一、复合
主键
所谓的复合
主键
就是指你表的
主键
含有一个以上的字段组成,不使用无业务含义的自增id作为
主键
。 比如 create table test ( name varchar(19), id number, value varchar(10), primary key (name,id) ) 上面的name和id字段组合起来就是你
Oracle添加
主键
、删除
主键
、修改
主键
目录 一、前提 二、回归主题,
主键
的添加、删除等操作 1.有命名
主键
1)有命名
主键
的添加 2)有命名
主键
的删除 3)有命名
主键
的修改 2.无命名
主键
1)无命名
主键
的创建 2)无命名
主键
的删除 3)无命名
主键
的修改 附加: user_constraints 和user_cons_columns表的作用及其联系 一、前提
主键
解释: 一个表...
数据库不设置
主键
自增时,mybatisPlus插入数据不能插入
主键
今天写项目调用insert方法的时候,生成的sql不带
主键
,数据库不能修改,最后查看源码发现mybatisPlus的
主键
策略默认是NONE 下面普及一下mybatisPlus的
主键
策略 AUTO,//数据库自增 依赖数据库 NONE,// 表示该类型未甚至
主键
类型 (如果没有
主键
策略)默认根据雪花算法生成 INPUT,//用户输入ID(该类型可以通过自己注册填充插件进行填充) //下面这三种类型,只有当插入对象id为空时 才会自动填充。 ID_WORKER,//全局唯一(idWorker)数值类型 UUI
Oracle 高级技术
3,491
社区成员
18,714
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章