草庐IT

第一章-绪论

Mr-shne 2023-03-28 原文

1.1 数据库系统概述:

  • 1.1.1数据库的4个基本概念

  • 数据库的四个基本概念 - 数据 - 数据库 - 数据库管理系统 - 数据库系统
  • 数据:数据是数据库中存储的基本对象
    • 数据是描述事物的一个符号,可以描述数字、图形、声音、语言等待,但都要经过数字化后存入计算器
  • 数据库(简称DB):数据库是长期存储在计算机内,有组织、可共享的大量数据的集合
    • 有组织:统一存放,如全部在D盘,全部在E盘
    • 可共享:可以多个程序员使用,共同使用
  • 数据库管理系统(简称DBMS):数据库管理系统的作用就是,科学地组织和存储数据,高效地获取和维护数据
    • 数据库管理系统的主要功能:
      • 数据的定义:DMBS提供数据定义语言(简称DML),用户可以通过它方便地对数据中的数据对象进行定义
      • 数据组织、存储和管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、数据、数据的存储路径
      • 数据操纵功能:用户可以使用DMBS提供的DML对数据库进行增删改查等基本操作
      • 数据库的事务管理和运行管理:数据库中建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户数据并发性以及发生故障后的系统恢复
      • 数据库的建立和维护功能:数据库初始数据输入、转换功能,数据库的存储、数据库的重组织功能和性能监视、分析功能等
  • 数据库系统(简称DBS ):数据库系统一般由于数据库,数据库管理系统、应用系统、数据库管理员构成
    • 数据库系统在计算机中属于在:基础软件普通  
    •    
  • 1.1.2数据管理技术的产生和发展 

  • 数据库管理技术经历了:人工管理、文件系统、数据库系统3个阶段
  • 为什么会有不同的数据管理阶段? 因为依据的计算机的发展阶段,从没有计算机操作系统到有文件系统在到数据库管理系统
  • 人工管理特点:
    • 数据不保存(因为当初是用纸带来表示0和1,计算机读取完就完了,怎么可能保存)
    • 应用程序管理数据(程序和数据绑定,程序没了数据就没了,不是分开执行) 
    • 数据不共享(都不能保存,怎么共享)
    • 数据不具有独立性(因为数据和程序是绑定在一起的)
  • 人工管理缺点:数据的逻辑结构或管理结构发生变化后,必须对程序做向右的修改,加最了程序员的负担   
  • 文件系统特点:
    • 数据可以长期保存(可以保存到计算机的文件里面)
    • 由文件系统管理数据  
  • 文件系统缺点:
    • 数据共享差,冗余度大(如:可能一个文件系统只能一个程序员使用,文件和文件中不能共享,冗余:文件中的相同字段过度重复)
    • 数据独立性性差
  • 数据库系统特点:
    • 数据结构化(如:学生管理系统,学生的个人信息按一定的结构保存起来,学生的选课按一定的结构保存起来)
    • 数据共享性高,冗余低,易扩充
    • 数据独立性高
    • 数据由DBMS统一管理和控制  

