当前位置: 首页 > news >正文

石家庄建设集团有限公司网站昆山设计公司

石家庄建设集团有限公司网站,昆山设计公司,软件开发业务流程图,门户网站建设服务收费2 数据模型 摘要#xff1a;数据模型#xff08;Data Model#xff09;是数据特征的抽象#xff0c;它从抽象层次上描述了系统的静态特征、动态行为和约束条件#xff0c;为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有三部分#xff0c;分别是…2 数据模型 摘要数据模型Data Model是数据特征的抽象它从抽象层次上描述了系统的静态特征、动态行为和约束条件为数据库系统的信息表示与操作提供一个抽象的框架。数据模型所描述的内容有三部分分别是数据结构、数据操作和数据约束。在本文中我们会谈及数据库历史上的三个数据模型以及谈论数据模型是如何使用约束来规约数据的。 文章目录2 数据模型2.1 层次数据模型2.1.1 基础概念2.1.2 结构2.1.3 虚拟记录2.2 网状数据模型2.2.1 基本概念2.2.2 联系记录2.2.3 结构2.2.4 单值系和无首系2.3 关系数据模型2.3.1 基本概念2.3.2 键 码2.3.2.1 候选键2.3.2.2 超键2.3.2.3 主键2.3.2.4 外键2.4 约束2.4.1 实体完整性约束2.4.2 域完整性约束2.4.3 参照完整性约束2.4.5 用户定义的完整性约束2.1 层次数据模型 2.1.1 基础概念 说明在现实世界中有很多数据都是具有层次的特征的由数据结构我们自然想到可以用树来表达现实世界层次数据模型就是基于这种想法提出来的。 层次数据模型的提出首先是为了模拟这种按层次组织起来的事物。 在下面我们会提到几个概念记录型字段记录。我们用一张图来清楚地表示 在这个表格中黄色部分表示记录的型蓝色部分表示记录。而记录的型里面某个属性叫做字段。 2.1.2 结构 说明层次数据模型中有着PCR关系这里的PCR并非高中生物课本的PCR而是指双亲子女关系Parent-Chlid-RelationshipPCR他是层次模型中最基本的数据关系他代表了两个记录型之间一对多的关系。例如学生和课程一个学生可以选修多个课程。 也就是说我们的层次数据模型就是基于PCR的一种模型其应该为一颗倒立的树除了根每个记录型都应该有他自己对应且唯一的父母但是每个父母可以有多个子女。 其实抛开这个问题不讲在现实世界中不是说所有的关系都是一对多的也有可能是多对一或者多对多这就是所谓的多元关系。假设我们有这么一个例子一个学生可以选择多门课一门课可以被多个学生选择。假设学生是父那么课就是子多门课只能对应一个父也就是说想要一门课要想能被多个学生选择那么根据PCR关系他必须复制多份一模一样的课出来如图所示 用PCR处理后 这样的话导致了数据冗余原本一个人工智能的课在数据库中拷贝了三份。 2.1.3 虚拟记录 说明由上面简单的例子可以知道PCR会导致数据冗余不但浪费存储空间还导致数据不一致。由此我们引出了虚拟记录的概念。 如果遇见上述的关系我们无须复制一份只需要在引用的地方用其指针来代替即可用指针替代的记录叫做虚记录虚记录通常用下标V表示指针用虚线箭头表示。 举一个例子来说 由图可知学生指向课程但是指过去无法指回来所以我们指向他的虚记录虚记录指回本体课程本体如果指向学生那学生无法指回课程所以课程本体指向学生的虚记录学生虚记录指向学生本体。 2.2 网状数据模型 2.2.1 基本概念 说明与层次数据模型类似在网状数据模型中也是以记录作为数据的存储单位。但是不同的是在网状数据模型中字段这个名词变成了数据项并且在层次数据模型中字段是最小单位不可再分的可是数据项是可以再分的我们把可以再分的数据项叫做多值数据项如例子所示 学生名学号班级年龄生日地址baka爱159年一班152000.1.25{酒店饭店} 在地址这个数据项中其对应了一个多值集合。这也侧面说明了多值数据项可以用有序的集合表示简单的多值数据项我们也叫做向量。 作为记录其在数据结构中还有对应的地址如果想要查找某一条记录只需要查对应地址即可每个记录有一个唯一地标识他的数据库码DataBase Key,DBK。DBK可以看成记录的逻辑地址可做记录的替身或用来寻找记录。 那么如何表达两团数据之间的联系呢比如两团数据一个是班级的数据一个是学生的数据那么两团数据的联系由什么表示呢这就要提到系set的概念了。 假如在班和学生两团数据中一个班对应多个学生那么我们叫把班级-学生的系叫做它们之间的联系。在这里例子中班为1而学生为n则我们把1的一方叫做首记录把N的一方叫做属记录。 需要注意的是在一个系的属记录中有时会包含多种类型的属记录例如班级-学生这个系中学生可以再分分为男学生和女学生那么此时我们把拥有多种类型属记录的系叫做多属系。 或者再举一个例子一个银行账户可以作为首记录而属记录是这个账户的一笔笔的账这些账可以是存款的、提款的或转账的他们分属于不同的记录型。 提示实际上多属性可以拆分为多个系比如班级-学生这个系可以拆分为班级-男学生和班级-女学生但是分开多个系你要来回在不同的系找人不方便所以对于多属系来说其优点是查找方便。 2.2.2 联系记录 说明在层次数据模型中我们有说到虚记录在网状数据模型中我们不需要考虑虚记录因为他并没有PCR关系就拿下面这个例子来说 班和学生构成一个系运动队和学生构成一个系学生既是“班-学生”的属记录也是“运动队-学生”的属记录无须用PCR复制无须用指针创建虚记录。 结果上面的例子我们可以总结出以下的道理 一个记录型可以作为几个系的首记录也可以作为几个系的属记录。一个记录型可以作为一个系的首记录也可以作为另一个系的属记录。但是一个记录型不能做一个系的首记录又做这个系的属记录。 第一小点和第二小点可以用一个例子“班级-学生”“家庭-学生”和“学生-选课”这三个系中学生作为中转站他可以做多个系的属纪录也可以做另外多个系的主记录。 第三小点也不难理解在“班级-学生”这个系中你不能说学生又是属记录又是主记录。 上面的叙述中第三点显然不符合现实。为什么这么说举个例子 职员和领导职员是领导的下属但是领导也是职员也就是说在领导也在职员记录型里面这显然是不符合要求的。但是现有的知识中没能解决这个问题所以网状数据模型引入了联系记录(link 记录)这个概念。 联系记录干了这么一件事情拿职员和领导的关系来说我们中间引入一个link变量来接收职员的箭头再把箭头指向领导。 上面这样表示的意思是一个领导下管理多个职员但是职员中也有领导。这样看可能看不出什么但是这样看呢 在上面我们谈论的班级-学生其对应的是一团班级可以理解为班级表和一团学生可以理解为学生表所以实际上我们说的系是系型而具体的某个学生某个班级就是系值也就是我们说的记录只是体现在系的层面上换了个名字。需要注意的是一个记录值不能出现在同一类型的多个系值当中打个比方就是学生表里面不能有两条一模一样的记录。 联系记录的另外一个用法是由于一个记录值不能出现同一系型的多个系值中所以比如说学生-课程这个系课程里面有一门数据结构它同时被两个人选但是它的记录不能出现在这个系型里面两次所以可以用联系记录做如下表示 从看到上图我们可以知道为了避免课4被两个学生用同一个记录所以我们将每个课和link挂钩用两个link来当课4的中转站。这样相当于是层次数据模型中的多元关系。 2.2.3 结构 说明谈完上面的知识我们又要说说网状数据模型的结构。在层次结构中我们用树来表示其结构但是在网状数据模型中我们用的是链表来实现如图所示 在这里要提到一个链表用指针串联也是有讲究的我们一般分为三类前向指针后向指针和首记录指针其中前向指针是必备的。 指针说明前向指针就是依次从根开始依次指向“下”一个记录后向指针和前向指针相反首记录指针属记录指向首记录2.2.4 单值系和无首系 说明实际上两个名词指的是同一个东西这种系通常没有首记录所以叫无首系或者具体点说一个单位里面有很多部门但是单位只有一个我们可以直接省略所以无首系又叫做单值系。 再比如“班级-学生”班级有很多个我们不能说“班级-学生”是单值系但是“学校-班级”中的学校只有一个总而言之单值系和无首系都是相对的要视具体问题来看。 2.3 关系数据模型 实际上上面两个数据模型我们在杂谈一提到过都是旧时代的产物了基本上没什么人用了目前主流的数据模型是这一小节要提到了关系数据模型。 关系数据模型是以集合论中的关系概念为基础发展起来的数据模型他的基本数据结构是表我们一般叫做关系。我们把现实世界的实体和实体之间的联系用表来表示。 在这里要先说明实际上关系并不能完全地等同于表严格意义上来说要说等于一张加了特殊限制的二维表。因为在关系数据模型中默认其遵循第一范式即不允许表中套表。关于范式问题我们在后面的小节中会提到。当然有特殊需要时我们可以选用不遵守第一范式的扩充关系数据模型。 2.3.1 基本概念 在关系数据模型中以往模型的术语在这里变得大为不同。下面用一张图来说明 黄色荧光笔部分叫做属性具体的某个属性叫做属性名在不混淆的情况下我们可以简称属性。蓝色荧光笔部分叫做元组元组可以看做是网状数据模型中我们说的记录。属性名对应的取值范围叫做属性域属性中有n个属性名我们就叫n目上面的图表中这是一个五目的关系。整个表我们叫做关系用R或rR表示从这些概念来看关系是n目元组的集合。一般来说我们描述关系是用R属性1属性2...属性n来描述的具体到这里的例子学生表SnoSnameSsexDnoDname。 既然说到关系是集合就势必要要说到高中数学中集合的概念集合具有无序性确定性互异性三大特性这也说明了01元组放在第一行和放在第二行是一样的无序性互异性说明元组是不能重复的确定性说明元组一定要是确定的不能模棱两可。 还有从上表我们可以看到表中存在NULL值空值虽然名字这么念可实际上并不是一个值它表示该地方未知或不存在具体到这里的例子来看该学生很可能已经入学但是还没分配属于哪个系所以该学生不知道哪个系的。 不同属性是可以有相同的域的比如出生年份和生日他们的域都是有限集合的时间但是虽然域相同但是他们所指的意思不一样。 提示空值会给数据库访问和更新带来很多困难所以应该尽量避免使用空值。 2.3.2 键 码 造成这一小节的标题原因来源于英文因为英文是key翻译过来就是键或码。在这一小节中很多名词在不同的书上叫法都不同。 2.3.2.1 候选键 说明候选键候选码也叫键通俗来讲他是某个属性或属性组多个属性通过这个属性我们可以唯一地确定某一个元组。候选键实际上是狭义的键广义的键应该指所有键种类的集合。 拿上面这张表来说候选键应该是Sno。有人说Sname呢抱歉名字可能重名但是学号不可能重复。 其中候选键所包含的属性叫做主属性不包含的叫做非主属性。对应到上表Sno是主属性其余属性皆为非主属性。 提示关于候选键有两者须知。 其一候选键在关系中至少有一个这对应到集合概念中的确定性如果你连候选键都没有说明你连某个元组都确定不了那这不就是模棱两可吗。 其二候选键里不可以包含候选键比如说(SnoSname)是候选键吗不是因为这个属性集里面包含了候选键。 2.3.2.2 超键 说明在上面的例子中我们曾经提到过(SnoSname)当时我们说到它不是候选键但是能唯一确定一条元组我们把这种属性集叫做超键。 2.3.2.3 主键 说明拥有一个或多个候选键的时候在里面挑一个作为主键其他作为候补键这里不是候选哦是候补哦看好字主键有些书叫做主码关键值关键码。 2.3.2.4 外键 说明用这个r1里的某个键可以引用寻找其他关系中的某条元组也就是可以引用其他表的主键那我们叫这个r1上的某个键为外键。有些书叫做外码或外值而关系r1也叫做外码依赖的参照关系另外的那张表被叫做被参照关系。 在下一小节中我们会提到参照完整性约束参照完整性约束要求参照关系中的任意元组在特定属性上的取值必然等于被参照关系中某个元组在特定属性上的取值。 提示外键实际上是一个逻辑指针也就是r1的某个键通过其他关系的指针去寻找对应的元组。所以指针必须非空。 2.4 约束 在数据库系统中为了维持数据库中数据的一致性使其能够准确地描述显示世界所以要采用一定的约束这里我们讲的约束是针对关系数据模型的在后面我们会讲到更多的约束。 2.4.1 实体完整性约束 前面我们说过允许关系里面出现空值但是主键一定不能为空每个关系都应该有一个主键每个元组的主键的值都是唯一地主键的值不能为NULL否则无从区别和识别元组。 2.4.2 域完整性约束 简而言之你的属性值必须得是域中的值。比如说学号是int类型的你把它的值填了个char的一定会报错。 2.4.3 参照完整性约束 参照完整性约束要求参照关系中的任意元组在特定属性上的取值必然等于被参照关系中某个元组在特定属性上的取值。参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件目的是保证数据的一致性。参照完整性又称引用完整性。举个简单的例子你说学生表中的宿舍区对应宿舍表中的宿舍区那么你学生表中的宿舍区有个C栋宿舍表中的宿舍区一定要有C栋不能说没有。 2.4.5 用户定义的完整性约束 说明这是针对某一具体数据的约束条件应该由应用环境决定。比如年龄不可能是负的性别不可能不男不女不人妖。一般来说常见的用户定义的完整性约束如下 NULL代表空值但是他不是一个值不等于0而是代表这里没有值。在以前我们是二值逻辑即要么true要么false引入NULL后我们由二值逻辑变为三值逻辑。NOT NULL不允许对应的属性值为空。UNIQUE不允许属性值重复即列值不能重复。DEFAULT如果属性值为空则填个默认值上去。一般默认值有三种情况 第一种是事先定义好的字符比如如果为空就补个0上去。第二种是置为空格字符串把NULL变成长度为0的字符串或者变成某一个不可能出现的值。第三种就是变成NULL如果你要这么做那你 前面不能再加一个NOT NULL不然语义矛盾。 CHECK利用他可以说明属性值的范围也就是加限制条件比如人的年龄不可能为负数你可以加age0。
http://www.zqtcl.cn/news/863041/

