`
gwj41
  • 浏览: 99704 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

外键可以为空

阅读更多
一、

关于数据库的外键,以前我一直以为不允许为空的,今天看到一个项目中使用了空的数据库外键,很惊讶,后来才发现是自己以前错误了。数据库外键是可以为空的。

不过为空的数据跟与之相关联的表就没有关系了。一般不采用。

二、

   按照数据库理论上说的应该是外键可以为空,为空表示其值还没有确定;如果不为空,刚必须为主键相同。举个例子:有两张表,系信息表,学生信息表,学生信息表中的系号为外键,此时外键可以为空,表示该学生还没有确定所在的系;如果系号不为空则系号必须在系信息表中存在!
外键不能为空只是SQLSERVER等一些数据库系统的特殊规则而已!

三、

外键可以为空的,一个表的关键的标识是主键,外键是否为空不影响表的结构及数据库设计概念的.外键只起个关联表的作用.
至于书上提到的外键不能为空是对的,但实践中在数据库里没有创建关联时,好像是外键,实则不是外键.

   虽然定义了关系
但是属于未强制关系,这种关系的外键约束被禁用。所以楼主定义无实际意义。所以可以插入null数据

   外键的值不允许参照相应主表中不存在的主键值,或者外键为空值.
不知道楼主怎么理解的这句话,我理解为外键可以为空
外键的值或者参照相应主表中存在的主键值,或者外键为空值

四、

联机丛书中准确的解释是

如果在 FOREIGN KEY 约束的列中输入非 NULL 值,则此值必须在被引用的列中存在,否则将返回违反外键约束的错误信息。

也就是说外键中可以有null,除非外键列定义了not null

五、

外键当然可以为空了
看看你引用的书上的话
"外键的值不允许参照相应主表中不存在的主键值,或者外键为空值. "
后面不是说了 "或者外键为空值 ",不就是说外键可以为空的吗
外键要有值的话必须是主表中存在的主键值,可不就是空值

外键可以为空值,但如果有值的话一定是你参照的那个主表中的主键值.
分享到:
评论
1 楼 heming_way 2012-03-23  
谢谢你,解决了我的一些疑惑,呵呵

相关推荐

    Mysql增加外键的方法

    常见的触发限制参数有ON DELETE和ON UPDATE,它们可以设置成多种参数,包括CASCADE(级联删除或更新)、RESTRICT(限制删除或更新)、SET NULL(将引用列置为空)和SET DEFAULT(设置默认值)。不加参数时,默认行为...

    数据库系统概论答案

    非主属性的外键可以为空,但主属性的外键不能为空。 4. **SPJ数据库示例**: - 示例展示了如何使用关系代数表达查询,例如通过σ、π操作找到特定条件下的供应商编号(SNO)。 5. **等值连接与自然连接**: - **...

    向存在外键的表中插入数据时出错的原因以及插入外键为空的方法

    在本例中,我们创建了一个名为`Course`的表,其中`Cno`是主键,而`Cpno`是一个外键,它引用的是`Course`表自身的`Cno`字段,形成了自引用的关系。这种设计常用于表示层级或者递归关系,如课程的前置课程。 当尝试向...

    5_数据库完整性1

    外键可以为空,但其行为可以根据需要配置,如ON DELETE和ON UPDATE子句,分别定义当引用表中的记录被删除或更新时,如何处理被引用表中的相关记录。 5.3 用户定义的完整性是针对特定应用的数据规则,它允许用户定义...

    数据库概念模型设计

    - 外键可以为空,表示暂时没有关联。 - 一张表中可以有多个外键,用于关联不同的实体。 #### 七、示例:部门与员工表之间的关联 以部门表(`dept`)和员工表(`emp`)为例: - 部门表的主键为`deptno`,员工表...

    数据库系统概论(第四版)课后习题答案

    3. 完整性规则涉及实体完整性(主键属性不允许为空)和参照完整性(外键可以为空,但通常指向另一个存在的主键)。外键属性为空的情况通常是关联关系不确定或不存在。 4. SPJ数据库的示例展示了SQL查询的不同类型,...

    数据库系统概论第五版课后习题答案王珊版

    - **参照完整性**:外键可以为空,当它不是主属性时,可以为空,表示与其他实体无关联;若外键是主属性,其值必须等于另一个表中某个主键的值,否则不能为空。 4. **关系代数运算**:基础运算有并、差、笛卡尔积、...

    数据库判断题数据库判断题.doc

    5. 数据完整性:实体完整性要求主码不能为空,而外键可以为空或引用主码。此外,数据库还通过规则和检查约束保证数据的完整性,但规则不能像检查约束那样直接应用于列。 6. 存储过程和触发器:存储过程是预编译的...

    数据库系统概论后习题答案王珊版.doc

    - 参照完整性规则:外键可以为空,但当它不是主属性时,其值要么为空,要么等于其他表中主键的值。外键用于维护两个表之间的关联,确保数据一致性。\n\n**SQL语言的特点**\n\n1. 综合统一:SQL集成了DDL(数据定义...

    如何处理数据库中的外键

    - **NOT NULL**:外键字段不允许为空,确保每个记录都有有效的引用。 - **UNIQUE**:外键字段的值必须在参照表中是唯一的,防止重复引用。 - **CASCADE**:当主表中的记录被删除或更新时,相关联的外键记录也会...

    数据库系统概论第五版课后习题答案王珊版.doc

    参照完整性则规定外键可以为空,但若外键本身不是主属性,当且仅当参照关系中无匹配记录时,其值才可为空。 4. SPJ数据库示例: SPJ数据库包含供应商(S)、零件(P)、工程(J)和SPJ关系模式。习题中的SQL查询涉及了...

    数据库系统概论简答题部分1

    - 参照完整性:外键可以为空,当它不是主键时,表示没有关联的主键记录。为空的情况通常发生在关联尚未建立或允许不关联的情况下。 9. SQL语言的其他特性还包括支持事务处理、并发控制、权限管理等,使得SQL成为...

    oracle主外键查询

    在一个表中只能定义一个主键,且主键值不允许为空。主键可以由单个字段构成,也可以由多个字段构成(复合主键)。设置主键后,Oracle会自动创建一个唯一索引,用以提高查询效率。 #### 2. 外键(Foreign Key) 外键...

    数据库复习重点 自己整理的

    4. 完整性规则:在关系模型中,实体完整性规则要求主键属性不能为NULL,参照完整性规定外键可以为空,但若外键是另一个表的主键,则不能为空。这是为了保证数据的一致性和完整性。 5. 并发控制:并发操作可能导致...

    数据主键和外键的错误总结

    3. **主键值可为空**:主键的值不应该允许为空,这是其最基本的特性之一。若主键允许为空,则会破坏数据的一致性和完整性。 - **解决方法**:在创建表时,确保主键字段上加上NOT NULL约束,以防止插入空值。 4. *...

    2021-2022计算机二级等级考试试题及答案No.15254.docx

    外键可以为空,但通常用来唯一标识一个元组,不是元组本身。 7. 微机总线:计算机的总线由数据总线、地址总线和控制总线组成,用于在系统内部传输数据和指令。 8. Word的人工分页符:人工分页符是不可见的,但可以...

    2021-2022计算机二级等级考试试题及答案No.5485.docx

    17. 外键可以为空,它是参照完整性的一种体现,但不是唯一标识元组的属性。 18. 在C++中,尝试定义一个未初始化的字符型常量(如`const char ch;`)是错误的。 19. 当对象初始化后,其成员变量通常是不可修改的,...

    2021-2022计算机二级等级考试试题及答案No.11466.docx

    外键的取值可以为空:正确理解了外键可以为空的情况。 - C. 外键是所参照关系的主键或唯一性索引的属性列:正确理解了外键与主键之间的关系。 - D. 外键是唯一标识元组的一个或一组属性:错误理解了外键的定义,...

Global site tag (gtag.js) - Google Analytics