1.2数据模型

      什么是数据模型?对现实世界数据特征的抽象(如:观察某个事物的特征,按照它的特征去建立一个模型,在按照整个模型去创建数据库)

  • 1.2.1两类数据模型
  • 数据库模型应满足三个方面要求:
    • 能比较真实地模拟现实世界
    • 容易为人理解(如:技术的模型的字段,要看了就知道,姓名就是姓名,不用用abc去使用)
    • 便于在计算机上实现(如:二维表就容易实现,二维表拆分了就不容易实现) 
  • 根据模型应用的不同目的,可以分为两类:
    • 第一类概念模型:
      • 概念模型也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计
      • (这一阶段,就是按照用户对信息的理解来建设数据库)
    • 第二类是逻辑模型和物理模型:
      • 逻辑模型:逻辑模型保包含了层次模型(树一样的)、网状模型、关系模型、面向对象模型和对象关系模型等。它是按计算机系统的观点的数据建模,主要用于DBMS的实现
      • 物理模型:物理模型是对数据最底层的抽象,它描述数据在系内部的表示方式和采取方法,在磁盘或磁带上的存储方式和采取是面向计算机系统的
  • 1.2.2数据模型的组成要素

  • 数据模型通常由数据结构、数据操作和完整性约束三部分组成
  • 数据结构:数据结构描述数据的组成对象以及对象之间的联系,数据结构是所描述的想类型的集合,是对系统静态特征的描述
  • 数据操作:数据库主要由查询和更新(插入、删除、修改)两大类操作。数据操作是都对系统动态特征的描述
  • 完整性约束:数据的完整性约束条件是一组完整性规则
    • 例:在某表中,张三的id是001,就不能在另一个表001是李四
    • 例:在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件*(实体完整性是:唯一标识(key))
  • 1.2.3概念模型

  • 概念模型是现实世界到机器世界的一个中间层,表现为:(机器世界 == 计算机)
    • 概念模式用于信息世界的建模
    • 现实世界到信息世界的第一层抽象
    • 数据库设计人员进行数据库设计的有力工具
    • 数据库设计人员和用户之间进行交流的语言
    • 概念模型要求:
      • 具有较强的语义表述能力
      • 能够方便、直接的表述应用中的各种语义知识
      • 简单、清晰、易于用户理解
  • 信息世界中的基本概念:
    • 实体:客观存在并相互区别的事物称为实体。实体可以是具体的事、物,也可以是抽象的概念或联系
      • 例:一个学生、一个部门、一门课、选择等都是实体
    • 属性:实体所具有的某一个特征称为属性,一个实体有若干个属性
      • 例:一个学生实体,它是由,学号、姓名、性别等属性组合构成
    • 码(关键字):唯一标识实体的属性集称为码
      • 例:通过该码能确定一条信息,如身份证就能确定某个人
    • 域:域是一组具有相同数据类型的值的集合。属性的取值范围来自某个域
      • 例:学号的域为8位整数,学生年龄的域为整数,性别的域是男和女
    • 实体型:具有相同属性的实体,必然具有共同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体,称为实体型
      • 例:学生都有姓名、年龄、学号,张三有李四有,把它们都有的特征归纳,为学生就是一个实体型
        • 说白了就是把公共的取出来,形成一个共同有的实体
    • 实体集:同一类型的集合称为实体集
      • 例:全体学生就是一个实体集
    • 联系:在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界在反映为实体(型)内部的联系和实体(型)之间的联系
      • 实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体集之间的联系
      • 例:老师教学生是一种联系(不同实体集的联系),班长管学生是一种联系(同一类的联系)
  • 两个实体型之间的联系:
    • 一对一联系:
      • 实体集(A)中每一个实体,实体集B中至多有一个(也可以没有),实体之间的联系
      • 例:一个班只有一个班长 就是一对一(实体A就是班级 实体B就是班长) 
    • 一对多联系(1:n):
      • 实体集(A)中的每一个实体,和实体集(B)中的多个实体(也可以没有)与之联系
      • 例:一个班有多个学生 就是一对多(实体A就是班级 实体B就是学生)
    • 多对多联系(m:n):
      • 实体集(A)中的每一个实体,实体集(B)中有n个实体与之联系,分之实体集(B)中每一个实体和实体集(A)中有n个实体与之联系
      • 例:一门课程有若干个学生选修,而每一个学生可以同时选修多门课程 (实体A就是课程 实体B就是学生,反之
  • 两个以上的实体型之间的联系:
    • 两个以上的实体型之间也存在一对一,一对多,多对多联系
    • 一对一:
    • 一对多:
  • 单个实体型内的联系:

    • 同一个实体集内的各实体也存在一对一、一对多、多对多

    • 一对一:

    •  

  • 概念模型的一表示方法:实体-联系图(E-R图):

    • E-R图就是把现实世界中的需求和实体之间的联系通过E-R图表示出来,在根据E-R图设计出二维表 

    • E-R图提供了表示实体、属性和联系的方法

      • 实体型:用矩形表示

      • 属性:用椭圆形表示

      • 联系:用菱形表示 

  • 1.2.4最常用的数据模型:

  • 最常用的数据模型有:层次模型、网状模型、关系模型、面向对象模型、对象关系模型。关系模型用的最多
  • 1.2.5关系模型:

  • 关系数据模型的数据结构:
    • 关系:一个关系通常说的是一张表 
    • 元组:表中一行,为一个元组
    • 属性:表中的一列,为一个属性。给每一个属性起一个名称即属性名 
    • 例:
    • 码:表中的某个属性组,它可以唯一确定一个元组(如:学号、身份证号,通过该值去确定一行元组)
      • 在概念模型的时候也有码:但是概念模式的码指的是,通过一个码去确定一个实体(如:学生实体通过学号去确定该实体) 
    • 域:属性的取值范围
    • 分量:元组中的一个属性值
    • 关系模型:对关系的描述,一般表示为:关系名(属性1,属性2,属性3...)
  • 关系数据模型的操纵与完整性约束:
    • 关系数据模型的操作主要包括查询、插入、删除和更新数据,但这些操作必须满足关系的完整性约束条件
      • 关系的完整性约束条件包括三大类:
        • 实体完整性(实体可指的是一个人)
        • 参照完整性(选课表就要参照学号,专业)
        • 用户定义的完整性(像教师65退休,就是用户自己定义的) 
  • 关系数据模型的优点:
    • 关系模型与格式化模型不同,它是建立在严格的数据概念的基本上
    • 关系模型的概念单一(就是我操作的二维表,得出来的结果还是二维表)
    • 关系模型的存取路径对用户透密,从而有跟高的数据独立性、安全保密性,也简化了程序员的数据库开发
      • 用户透明:用户只管用,不用管数据从哪来,例:如去查成绩,用就行了

1.3数据库的系统结构:

  • 1.3.1数据库系统模式的概念:
    • 模式是数据库中全体数据的逻辑结构和特征的描述,同一个模式可以有很多实例
    • 例:一个学校有100个学生,都有身高、体重、年龄(这就是一个模式),但它们的身高、体重、年龄都不一样(很多实例)
  • 1.3.2数据库系统的三级模式结构:
  • 模式:模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述是所有用户的公共数据视图
  • 外模式:外模式也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图
  • 内模式:内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式
  • 注意:
    • 外模式通常是模式的子集,一个数据库可以有多个外模式
      • 例:我在查询成绩时只是查询到了一部分,这是一个外模式,还有很多没看到的有是一个外模式
    • 同一个外模式可以为某一用户的多个应用系统使所使用,一个应用程序只能使用一个外模式
      • 例:查询成绩用的是一个外模式,打印成绩用的是同一个外模式
      • 例:只能用一个外模式:查询成绩,说白了就是按钮一定的规则去访问
    • 外模式是保证数据库按性的一个有力措施,每个用户只能看到和访问所对应的外模式中的数据,数据库中的其余数据是看不到的
      • 例:外模式是想让你看见的,其余的数据你是看不到的也不到存储在哪         
  • 1.3.3数据库的二级映像概念与数据独立性

    • 外模式/模式映像

    • 模式/内模式映像

    • 两层映像保证了数据库系统中的数据能够具有较高的李连杰独立性和物理独立性

      • 物理独立性:例:当数据库的存储结构改变(如:增加新的关系)由数据库管理员对模式/内模式映像作相当于的改变,可以使模式保存补不变,从而应用程序也不必改变。白痴了数据和程序的物理独立性

1.4数据库系统的组成:

  • 数据库系统一般由数据库、数据库管理系统(及其开发工具)应用系统和数据库管理员构成
  • 硬件平台及数据库:
    • 硬件要求:
      • 要由足够大的内存,存放支持系统、数据库管理系统的核心模块、数据缓冲区和应用程序
      • 由足够的大的磁盘或磁盘阵列等设备存放数据库,有足够的磁带(或光盘)作数据备份
      • 系统有较高的通道能力,以提高数据传输效 
    • 软件要求:
      • 数据库管理系统,数据库管理系统是为数据库的建立,使用和维护配置的系统软件
      • 组成数据库管理系统的运行的操作系统
      • 具有与数据库接口的高级语言及编译系统,便于开发应用程序
      • 以数据库管理系统为核心的应用开发工具
      • 为特定应用环境开发的数据库应用系统
  • 人员:
    • 数据库管理员、系统分析员、数据库设计人员、应用程序员、用户
    • 用户 - 使用
    • 应用程序 - 使用(如:java开发写程序去访问数据库)
    • 数据库管理员 - 管理
      • 数据库管理员职责:
        • 决定数据库的内容和逻辑结构、存储结构
        • 确定数据的安全性要求和完整性约束性条件
        • 监控数据库的使用和运行,维护数据库
        • 决定数据库的存储结构和存储策略
        • 发负责数据库的改进和重组重构  
    •  

       

                                           

      

                             

      

                                                                      

                                           

有关第一章-绪论的更多相关文章

  1. ruby-on-rails - CarrierWave - PDF - 只选择第一页 - 2

    我的Rails应用程序中安装了carrierwave。但是,当用户上传多页pdf时,我只希望应用程序获取文档中的第一页并将其转换为jpeg。这可能吗?用什么命令?这是我的uploader。#encoding:utf-8classImageUploader[200,300]##defscale(width,height)##dosomething#end#Createdifferentversionsofyouruploadedfiles:version:thumbdoprocess:resize_to_fill=>[150,210]process:convert=>:jpgdefful

  2. ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题 - 2

    有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|

  3. arrays - 在一行中选择数组的第一个和最后一个元素 - 2

    我的任务是从数组中选择最高和最低的数字。我想我很清楚我想做什么,但只是努力以正确的格式访问信息以满足通过标准。defhigh_and_low(numbers)array=numbers.split("").map!{|x|x.to_i}array.sort!{|a,b|ba}putsarray[0,-1]end数字可能看起来像"80917234100",要通过,我需要输出"9234"。我正在尝试putsarray.first.last,但一直无法弄明白。 最佳答案 有Array#minmax完全满足您需要的方法:array=[80,

  4. ruby-on-rails - Ruby 或 Rails 有只将第一个字符大写的方法吗? - 2

    或者好像我必须自己写方法?(保持DHA不变):ruby-1.9.2-p180:001>s='omega-3(DHA)'=>"omega-3(DHA)"ruby-1.9.2-p180:002>s.capitalize=>"Omega-3(dha)"ruby-1.9.2-p180:003>s.titleize=>"Omega3(Dha)"ruby-1.9.2-p180:005>s[0].upcase+s[1..-1]=>"Omega-3(DHA)" 最佳答案 如果我的回答只是垃圾,我深表歉意(我不做ruby)。但我相信我已经为您找到了答

  5. ruby - gsub 删除第一个逗号前的所有内容 - 2

    我有这个字符串:auteur="comtedeFlandreetHainaut,Baudouin,Jacques,Thierry"我想删除第一个逗号之前的所有内容,即在这种情况下保留“Baudouin,Jacques,Thierry”试过这个:nom=auteur.gsub(/.*,/,'')但这会删除最后一个逗号之前的每个逗号,只保留“Thierry”。 最佳答案 auteur.partition(",").last#=>"Baudouin,Jacques,Thierry" 关于rub

  6. ruby-on-rails - Order Hash 并删除第一个键值对 - 2

    我有一个以时间戳为键的哈希。hash={"2016-05-31T22:30:58+02:00"=>{"path"=>"/","method"=>"GET"},"2016-05-31T22:31:23+02:00"=>{"path"=>"/tour","method"=>"GET"},"2016-05-31T22:31:05+02:00"=>{"path"=>"/contact_us","method"=>"GET"}}我订购了这个系列并得到了第一双这样的:hash.sort_by{|k,_|k}.first.first但是我该如何删除它呢?删除方法requiresyou知道key的准确

  7. arrays - 字符串数组中字符串第一部分的总和 - 2

    我有一个字符串数组,我需要从中提取第一个单词,将它们转换为整数并获得它们的总和。示例:["5Apple","5Orange","15Grapes"]预期输出=>25我的尝试:["5","5","15"].map(&:to_i).sum 最佳答案 我从你的问题中找到了答案。["5Apple","5Orange","15Grapes"].map(&:to_i).sum在数组中,如果存在任何整数可转换值,那么它将自动转换为整数。 关于arrays-字符串数组中字符串第一部分的总和,我们在Sta

  8. ruby-on-rails - Rails 3 : Looping through array of objects, 忽略数组中的第一个对象? - 2

    在我看来,我正在尝试显示一个对象表,这是我的代码:CategoriesCBB's">然而这是抛出一个错误说:can'tconvertCapabilityBuildingBlockintoArray关系是正确的,错误来self尝试在此处减去数组的第一个对象的行:有什么方法可以忽略数组中的第一个对象来遍历数组吗?谢谢 最佳答案 尝试使用Array.drop-http://www.ruby-doc.org/core/classes/Array.html#M000294 关于ruby-on-ra

  9. ruby-on-rails - 我如何跳过前三行而不是 FasterCSV 中的第一行 - 2

    我正在使用FasterCSV我正在循环使用这样的foreachFasterCSV.foreach("#{Rails.public_path}/uploads/transfer.csv",:encoding=>'u',:headers=>:first_row)do|row|但问题是我的csv将前3行作为标题...有什么方法可以使fasterCSV跳过前三行而不是仅跳过第一行?? 最佳答案 不确定FasterCSV,但在Ruby1.9标准CSV库(由FasterCSV制作)中,我可以执行以下操作:c=CSV.open'/path/to/

  10. Ruby 删除数组的第一个索引 - 2

    我有一个数组。我需要保留除索引0处的元素以外的所有内容。此时我的大脑被炸毁了。我整天都在编程。任何帮助都会很棒。谢谢! 最佳答案 使用Array#shift方法,它完全符合您的要求:a=[1,2,3]a.shift#=>1a#=>[2,3] 关于Ruby删除数组的第一个索引,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/11783005/

随机推荐