相关文章:

  • h5响应式的网站建站空间哪个好
  • 徐州网站建设与推广公众号开发技术风险
  • 男女做差差事的视频网站自己做一个小程序要多少钱
  • 临沂网站建设哪家好重庆建设招标造价信息网站
  • 筑巢网络官方网站深圳网站开发设计公司排名
  • 镇江市网站制作网页的代码实例
  • 吉林省网站制作公司有哪些唐山设计网站公司
  • 浙江国泰建设集团有限公司网站ps软件下载电脑版免费怎么下载
  • 昆明网站建设价格自力教育
  • 黄冈网站推广软件视频下载孝感做网站xgsh
  • 用jsp做一网站的流程图互联网博客网站
  • 南宁一站网 给网站做营销微网站和网站同步像素
  • 如何建设一个视频小网站软件做网站
  • 小企业网站建设公司哪家好网站怎样设计网页
  • 那个网站做搬家推广比较好wordpress twenty eleven
  • 微站图片临淄信息网招聘最新信息
  • 投诉举报网站建设方案宠物网站 模板
  • 生小孩去什么网站做登记有特点的个人网站
  • 汉中市住房和城乡建设局网站学网站建设需要什么
  • 深圳网站建设外包公司排名网络引流怎么做啊?
  • 关于做暧暧的网站php 网站授权
  • 网站上添加子栏目wordpress群组
  • 一站式手机网站制作有没有代做ppt的网站
  • 西安火车站网站建设网站的设计需要什么
  • 弹幕网站开发代码欧洲人喜欢什么样的服务器
  • 有哪些做壁纸的网站好ftp如何备份网站
  • 网站如何推广出去wordpress foopen
  • 网站空格键代码台州椒江网站建设公司
  • node 网站开发 视频教程汉阳网站推广
  • 广西新农村建设工作专题网站怎样创建公司网站