精华内容
下载资源
问答
  • 又碰到项目上的问这个问题 主键的作用: 1)保证实体的完整性; 2)加快数据库的操作速度 3)在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的...这两个角度权衡是否需要主键。 ...

    又碰到有项目上的问这个问题

    主键的作用:

    1)保证实体的完整性;

    2)加快数据库的操作速度

    3)在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

    4) 数据库自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

    主键不是非要不可,可以从:

    1.是否满足业务要求

    2.数据查询效率(主键可以提高查询效率,当然合理的索引替代也可以)

    这两个角度权衡是否需要主键。

    展开全文
  • 数据库主键方案

    2014-01-16 17:12:36
    1、坚决不可以用某个业务字段做主键,理由就不说了,业务都是意义的,你能保证它产生的规则不变吗? 2、如果要汇总两个库表,id很多重复,那为什么要把A表的数据导入到B表,为什么程序不能自己到2个表中去查询...
    1、坚决不可以用某个业务字段做主键,理由就不说了,业务都是有意义的,你能保证它产生的规则不变吗?

    2、如果要汇总两个库表,id很多重复,那为什么要把A表的数据导入到B表,为什么程序不能自己到2个表中去查询呢,再说了,数据大了还要拆表呢

    3、GUID作为主键,mysql本身并没有这个数据类型,oracle和sql server都有,它的缺点为:1、存储空间比自增型大很多;2、主键在这上面做索引,怎么保证有序,全是毫无意义的一串数字,效率低下,所以mysql本身就弃用了此方案

    4、还有一种方案是使用两套主键,一个是数据库自增的主键(pk),另一个就是我们认为的业务“主键”(不是数据库上的pk),根据它去做数据的findById和关联查询,它的实现方案是用自定义的数据库表存储某个表当前的业务“主键”值,然后同步控制读取+1去实现,当然在读取值时,使用了
    conn.setTransactionIsolation(Connection. TRANSACTION_SERIALIZABLE );
    避免在多个实例并发时的问题,但是这是最高的隔离级别啊,可想而知效率会怎么样;另外,就算在同一个jvm中的synchronized也很要命,这种方案也不是好的选择
    展开全文
  • 主键的作用: 1)保证实体的完整性; 2)加快数据库的操作速度 3)在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。 4) 数据库自动按主键值的顺序显示表中的...这两个...
    主键的作用:
    1)保证实体的完整性;
    2)加快数据库的操作速度
    3)在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
    4) 数据库自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

    主键不是非要不可,可以从:

    1.是否满足业务要求

    2.数据查询效率(主键可以提高查询效率,当然合理的索引替代也可以)

    这两个角度权衡是否需要主键。






    这要看表的功能. 利用来存储大量数据,并需要经常查询的,建立主键可以加快查询效率从而降低服务器的负担. 如无此需求,建立反而多耗用服务器资源.

     

     

     

     

    设置不设置主键主要看业务或者需求来说
    如果你就是简单的对单表操作的话,实在没有必要。
    对多张没有关联的表操作的话,不设置也没有什么影响
    主键只是说对一种表和表关系的关联而已,还有就是在建主键的时候会自动添加个索引,某些情况下可以增加查询速度

     

     

    转载于:https://www.cnblogs.com/yangwujun/p/7132623.html

    展开全文
  • 比如有两个表Orders(订单表),orderItem(订单项),我创建的时候只分别建了主键。没建任何外键。 我只在Entity中定义OneToMany 和ManyToOne 等映射关系。这样可以正常查询到映射的对象信息吗? 也就是说,抛开...
  • 两个查询: ``` SELECT id1, id2 FROM t WHERE MATCH(name) AGAINST('abc'); SELECT id1, id2 FROM t WHERE num=1000; ``` 正常的时候速度还算可以接受。 但是当开启另一个程序,在程序中以多线程向表...
  • 假设个POJO类AB,对应数据库中的表A_B,个该POJO类的对象ab,表A_B中有个主键ID,自增,不用插。现在要把ab插入数据库,同时获取ab.id,怎么做? 我只知道插入是this.getHibernateTemplate().save(ab); 我知道...
    假设有个POJO类AB,对应数据库中的表A_B,有个该POJO类的对象ab,表A_B中有个主键ID,自增,不用插。现在要把ab插入数据库,同时获取ab.id,怎么做?
    我只知道插入是this.getHibernateTemplate().save(ab);
    我知道可以分两步,先插入,后查询,但感觉这样效率低,有更好的办法吗?
    this.getHibernateTemplate().save(ab); 插入后,直接ab.getId()就可以获得id值,hibernate会自动赋值回来.
    展开全文
  • 不幸的是,虽然关系型数据库历经了约30年的发展,成熟的理论和大量的实践基础,但是,大多数设计、开发人员在设计数据库结构时仍然是“跟着感觉走”,根据业务的需要和编程的方便,把字段这张表放几那张表放几...
  • 不幸的是,虽然关系型数据库历经了约30年的发展,成熟的理论和大量的实践基础,但是,大多数设计、开发人员在设计数据库结构时仍然是“跟着感觉走”,根据业务的需要和编程的方便,把字段这张表放几那张表放几...
  • 1.一属性既可以主键可以是外键(这种情况主要出现在一对象属于另一对象的情况下吗?) 学生(学号,姓名) 本科生(学号,专业) 其中学号均为主键,并且学生表的学号分别又为后表的外键  2.参照完整性的...
  • 1.4.5 Oracle数据库天DBA课程 11 1.4.6 Oracle MetaLink 11 1.4.7 Oracle Web Conference 12 1.5 普通Oracle DBA的日常工作 12 1.6 几点建议 12 1.6.1 知道何时寻求帮助 12 1.6.2 记住你并不孤单 ...
  • 很简单,现有一张商品表(goods),里面3字段(id自增主键,name商品名字,price价格); 现在准备设计一张订单表(order),要求一张订单可能包含一或多商品,而且商品数量不定,那么应该如何设计这订单...
  • 数据库有两个专业词汇:主键、组合键。同学们肯定想知道这两者是什么含义与区别,不急,接下来一一解释。 主键 一个数据库用来存储一个个表项,当我们查询到数据库某一条表项时,我们希望用一个关键字就可以过滤出...
  • 现在要把姓名、密码、学号、性别添加到数据库表中,现在有两个表:账号表和信息表,要把姓名、密码添加到账号表,把姓名学号性别添加到信息表,两张表有建立关系,账号表中的姓名是主键,用c#语言怎么把文本框中的...
  • 网易总监面

    2019-09-29 13:56:53
    3、网易总监面 上来没有那么多的废话,连自我介绍都略过。直接照着简历问。 ...接着就是怼数据库数据库里一行一行的数据在磁盘里...表里可以同时有两个主键吗 接着就是写SQL ,三个表,Student、Course 、 Sco...
  • 针对这两个字段做唯一索引; 2.然后web服务器上直接插入,抓特定的Exception判断是不是违反了唯一性。 这个...我看行... <br/>问题补充</strong><br/><div class="quote_title">lixjluck 写道...
  • 1. 项目中遇到过什么困难?你是怎么解决的? 这个当时说了下项目遇到的一些技术难点,然后讲下是怎么解决的。...比如有两个属性的主键,不能存在这样的属性,它只依赖于主键中的一个属性,这就是不符合第二范式 通俗
  • MySQL 索引

    2018-09-21 09:38:00
    索引的介绍 ...- 普通索引 (作用:仅有一个加速查找)- 唯一索引 (唯一索引有两个功能:加速查找和唯一约束(可含null))- 主键索引 (主键索引有两个功能: 加速查找和唯一约束(不含null))- 联合索引...
  • 老顾在前一篇文章中介绍了利用数据库的自增主键的特性,可以实现分布式ID;这ID比较简短明了,适合做userId,正好符合如何永不迁移数据和避免热点? 根据服务器指标分配数据量(揭秘篇)文章中的ID的需求。但这方案...
  • 2015年蓝汛面试题

    千次阅读 2015-10-26 13:07:51
    在表A中学号Ano、姓名Aname两个属性,其中Ano是主键,请用SQL写一条语句查找重名的学生名字? 3、写一下最短路径算法Dijkstra算法吧(在纸上手写代码) 4、用过Linux吗,用的什么版本 5、了解开源软件吗 6、用过...
  • 已经8756初学者都下载了!三歪把【大厂面试知识点】、【简历模板】、【原创文章】全部整理成电子书,共有1263页!...主要是我可以通过这打赏情况来看我的心血没有价值,嘻嘻。 全网最低价...
  • tab_student表三个字段,student_id(主键),student_name,banji_id(外键),而tab_banji表中banji_id(主键)和banji_name两个字段,我现在的想法是实现插入学生到某个班去,请问怎样才能实现? 还有一个问题,...
  • 2005.11.07

    2005-11-07 21:31:00
    有关xml的,用两个table储存信息,一个存头的信息,一个存详细的信息,两个表用一个主键联起来。当显示xml的时候,就已经把要显示的所有头信息拿了回来,当显示详细信息的时候,当前条目的头信息还要不要去数据库再...
  • 为了保证面试的真实性,我们分为两个角色,一为面试官,一位求职者 面试官:对于数据库查询优化,你什么看法吗? 求职者:可以使用数据库索引技术,快速进行定位查询。 面试官:那你说说索引哪些类型? 求职者:...
  • 1.3.5 给定一个整数数组和一个整数,返回两个数组的索引,这两个索引指向的数字的加和等于指定的整数。需要最优的算法,分析算法的空间和时间复杂度 1.3.6 假如给你一个新产品,你将从哪些方面来保障它的质量? ...
  • java面试题

    2018-04-27 19:55:38
    答:多线程有两种实现方法,一种是继承Thread类或者实现Runnable接口。同步就是在方法返回类型后面加上synchronized。 c#中的委托,事件是不是委托? 答:委托就是将方法作为一参数带入另一方法叫做委托,事件...
  • 28.SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号 答:Select ID FROM table1 Where ...
  •  不可以重建已存在的表或数据库!  辞旧迎新  为了把数据添加进表里,您需要INSERT语句  各种INSERT语句  没有值的列  以SELECT语句窥探表  SQL真情指数:NULL的真情告白  控制内心的NULL  NOT NULL出现在...
  • 因为用的是hibernate, 上面两个表对应的PO分别是CategoryPO , ArticlePO.没有配置外键映射. 1. 现在要求根据文章分类查询个分类的前10条record。 我想到的办法(1) .在service 层查询出所有categoryPO.name,...
  • 产品的主键是ProductID,Numeric型并且每产品字母描述字段,名为ProductName。您使用一SqlDataAdapter对象和一SqlCommand对象通过调用一存储过程从数据库中获取产品数据。您将SqlCommand对象的...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

数据库可以有两个主键吗