不必须,一般情况下都是不加外键的,外键靠应用中维护。举一个例子
教师表中有教师ID(主键)教师姓名
学生表有学生ID (主键) 学生姓名 教师ID
学生表中的教师ID应该是学生表的外键,不过正常情况不会设置成外键
因为
假如教师表中有一条记录 编号 1 ,教师姓名 ,李老师
学生表中也有一条记录 学生ID 1 ,学生姓名 小明 ,教师ID 1
当学生表存在这样的记录的时候,教师表中 编号1的李老师是无法被删除的,因为有其他的表再引用这个编号1的老师。这样修改测试很麻烦。
正确的做法,是不设成外键
当应用程序中需要添加一条学生记录的时候,老师这一项将不会要求用户自己填写,而是做成功能按钮,例如单选按钮,下拉列表框。保证往数据库中存储的却是是李老师就行,这就是一楼所说的外键靠应用中维护。
一楼正解
关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。
关系型数据库的特点有关系数据库的定义造成元数据的一张表格或造成表,列,范围和约束的正式描述,每个表格包含用列表示的一个或更多的数据种类。,每行包含一个唯一的数据实体,这些数据是被列定义的种类。
第一范式(1NF):每一个属性都是原子项,不可分割
INF中所述的不可分割,是指在可分割的情况下必须分割,这是在应用环境中来判断的,当属性是文档时,虽然文档有段落标记,但还是不应该分割。
第二范式:每个非主属性要完全函数依赖于候选键,或者是主键。
关键词是“完全依赖”,与“部分依赖”或“局部依赖”相对,如果候选键或主键由两个属性组成,非主属性不能只依赖与其中一个或部分属性。
比如:股票日行情表由股票代码、股票名称、日期、收盘价四个属性组成,这就违反了2NF,因为“股票名称”部分依赖于“股票代码”。
第三范式:所有非主属性对任何候选关键字都不存在传递依赖
关键词是“传递依赖”,如果非主属性通过另一个非主属性依赖主键,则是传递依赖。
比如:股票基本信息表由股票代码、股票名称、企业名称、所在地区、所在省份组成,其中“所在省份”依赖于所在地区,存在传递依赖。
-----------------------------------
几个相关术语:
超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键
候选键(candidate key):不含有多余属性的超键称为候选键
主键(primary key):用户选作元组标识的一个候选键称为主键
主属性(Prime Attribute):候选键中的属性称为主属性
非主属性(Non-Key Attribute):不包含在任何候选键中的属性称为非主属性。
数据库(Database)Structured Query Language(SQL)Client端和Server端的桥梁,Client用SQL来象Server端发送请求,Server返回Client端要求的结果。现在流行的大型关系型数据库有IBM DB2、IBM UDB、Oracle、SQL Server、SyBase、Informix等。什么叫关系型数据库关系型数据库并不是唯一的高级数据库模型,也完全不是性能最优的模型,但是关系型数据库确实是现今使用最广泛、最容易理解和使用的数据库模型。大多数的企业级系统数据库都采用关系型数据库,关系型数据库的概念是掌握数据库开发的基础,所以本节的问题也成为NET面试中频繁出现的问题之一。所涉及的知识点关系型数据库的概念关系型数据库的优点分析问题关系型数据库的概念所谓关系型数据库,是指采用了关系模型来组织数据的数据库。关系模型是在1970年由IBM的研究员EFCodd博士首先提出,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成为数据库架构的主流模型。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。下面列出了关系模型中的常用概念。关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名。元组:可以理解为二维表中的一行,在数据库中经常被称为记录。属性:可以理解为二维表中的一列,在数据库中经常被称为字段。域:属性的取值范围,也就是数据库中某一列的取值限制。关键字:一组可以唯一标识元组的属性。数据库中常称为主键,由一个或多个列组成。关系模式:指对关系的描述,其格式为:关系名(属性1,属性2,…,属性N)。在数据库中通常称为表结构。关系型数据库的优点关系型数据库相比其他模型的数据库而言,有着以下优点:容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解。使用方便:通用的SQL语言使得 *** 作关系型数据库非常方便,程序员甚至于数据管理员可以方便地在逻辑层面 *** 作数据库,而完全不必理解其底层实现。易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率。近几年来,非关系型数据库在理论上得到了飞快的发展,例如:网状模型、对象模型、半结构化模型等。网状模型拥有性能较高的优点,通常应用在对性能要求较高的系统中;对象模型符合面向对象应用程序的思想,可以完美地和程序衔接,而不需要另外的中间转换组件,例如现在很多的O\R Mapping组件;半结构化模型随着XML的发展而得到发展,现在已经有了很多半结构化的数据库模型。但是,凭借其理论的成熟、使用的便捷以及现有应用的广泛,关系型数据库仍然是系统应用中的主流方案。
以上就是关于数据库设计的问题设计关系型数据库时给表加了主键是不是必须要有外键的全部的内容,包括:数据库设计的问题设计关系型数据库时给表加了主键是不是必须要有外键的、什么是关系型数据库它有哪些特点、创建关系型数据库有几种范式并详述各个范式之间的递进关系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)