数据库——三种模式

1.前言

数据库有三种模式

1. 外模式(External Schema)2.模式(Conceptual Schema)3.内模式(Internal Schema)

三者共同构建了数据库的完整结构.

建议从例子开始看,例子看懂再看前面的,会比较好理解

2.外模式(External Schema)

        外模式通常由概念模式导出。它给出了每个用户的局部数据描述。

        作用:保证了数据库的安全性完整性。每个用户只能看见和访问所对应的外模式中的数据,数中的安全性和完整性。每个用户且只能看见和访问所对应的外模式中的数据,数据库中的其余数据他们是看不到的(安全性)。

ps:一个外模式可以被多个应用程序所使用,但一个应用程序只能使用一个外模式

3.模式(Conceptual Schema)

        也叫“逻辑模式”或“概念模式”,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图(我认为“模式”更像是一个动作,是在你定义这个表时候添加的一些列、约束等的动作)。

        一个数据库只有一个概念模式。既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、开发工具以及高级程序设计语言无关。

        作用:定义了数据的逻辑结构(如表、列、数据类型、约束等),以及数据之间的关联关系

4.内模式(Internal Schema)

        也叫“存储模式”或“物理模式”,是数据在数据库系统内部的表示,是对数据的物理结构和村存储方式的描述。当然数据库管理系统在物理存储方面有很大的灵活性(你想把数据存硬盘可以,存u盘都行),当数据存储的介质或存取方式发生变化的时候,只用改变内模式,而不影响概念模式(你把数据从硬盘拷贝到u盘,并不会改变表的结构,有几个表,表里有几列都不会变)和外模式(电脑上玩原神,在手机上打开,并不会因为数据存储的位置发生变化,而导致等级降低)

        作用:内模式它可以给出数据库的物理存储结构,其中包括存储记录的类型索引文件的物理结构,以及数据是否压缩、加密等。

5.实际例子——理解三种模式

        为学校设计一个数据库系统。系统中记录学生的信息、课程的信息以及学生和课程之间的关联关系。

5.1外模式(External Schema)

        对于学校的教务管理部门,他们主要关心学生的基本信息、课程信息以及学生的选课情况。因此,我们可以为他们设计一个外模式,其中包含学生表(包含学生ID、姓名、年龄等字段)、课程表(包含课程ID、课程名称、授课教师等字段)以及选课表(包含学生ID、课程ID、成绩等字段)。这样,教务管理部门就可以通过这个外模式来查询、更新和管理学生、课程以及选课的相关信息。

        对于学校的教师,他们可能更关心自己所教授的课程以及选课的学生情况。因此,我们可以为教师设计一个不同的外模式,其中主要包含课程表以及选课表的相关字段。这样,教师可以方便地查看自己所教授的课程信息以及学生的选课和成绩情况。

5.2 模式(Conceptual Schema)

        模式是整个数据库的逻辑结构,它描述了数据的整体组织和关系。在这个例子中,模式可能包含三个主要的实体:学生课程选课。每个实体都有相应的属性,如学生的姓名、年龄,课程的名称、教师,以及选课的学生ID、课程ID和成绩。这些实体之间通过关系(如选课关系)相互连接。模式还定义了数据的完整性约束,如主键约束、外键约束等,以确保数据的准确性和一致性。

5.3  内模式(Internal Schema)

        内模式描述了数据在物理存储介质上的组织存储方式。它关心的是数据的存储结构、索引方式、数据的压缩和加密等。例如,在这个例子中,我们可能会选择使用关系型数据库管理系统(如MySQL)来存储数据。在物理存储上,学生表、课程表和选课表可能会被存储为不同的文件或表空间,每个表中的数据按照特定的行格式进行存储。为了提高查询效率,我们可能还会为某些字段建立索引。

  • 11
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目系统结构——前后端分离是一种常见的Web应用程序开发模式,它采用了一种分离前端和后端的策略,将应用程序分为两个独立的部分:前端和后端。这种模式通常用于构建复杂的应用程序,如企业级管理系统、在线购物平台等。 以下是项目系统结构——前后端分离的主要组成部分: 前端: 1. 客户端应用程序:通常使用JavaScript框架(如React、Vue、Angular等)或前端Web框架(如Django、Flask等)开发,用于处理用户界面、数据请求和响应等功能。 2. 静态资源:包括CSS、图片、JavaScript等静态资源文件,通常存储在Web服务器上,供前端应用程序使用。 后端: 1. API服务:提供RESTful或GraphQL风格的API接口,用于处理业务逻辑和数据操作。后端服务通常使用服务器端语言(如Python、Java、Node.js等)编写,并使用数据库存储数据。 2. 数据库:用于存储和管理应用程序的数据,通常使用关系型数据库(如MySQL、PostgreSQL等)或非关系型数据库(如MongoDB、Redis等)。 前后端分离的优点: 1. 开发效率高:前端和后端可以由不同的团队或个人独立开发,减少了沟通和协作的难度。 2. 可扩展性好:前后端分离的应用程序可以根据需要灵活地添加新的前端或后端组件,提高了系统的可扩展性。 3. 灵活性高:前端可以使用不同的技术栈,如移动端应用程序、小程序等,提高了应用的灵活性。 前后端分离的缺点: 1. 安全性问题:前后端分离的应用程序可能存在安全风险,如跨站脚本攻击(XSS)和SQL注入等。因此,需要采取适当的措施来保护应用程序的安全性。 2. 集成问题:前后端分离的应用程序需要将数据从后端传输到前端,需要处理数据格式转换、数据验证等问题。 3. 调试和测试难度大:前后端分离的应用程序需要分别进行调试和测试,增加了开发和测试的难度。 总之,项目系统结构——前后端分离是一种灵活、可扩展的开发模式,适用于构建复杂的应用程序。在开发过程中,需要关注安全性和集成问题,并采取适当的措施来确保应用程序的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值