`
lizaochengwen
  • 浏览: 659924 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库:唯一性约束_alternate key(替换键)

阅读更多
数据库:唯一性约束

    所谓唯一性约束(unique constraint)不过是数据表内替代键的另一个名称而已。替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据重复的现象。比方说,你可以用车辆识别代号(VIN)作为汽车(Automobile)数据表的替代键,在汽车数据表里,主键是汽车识别号(Automobile Identification),这是一种由系统自动生成的ID。你可以在汽车表内对VIN施加唯一性约束,同时再创建一个需要VIN的表。在这个新表内可以声明外键指向汽车表。这样,只要汽车表内有VIN输入数据库就会检验VIN输入结果。这就是保证数据库内数据完整性的另一种有效的措施。

create table parent
    (parent_id int not null,      -- Primary key
    parent_alternate_key int not null,     -- Alternate key
    parent_col1 int null,
    parent_col2 int null,
      constraint pk_parent_id primary key (parent_id),
      constraint ak_parent_alternate_key unique_
       (parent_id, parent_alternate_key)
   

使用约束:
create table child2
    (child2_parent_id int not null,     -- Primary key/Foreign key
    child2_id int not null,     -- Primary key
    child2_col1 int null,
    child2_parent_alternate_key int not null,  -- Foreign key
        constraint pk_child2 primary key (child2_parent_id, child2_id),
        constraint fk_child2_parent foreign key (child2_parent_id)
    references dbo.parent(parent_id),
        constraint fk_pk_ak_child2_parent foreign key _
      (child2_parent_id, child2_parent_alternate_key) _
      references dbo.parent(parent_id, parent_alternate_key)
   


primary key 与UNIQUE的区别
1.一个基本表中只能定义一个primary key,但可以定义多个UNIQUE的约束
2.指定primary key的一个列或多个列的组合都不能为NULL,而UNIQUE所约束的唯一键则允许为空
3.不能为一个列或多个列既定义primary key,又定义UNIQUE约束


MYSQL目前不支持外键,其理由如下:
1.外键使生活更复杂,因为外键的定义必须存储在一个数据库中并且实现他们将破坏使用能被移动、拷贝和删除文件的全部“好方法”。
2.速度影响对INSERT和UPDATE语句是可怕的,并且在这种情况下几乎所有的FOREIGN KEY检查都是无用的,因为不管怎样你通常以正确的顺序在正确的表中插入记录。
3.当更新一张表时,也有在许多表上保存锁的需求,因为副作用可以串联通过全部数据库。首先从一张表中删除记录并且随后从其他表中删除他们,这更快。
4.你再也不可以通过做一个全面的表删除并随后恢复所有的记录的方法来恢复一张表(从新来源或从一个备份)。
5.如果你有外键,你不能倾倒和恢复表,除非你以一个非常特定的做这些。
6.很容易做一个“允许的”的循环定义使得不可能用一个单个create语句重建每一个表,就算定义可行又可用。
分享到:
评论

相关推荐

    spree_alternate_prices:Spree Alternate Prices - 提供替代变体价格(多币种)

    gem 'spree_alternate_prices' , github : 'aegixx/spree_alternate_prices' , branch : '2-4-stable' 捆绑您的依赖项: bundle (可选)这是建立在 spree_multi_currency 之上的,所以首先运行该安装生成器...

    alt_path.zip_alternate path _between

    在IT领域,尤其是在网络设计、路由算法或者图论中,“Alternate Path Between”是一个重要的概念,它涉及到网络的可靠性与容错性。标题“alt_path.zip_alternate path_between”可能指的是一个压缩包,其中包含了...

    ExStudPE_V1.6.4.3_ALTERNATE_最终完整版_含全部插件.7z

    __[ExStudPE_V1.6.4.3_ALTERNATE_最终完整版_含全部插件.7z]__ ----------------------------------------- ExStudPE Visual Tools 使用说明 ~ 强大的PE/PE64/NE/LE/COFF/LIB/ELF 格式分析、调试、编辑工具 ~ ...

    Oracle9i的init.ora参数中文说明

    用来建立数据库连接的唯一服务名。如果要在没有调度程序的情况下仍能连接到数据库, 请将该值设置为与例程名相同。此参数自 8.1.3 版起已废弃。 值范围: 根据操作系统而定。 默认值 :0 mts_sessions: 说明 : 指定...

    Beginning Perl for Bioinformatics

    The files here are gzipped tar files of examples and ...how alternate solutions to a programming problem can all be "correct". Thanks for your interest, and good luck with the material! Sincerely, Jim

    数据库基础知识个人整理版-强烈推荐.docx

    - 侯补键(Alternate Key):除主键外的其他候选键。 - 外键(Foreign Key):引用其他关系或本关系主键的属性,用于建立实体之间的联系。 3. 关系(Relation): - 关系:由所有属性域定义的多元关系,表现为二...

    U盘(硬盘)安装Ubuntu10.10_alternate&desktop

    标题中的“U盘(硬盘)安装Ubuntu10.10_alternate&desktop”指的是通过USB闪存驱动器或硬盘来安装Ubuntu 10.10的两种不同版本—— Alternate 和 Desktop。Ubuntu的Alternate版本是一个文本模式的安装程序,适合于低配...

    html5实现移动端适配完美写法

    link rel=alternate media=only screen and(max-width: 640px) href=http://pc_url > 在移动版网页(http://mobile_url) 上,所需的注释应为: <link rel=canonical href=http://mobile_url > 之前的Meta...

    rabbitmq的接口函数说明,api参数使用说明

    - `routing_key`: 路由键,用于确定消息如何从交换机路由到队列。 - `arguments`: 扩展参数表,用于传递额外配置选项。 #### 9. amqp_basic_qos(控制预取消息数) **声明**:`amqp_basic_qos_ok_t* amqp_basic_qos...

    设备描述表概述.pptx

    - Polygon-fill mode:默认为ALTERNATE,交替填充多边形内部。 通过调用DC的成员函数,可以改变这些属性,如SetBkColor改变背景颜色,SetTextColor设置文本颜色,SetMapMode设置映射模式等。 在实际编程中,开发者...

    javascript-image_alternate_text:返回图像的替代文本

    在网页设计和开发中,图像元素是不可或缺的一部分。...无论是获取、修改还是动态处理`alt`文本,都是提高网页可访问性和用户体验的重要手段。了解并熟练运用这些技巧,能让你的网页设计更加友好和专业。

    数据库词汇(新版).docx

    13. Candidate key(候选键,ER 关系模型):仅包含唯一标识实体所必须得最小数量的属性/列的超键。 14. Cardinality(基数):描述每个参与实体的可能的关系数目。 15. Centralized approach(集中化方法):用于...

    数据库单词1

    11. **约束(Constraint)**:约束是确保数据库中数据有效性和一致性的规则,如非空约束、唯一性约束和外键约束。 12. **数据模型(Data model)**:数据模型是描述数据、数据之间的关系以及数据约束的整体框架,常见的...

    数据库专业英语.pdf

    22. **Composite key**:复合键是由多个列组成的主键,共同保证数据的唯一性。 23. **Concurrency control**:并发控制是DBMS服务之一,确保在多用户环境中同时执行的事务不会破坏数据完整性。 24. **Constraint**...

    libusb 源码(win32 & linux USB开发)

     和名字的意思一样,此函数设置当前设备配置的interface descriptor,参数alternate是指interface descriptor中的bAlternateSetting。返回0成功,失败  usb_resetep  函数定义: int usb_resetep(usb_dev_handle ...

    第六篇 串口通信

    GPIO_InitStruct.Alternate = GPIO_AF1_USART1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化USART1 UART_HandleTypeDef huart1; huart1.Instance = USART1; huart1.Init.BaudRate = 9600; huart1.Init....

    关系数据库基本原理-关系模型和关系代数PPT学习教案.pptx

    在关系模型中,主键的选择至关重要,因为它决定了数据的唯一性和完整性。 关系模型的数据完整性约束规则包括实体完整性、参照完整性和用户定义的完整性。实体完整性要求主键的值不能为空;参照完整性规定外键的值...

    AS主题包:Solarized Light (Alternate)

    AS主题包:Solarized Light (Alternate).jar…………………………

    数据库原理 选择题及答案

    当插入操作违反关键的唯一性属性时,插入操作将失败。如果插入的主键具有空值,插入操作也将失败。 4. 联合兼容性 两个表要union兼容,需要对应的列来自每个表都具有相同的域(Domain)。 5. 数据类型 在关系...

    数据库设计中英文术语表.doc

    24. **Constraint(约束)**:用于保证数据一致性的规则,如唯一性约束、非空约束等。 25. **Data conversion and loading(数据转换和加载)**:将旧数据迁移到新数据库的过程,同时更新应用程序。 26. **Data ...

Global site tag (gtag.js) - Google Analytics