精华内容
下载资源
问答
  • 2021-02-01 22:39:35

    主键是非常不幸的符号,因为“初级”的内涵和与逻辑模型有关的潜意识联想。 因此我避免使用它。 相反,我指的是物理模型的代理键和逻辑模型的自然键。

    重要的是,每个实体的逻辑模型至少具有一组“业务属性”,其包括实体的密钥。 Boyce,Codd,Date等在关系模型中将这些称为候选键。 然后,当我们为这些实体构建表时,它们的候选键在这些表中成为自然键。 只有通过那些自然键,用户才能唯一地识别表中的行; 因为代理键应始终对用户隐藏。 这是因为代理键没有商业意义。

    然而,在没有代理键的情况下,我们的表的物理模型在许多情况下效率低下。 回想一下,非聚集索引的非覆盖列只能通过密钥查找(通常)找到聚簇索引(忽略作为堆积实现的表)。 当我们的可用自然密钥很宽时,这(1)扩大了我们的非聚簇叶节点的宽度,增加了存储要求,并且对非聚集索引的搜索和扫描进行了读取访问; (2)减少聚集索引的扇出,增加索引高度和索引大小,再次增加聚簇索引的读取和存储要求; (3)增加了我们的聚簇索引的缓存要求。 从缓存中追逐其他索引和数据。

    这是一个小的代理键,被指定为RDBMS作为“主键”证明是有益的。 当设置为聚类键时,为了用于从非聚集索引和相关表中的外键查找中查找聚簇索引的键,所有这些缺点都消失了。 我们的聚簇索引扇出再次增加以减少聚簇索引的高度和大小,减少聚簇索引的缓存负载,减少通过任何机制访问数据时的读取(无论是索引扫描,索引搜索,非聚簇键查找还是外键查找) 并降低表的聚簇索引和非聚簇索引的存储要求。

    请注意,仅当代理键很小且聚类键时才会发生这些好处。 如果GUID用作聚类键,则情况通常比使用最小可用自然键时更糟。 如果表被组织为堆,则8字节(堆)RowID将用于键查找,这比16字节GU

    更多相关内容
  • 为什么数据库表只有一个主键

    千次阅读 2021-02-03 09:41:01
    一个(关系)"超级键"是每组在表中具有唯一子行的列集。 (请注意,超级密钥的每超集也是一个超级密钥。)(简单的SQL KEY声明了什么,以及那些超集。)不包含较小超级密钥的超级密钥是"候选密钥&...

    一个(关系)表"超级键"是每组在表中具有唯一子行的列集。 (请注意,超级密钥的每个超集也是一个超级密钥。)(简单的SQL KEY声明了什么,以及那些超集。)不包含较小超级密钥的超级密钥是"候选密钥"。规范化和其他关系理论关注候选键并且不关心主键。就查询,更新和约束的含义而言,没有必要或基础来选择一个候选密钥并将其称为“#34; primary" (和其他人#34;替代")。它只是从关系模型早期的关系前系统延续下来的传统,当时它并没有被理解为是不必要的。

    索引的目的也是不必要的(必须具有性能,另一个重要的可观察表达式)。

    然后,因为有一个传统的主键,其他东西(如自动索引)附加到他们身上。但是这些东西并不需要附加到主键上,主键不是那些其他东西所必需的。

    SQL只允许你声明一个PRIMARY KEY,因为只有"假设"成为一个主键,但这并不意味着有充分的理由在附加功能之外声明任何内容。无论如何,SQL PRIMARY KEY实际上意味着UNIQUE NOT NULL,即超级密钥,而不是候选密钥,所以只有在UNIQUE NOT NULL的适当子集上没有声明PRIMARY KEY时才这样做列是它声明一个主键。因此,SQL PRIMARY KEY不一定是主键的事实表明声称对主键的需求是多么空。 (并且SQL FOREIGN KEY不是外键,因为它们不会引用任何但只有候选键(应该如此),甚至只引用任何但只有主键,或者甚至只引用{ {1}} s,它们只引用任何超级密钥。所以再次说明主键必要性的说法是空的。)

    大多数SQL DBMS会自动且特别地索引PRIMARY KEY。但这只是向用户揭示某些实施方式的某种方式。

    有时声称,使用单一方式引用核心业务实体可以证明拥有基表主键。但是,任何表表达式的任何超级键,即任何一个候选键的任何超集,都标识任何包含的超级键所做的一切(包括主键)。因此,即使实体的主键列不存在,查询仍然可以具有标识它的列。此外,任何表表达式的任何超级键都标识某个实体,无论它是否在某个基表中被标识(更不用说通过主键)。此外,即使通过查询对列进行了预测/ PRIMARY KEY,其行的含义仍然是根据保存这些列的表的含义。因此,查询,更新或约束可以再次涉及核心业务实体,而不存在其指定的主键列。并且它可以涉及没有关联的基本主键列的派生实体。因此声称主键是必需的或基本的或唯一识别是没有根据的。

    展开全文
  • Oracle报错:只能有一个主键。总结及解决方案。

    报错现场

    在这里插入图片描述
    当我给某个表格添加了两条主键时,发生了如下报错。
    在这里插入图片描述
    不会吧不会吧,不会Oracle不支持多条主键吧?那也太违背理论了,显然不太可能。于是我果断百度了一波,并进行了如下总结。

    原因、总结及解决方案

    Oracle中只能设置一个主键,确实是只能设置一个主键,但他的一个主键中可以有多个列。
    在这里插入图片描述
    这不同于mysql、SqlServer,他们都是支持直接添加多条主键的,而Oracle则是只能添加一条主键,但这一条主键中可以用多个列。其实用起来都是一样的,并没有什么本质上的区别。

    所以,只需要将多列放在同一条主键上即可。

    展开全文
  • 数据库表中有主键

    千次阅读 2021-12-09 15:30:09
    数据库表中的多个主键称为联合...sql 中一个表设置两个主键是 将两字段联合起来设置为主键 一个表只能有一个主键 1.只有id为主键时 2.id和name这2列一起构成为联合主键时 甚至可以全部字段设置为主键 ...

    数据库表中的多个主键称为联合主键
    sql 中一个表设置两个主键是 将两个字段联合起来设置为主键 一个表只能有一个主键
    在这里插入图片描述
    1.只有id为主键时

    在这里插入图片描述
    在这里插入图片描述
    2.id和name这2个列一起构成为联合主键时
    在这里插入图片描述
    在这里插入图片描述

    甚至可以全部字段设置为主键

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 1、数据库的每张只能有一个主键,不可能个主键。 2、所谓的一张个主键,我们称之为联合主键。 注:联合主键:就是用多字段一起作为一张主键。 3、主键主键的作用是保证数据的唯一性和完整性,...
  • MySQL索引之主键索引

    2020-12-15 16:43:01
    一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。 在MySQL,InnoDB数据主键设计我们通常遵循几原则: 1、采用一个没有业务用途的自增属性列作为主键; 2、主键字段值总是不更新,只有...
  • 外键必须是另一个表主键吗 ?

    千次阅读 2021-05-07 14:13:38
    比如学生在设计的时候一般可以用学号作为主键,也可设计一个ID字段,字段由数据库自动生成唯一。那么对于班级,一个班级对应多学生,这时候对于班级和学生之间的外键就可以用学生的ID做外键。 如下所...
  • 展开全部主键只有一个,但是可以设置为多字段为主键,也即联合主键。62616964757a686964616fe58685e5aeb931333366306538外键就是自己设置了也即可以,可以设置除主键以外的其他字段全部是外键的。数据库的每...
  • 平时业务量比较大,一张HIVE里面的字段也比较多,如何判断所select 的这几字段是这张表的唯一主键,也就是,选取这几个主键,可以唯一确定只有一行数据 可以通过,select A,B,C from table group by A,B,C ...
  • 所谓主键就是能够唯一标识表中行的属性或属性组,一个表只能有一个主键,但可以候选索引。因为主键可以唯一标识某行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述...
  • 外键必须是另一个表主键

    千次阅读 2019-03-01 14:48:49
    不一定是主键,但必须是唯一性索引。 主键约束和唯一性约束都是唯一性索引。 FOREIGN KEY 约束 ...在外键引用,当一个表的列被引用作为另一个表的主键值的列时,就在两之间创建了链接。这...
  • 、确立主键规范每了解数据库设计的人都知道,主键对于一张来说是一个很重要,甚至必需的部分。这确实是事实,主键是好的数据库设计的部分。主键是数据库确保数据行在整张唯一性的保障。它是定位到条记录...
  • 设置MySQL数据表主键

    千次阅读 2021-01-28 00:39:07
    设置MySQL数据表主键:使用“primary key”关键字创建主键数据列。被设置为主键列不允许出现重复的值,很多情况下与“auto_increment”递增数字相结合。如下SQL语句所示:Mysql>createtablebooks(bookidint(11)...
  • 一张可以多少个主键

    万次阅读 多人点赞 2015-10-21 10:20:28
    今天在共工作,做老项目维护的时候无意发现一张居然个主键。吓死宝宝了,然后尝试着建表建主键,但是都不能成功。 难道是我写的问题,最后通过查资料总终于解决了。 1、数据库的每张只能有一个主键,...
  • 如何设置多个主键
  • 一个表的外键关联到主主键约束或者unique约束都可以,不一定非要主键约束追问:也就是意思是只要能唯一标识一张表中数据,就可以做外键?追答:嗯,但是不能是数据上控制的,必须要约束之才行
  • MySQL必须有主键吗?

    千次阅读 2020-11-04 19:06:27
    因为聚集索引决定了表中数据的物理存储顺序,那么一个表有且只有一个聚集索引。一个聚集索引可以包含多列。好比一个电话本是基于名字,姓氏同时排序。 I nnodb选择一个聚集索引的过程 对于Innodb,主键
  • 1.创建测试【user:一个主键:id】 CREATE TABLE `test`.`Untitled` ( `id` int NOT NULL, `name` varchar(255) NULL, PRIMARY KEY (`id`) ); 2.查看索引 show index FROM user Table:名称 Non_...
  • 一个表可以没有主键,但最多只能有一个主键,并且主键值不能包含NULL。 在MySQL,InnoDB数据主键设计我们通常遵循几原则: 采用一个没有业务用途的自增属性列作为主键主键字段值总是不更新,只有新增或者...
  • FAS_BILL_INFO主键为BILL_CODE,新生成一个new_bill_code,把old_bill_code对应的全部复制到新生成new_bill_code的记录; declare  old_bill_code varchar2(44); --旧借据号 旧主键  new_bill_code varchar...
  • MySQL什么是数据的复合主键

    千次阅读 2021-01-18 19:03:58
    MySQL什么是数据的复合主键发布时间:2020-11-23 14:03:11来源:亿速云阅读:108作者:小新这篇文章主要介绍MySQL什么是数据的复合主键,文中介绍的...所谓的复合主键,就是指你主键含有一个以上的字...
  • 数据库主键、唯一约束和索引

    千次阅读 2021-11-23 17:31:46
    1、MySQL 的 主键。...(2)主键值必须唯一标识表中的每行,不能为 NULL,即同一个表中不可能存在两行数据相同的主键值。 2、MySQL 的 唯一约束。  MySQL唯一约束(Unique Key)是指所有记录中字
  • 使用sqlalchemy获取到的结果只包含...以及如何获取某张表的主键呢? from sqlalchemy.ext.automap import automap_base from sqlalchemy.orm import sessionmaker from sqlalchemy import MetaData, inspect, creat...
  • 现在2个表部分学校和学校 其中部分学校在A库、学校在B库 SCH_ID为关联主键 部分学校 AUTO_ID USER_ID COTY_NO SCH_ID SCH_NO SCH_NAME 1 17 123 341289001 1 职业学院 学校 SCH_ID SCH_NO SCH_...
  • mysql设置主键有什么用

    千次阅读 2021-01-19 06:36:18
    【相关学习推荐:mysql教程】mysql设置主键的作用是:1、什么是主键数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每行,通过它可强制的实体完整性。主键主要是用于其他的外键关联,以及本...
  • MySQL为什么需要一个主键

    万次阅读 2017-08-18 11:31:45
    注:创建一个表,创建主键良好的习惯或应当作为规范,若预测可能累计大量数据,必须必须必须设置主键,并且应当选择合适的主键,否则你会...表中行都应该可以唯一标识自己的列(或组列)。 一个顾客可以
  • 因为主键起始从实现角度来看是一个 唯一 非空 聚类索引, 聚类索引在一个表中只有一个,所以主键只有一个。至于为什么聚类索引在一个表中只有一个是因为聚类索引的数据物理顺序和索引排序方式一致,而物理存储...
  • sqlserver设置两及两以上主键

    万次阅读 多人点赞 2018-10-14 17:34:13
    首先要明确主键只有一个,但是我们可以设置主键组来设置主键。这样两列就都是主键了。设置方法: 利用图形界面操作 选中方法。按住shift,再点击你要选中的列就ok了。 利用SQL语句 alter table tablename ...
  • SQL--当一张的两外键指向同一主键

    万次阅读 多人点赞 2017-11-26 18:54:54
    最近遇到了这样一个问题,当一张表中有外键同时执行了另外主键,如何建立一张视图,让这两外键都找到相应的信息。来实例吧:第张表,归还记录:第二张表,用户:问题就是,归还记录表里有两字段,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 226,938
精华内容 90,775
关键字:

一个表中有且只有一个主键