精华内容
下载资源
问答
  • 数据库主键方案

    2014-01-16 17:12:36
    2、如果要汇总两个库表,id很多重复,那为什么要把A表的数据导入到B表,为什么程序不能自己到2个表中去查询呢,再说了,数据大了还要拆表呢 3、GUID作为主键,mysql本身并没有这个数据类型,oracle和sql server都...
    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也很要命,这种方案也不是好的选择
    展开全文
  • 主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键,主 键所在的列通常是整数类型。 一个可能被忽略的问题:数据库表中必须有主键吗? 答案是否定的。数据库中的...

    主键

    主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键,主
    键所在的列通常是整数类型。

    一个可能被忽略的问题:数据库表中必须有主键吗?

    答案是否定的。数据库中的表可以不要主键。

    主键的作用

    1. 保证实体的完整性;
    2. 加快数据库的操作速度
    3. 在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
    4.  数据库自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

    主键的特点

    • 一张表只能有一个主键,如果其他字段定义为主键,那么原来设定为主键的字段就会取消。
    • 主键的值不能重复,也不能为空。

    下面来回答是否必须建立主键的问题,这需要从以下两方面考虑:

    1.是否满足业务要求

    2.数据查询效率,主键可以提高查询效率,当然合理的索引替代也可以,主要看表的功能,如果是用来存储大量数据,并需要经常查询这个表的,建立主键可以加快查询效率从而降低服务器的负担,如无此需求,则不需要,建立反而会占用服务器的资源。

    索引

    什么是索引?

    索引是一种特殊的文件,文件中包含着对数据表里所有记录的引用指针。同时索引是一种数据结构。数据库索引是数据库管理系统中一个排序的数据结构,用来协助快速的查询、更新数据表中的数据。索引的实现通常是B+树。

    更通俗的说,索引就相当于目录,为了更方便的找到书中的内容,我们通常先在书前面的目录中查找,通过对内容建立索引形成目录。索引是一个文件,需要占用额外的物理空间。

    从定义可以总结出索引的优缺点:

    索引的优点:

    • 大大加快数据的检索,这也是创建索引最主要的原因和初衷。
    • 通过使用索引,提高整体的系统性能。

    索引的缺点:

    • 时间方面:创建索引和维护索引要耗费时间。因为当对表中的数据进行增加、删除、修改的时候,索引也要动态的维护,从而就会降低增删改的执行效率。
    • 空间方面:索引需要占用物理空间。

    索引的类型

    主键索引:数据列不允许重复,不允许为NULL,一个表只能有一个主键。

    唯一索引:数据列不允许重复,允许为NULL值,一个表允许多个列创建唯一索引

    • 通过alter table 表名 add unique(列名);创建唯一索引
    • 通过alter table 表名 add unique(列名1,列名2);创建唯一组合索引

    普通索引:基本的索引类型,没有唯一性的限制,允许为NULL值。

    • 通过alter table 表名 add index 索引名(列名);创建普通索引
    • 通过alter table 表名 add index 索引名(列名1,列名2,列名3);创建组合索引

    全文索引:当对文章字段或有大量文字的字段进行检索时,会使用到全文索引。

    • 通过alter table 表名 add fulltext(列名);创建全文索引

    索引的数据结构

    索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引、B+树索引等。我们经常使用的InnoDB存储引擎的默认索引实现为B+树索引。Hash索引,其底层的数据结构就是哈希表,因此在绝大多数需要为单条记录查询的时候,可以选择哈希索引,查询速度最快,其余大部分场景选择B+树索引。

    B+树索引

    • 所有关键字都出现在叶子节点的链表中(稠密索引),且链表中的节点都是有序的。
    • 不可能在非叶子节点命中。
    • 非叶子节点相当于是叶子节点的索引(稀疏索引),叶子节点相当于存储数据的数据层。
    • 更适合文件索引系统

    哈希索引

    哈希索引类似于数据结构中简单实现的散列表,当我们在mysql中用哈希索引时,主要就是通过hash算法(常见的有直接定制法、平方取中法、折叠法、除数取余法、随机数法),将数据库字段数据转换成定长的hash值,与这条数据的行指针一起存入hash表的对应位置,如果发生哈希冲突,即两个不同关键字的hash值相同,则在对应的hash键下以链表的形式存储。

    索引的基本原理

    索引用来快速地寻找那些具有特定值的记录,如果没有索引,一般来说执行查询时遍历整张表。

    索引的原理就是把无序的数据变成有序的查询。

    1. 把创建了索引的列的内容进行排序
    2. 对排序结果生成倒排表(倒排索引:由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引)
    3. 在倒排表内容上拼上数据地址链
    4. 在查询的时候,先拿到倒排表的内容,再取出数据地址链,从而拿到具体数据。

    主键与索引的区别

    • 主键是为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引.
    • 数据表中只允许有一个主键,但是可以有多个索引.
    • 使用主键会数据库会自动创建主索引,也可以在非主键上创建索引,方便查询效率.
    • 索引可以提高查询速度,它就相当于字典的目录,可以通过它很快查询到想要的结果,而不需要进行全表扫描.
    • 除了主键索引外索引的值可以为空. 
    • 主键也可以由多个字段组成,组成复合主键,同时主键肯定也是唯一索引.
    • 唯一索引则表示该索引值唯一,可以由一个或几个字段组成,一个表可以有多个唯一索引.

     

    展开全文
  • 数据库面试

    2014-09-06 18:41:00
    不能 3、什么是索引,以及索引有哪些分类并说明。 4、说说触发器的使用场景。 5、sql中循环有哪几种形式(while、游标) 6、Sql Schema是什么? 7、说说数据库遵循的前三范式是什么? 8、请写出sql行转列以及...

    1、主键和索引的区别?主键是索引吗?

    2、视图中能排序吗?不能

    3、什么是索引,以及索引有哪些分类并说明。

    4、说说触发器的使用场景。

    5、sql中循环有哪几种形式(while、游标)

    6、Sql Schema是什么?

    7、说说数据库遵循的前三范式是什么?

    8、请写出sql行转列以及列转行。

    9、sql中树查询(with  tree)

    10、如何删除数据库表中的重复数据

    11、数据库缓存。

    12、mysql如何备份数据库命令

    13、可以给视图创建索引吗?

     

    转载于:https://www.cnblogs.com/iwenwen/p/3959672.html

    展开全文
  • 同样的数据不能重复插入 (1)采取什么措施保证实体完整性? 我们可以给表创建主键约束吗,主键保证了数据的唯一性,主键可以保证同一条记录只能插入一次。 一般情况下,只有一个字段可以添加主键,此字段一般是...

    Oracle数据库四种数据完整性约束

    1.实体完整性

    同样的数据不能重复插入
    (1)采取什么措施保证实体完整性?
    我们可以给表创建主键约束吗,主键保证了数据的唯一性,主键可以保证同一条记录只能插入一次。
    一般情况下,只有一个字段可以添加主键,此字段一般是编号

    2.域完整性

    一般是对一个字段的约束
    例如:学号 位数一般是确定的,可以用数据类型约束 char(10)

    3.引用完整性

    一般指的是多张表之间的引用
    外键:起到关联两张表的作用
    例如:A表和B表进行关联,那么 A的外键 要对应 B的主键。
    外键的值不是随意写的,而是要跟另一张表的主键对应。
    外键所在的表称之为从表,外键引用的表称之为主表。
    外键的值必须来自于主表的主键值。否则会报错。

    唯一约束约等于主键约束,不同点,唯一约束允许值为空,主键约束的值不能为空

    4.自定义完整性(基本用不到)

    例如:年龄必须是30~~40岁
    不能到都该往数据路存了,才发现数据不合格

    展开全文
  • 翻译的过程中,译者感到此言虚:作者从数据库的基本概念到数据库建模,从如何运用规范化原则到如何做成实际的数据库表,从如何保护数据库完整性到如何提高数据库的性能,从数据库的安全机制到并发事务控制,从...
  • 翻译的过程中,译者感到此言虚:作者从数据库的基本概念到数据库建模,从如何运用规范化原则到如何做成实际的数据库表,从如何保护数据库完整性到如何提高数据库的性能,从数据库的安全机制到并发事务控制,从...
  • 问题 第一范式 定义:无重复列,每一列都是不可分割的...定义:属性完全依赖于主键[消除部分子函数依赖],完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形
  • 想通过按钮实现对用户的注册,数据库中用户名为主键所以一旦重复自己报错 调试过程中出现“已有打开的与此command相关联的DataReader,必须先将其关闭” 小白求教 还希望帮着看看我写的这段代码还有其他什么...
  • 1.一个属性既可以是主键又可以是外键(这种情况主要出现在一个对象属于另一个对象的情况下吗?) 学生(学号,姓名) 本科生(学号,专业) ...A作为R的主键当然要有作为主键的限制,例如不能重复,不能为空之类的
  • 1.6.2 记住你并孤单 13 1.6.3 站在全局看问题 13 1.6.4 首先是不要造成损害 13 第2章 关系数据库建模及数据库设计 14 2.1 关系数据库简介 14 2.2 关系数据库模型 15 2.2.1 数据库模式 15 2.2.2 ...
  • 964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...
  • Access 2000数据库系统设计(PDF)---002目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---031目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---016目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---011目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---017目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---024目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---021目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---028目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---020目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---023目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---025目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---029目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---026目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---022目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---012目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---015目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---014目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---019目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....
  • Access 2000数据库系统设计(PDF)---013目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署数据访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试....

空空如也

空空如也

1 2 3
收藏数 57
精华内容 22
关键字:

数据库主键不能重复吗