数据库原理之数据库概述(上)

数据库原理之数据库概述(上)

在开始讲解之前我们先了解一下数据库的地位📣:

  • 数据库技术产生于六十年代末,是数据管理的最新技术,是计算机科学的重要分支
  • 数据库技术是信息系统的核心和基础,它的出现极大的促进了计算机应用向各行各业的渗透
  • 数据库的建设规模、数据库信息量的大小和使用频度已经成为衡量一个国家信息化程度的重要标志

数据库系统概述

四个基本概念

①数据(Data)

  • 数据是数据库中存储的基本对象
  • 数据的定义
    • 描述事物的符号记录
  • 数据的种类
    • 文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等
  • 数据的特点
    • 数据与其语义是不可分的

数据的含义称为数据的语义,数据与其语义是不可分的

例如 93是一个数据
	语义1:学生的某门课的成绩
	语义2:某人的体重
	语义3:计算机系2003级学生人数

例如 学生档案中的学生记录(李明,男,197205,江苏南京市,计算机系,1990)
	语义:学生姓名、性别、出生年月、籍贯、所在院系、入学时间
	解释:李明是一个大学生,1972年5月出生,江苏南京人,1990年考入计算机系

②数据库(Database)

数据库的定义:数据库是长期存储在计算机内、有组织的可共享大量数据的集合

数据库的基本特征

  • 数据按一定的数据模型组织、描述和存储
  • 可为各种用户共享
  • 冗余度较小
  • 数据独立性较高
  • 易扩展

③数据库管理系统(DBMS)

什么是DBMS?

  • 位于用户与操作系统之间的一层数据管理软件
  • 是基础软件,是一个大型复杂的软件系统

DBMS的用途:

  • 科学地组织和存储数据、高效地获取和维护数据

DBMS在计算机系统中的位置:
在这里插入图片描述
DBMS的主要功能:

  • 数据定义功能

    • 提供数据定义语言(DDL)
    • 定义数据库中的数据对象
  • 数据组织、存储和管理

    • 分类组织、存储和管理各种数据
    • 确定组织数据的文件结构和存取方式
    • 实现数据之间的联系
    • 提供多种存取方法提高存取效率
  • 数据操纵功能

    • 提供数据操纵语言(DML)
    • 实现对数据库的基础操作(查询、插入、删除和修改)
  • 数据库的事务管理和运行管理

    • 数据库在建立、运行和维护时有DBMS统一管理和控制
    • 保证数据的安全性、完整性、多用户对数据的并发使用
    • 发生故障后的系统恢复
  • 数据库的建立和维护功能(实用程序)

    • 数据库初始数据装载转换
    • 数据库转储
    • 介质故障恢复
    • 数据库的重组织
    • 性能监视分析
  • 其他功能

    • DBMS与网络中的其它软件系统的通信
    • 两个DBMS系统的数据转换
    • 异构数据库之间的互访和互操作

④数据库系统(DBS)

什么是数据库系统:在计算机系统中引入数据库之后的系统就是数据库系统

数据库系统的组成:

  • 数据库
  • 数据库管理系统(及其开发工具)
  • 应用系统
  • 数据库管理员和用户
    在这里插入图片描述

数据管理技术的产生和发展

什么是数据管理?

  • 对数据进行分类、组织、编码、存储、检索和维护
  • 数据处理的中心问题

数据管理技术的发展过程

  • 人工管理阶段(20世纪40年代中—50年代中)
  • 文件系统阶段(20世纪50年代末===60年代中)
  • 数据库系统阶段(20世纪60年代末—现在)

数据管理技术的发展动力

  • 应用需求的推动
  • 计算机硬件的发展
  • 计算机软件的发展

人工阶段

  • 时期:20世纪40年代中—50年代中

  • 产生背景:

    • 应用需要 :科学计算
    • 硬件水平:无直接存取存储设备
    • 软件水平:没有操作系统
    • 处理方式:批处理
  • 特点:

    • 数据的管理者:用户(程序员),数据不保存
    • 数据面向的对象:某一应用程序
    • 数据的共享程度:无共享、冗余度极大
    • 数据的独立性:不独立,完全依赖于程序
    • 数据的结构化:无结构
    • 数据控制能力:应用程序自己控制
  • 应用程序与数据的对应关系(人工管理):
    应用程序与数据的对应关系

文件系统阶段

  • 时期:20世纪50年代末—60年代中

  • 产生的背景:

    • 应用需求:科学计算、管理
    • 硬件水平:磁盘、磁鼓
    • 软件水平:有文件系统
    • 处理方式:联机实时处理、批处理
  • 特点

    • 数据的管理者:文件系统,数据可长期保存
    • 数据面向的对象:某一应用程序
    • 数据的共享程度:共享性差、冗余度大
    • 数据的结构化:记录内有结构,整体无结构
    • 数据的独立性:独立性差,数据的逻辑结构改变必须修改应用程序
    • 数据控制能力:应用程序自己控制
  • 应用程序与数据的对应关系(文件系统):
    应用程序与数据的对应关系

  • 文件系统中数据的结构

    • 记录内有结构
    • 数据的结构是靠程序定义和解释的
    • 数据只能是定长的
      (可以间接实现数据的变长要求,但访问相应数据的应用程序复杂了)
    • 文件间是独立的,因此数据整体无结构
      (可以间接实现数据整体有结构,但必须在应用程序中描述数据间的关系)
    • 数据的最小存取单位是记录
  • 文件系统中数据的结构举例(为什么说记录内有结构,整体无结构

学生信息记录:

学生编号姓名性别年龄家庭住址联系电话

课程信息记录:

课程编号课程名字学时数教材名称

选课信息记录:

学生编号课程编号学期成绩

数据库系统阶段

  • 时期:20世纪60年代末—现在
  • 产生的背景:
    • 应用背景:大规模管理
    • 硬件背景:大容量磁盘、磁盘阵列
    • 软件背景:有数据库管理系统
    • 处理方式:联机实时处理,分布处理,批处理
  • 特点:
    • 数据结构化
    • 数据的共享性高,冗余度低,易扩展
    • 数据独立性高
    • 数据由DBMS统一管理和控制
  • 应用程序与数据的对应关系(数据库系统):
    应用程序与数据的对应关系

数据库系统的特点

数据结构化

  • 整体数据的机构化是数据库的主要特征之一
  • 整体结构化:
    • 不再仅仅针对某一应用,而是面向全组织
    • 不仅数据内部结构化,整体也是结构化的,数据之间具有联系
  • 数据库中实现的是数据的真正结构化
    • 数据的结构用数据模型描述,无需程序定义和解释
    • 数据可以变长
    • 数据的最小存取单位是数据项
  • 数据库系统中数据的结构举例:
    数据库系统中数据的结构举例

数据的共享性高,冗余度低,易扩展

  • 数据库系统从整体角度看待和描述数据,数据面向整个系统,可以被多个用户、多个应用共享使用
  • 数据共享的好处
    • 减少数据冗余,节约存储空间
    • 避免数据之间的不相容与不一致性
    • 是系统易于扩充

数据独立性高

  • 物理独立性:
    指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序可以不变
  • 逻辑独立性:
    指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户程序也可以不变
  • 数据独立性是由DBMS的二级映像功能来保证的

数据由DBMS统一管理和控制

  • 数据的安全性(Security)保护:
    保护数据,以防止不合法的使用造成数据泄露和破坏
  • 数据的完整性(Integrity)检查:
    将数据控制在有效的范围内,或保证数据之间满足一定的关系
  • 并发(Concurrency)控制:
    对多用户的并发操作加以控制和协调,防止相互干扰而得到错误的结果
  • 数据的恢复(Recovery):
    将数据库从错误状态恢复到某一已知的正确状态

数据模型

在数据库中使用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。通俗地讲数据模型就是现实世界的模拟。

数据模型应该满足三方面要求:

  • 能比较真实地模拟现实世界
  • 容易为人所理解
  • 便于在计算机上实现

两大类数据模型

数据模型分为两类(分属两个不同的层次)

  • 概念模型
    也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计
  • 逻辑模型和物理模型
    • 逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型,按计算机系统的观点对数据建模,用于DBMS实现
    • 物理模型是对数据最底层的抽象,描述数据在系统内部的表述方式和存取方法,在磁盘或磁带上的存储方式和存取方法

客观对象的抽象过程—两步抽象

  • 现实世界中的客观对象抽象为概念模型;
  • 把概念模型转换为某一DBMS支持的数据模型
    客观对象的抽象过程

数据模型的组成要素

数据结构

什么是数据结构?

  • 描述数据库的组成对象,以及对象之间的联系

描述什么内容?

  • 与数据类型、内容、性质有关的对象
  • 与数据之间联系有关的对象

数据结构是对系统静态特性的描述

数据操作

是对数据库中各种对象的实例允许执行的操作以及有关的操作规则

数据操作的类型

  • 查询
  • 更新(包括插入、删除、修改)

数据模型对操作的定义

  • 操作的确切含义
  • 操作符号
  • 操作规则(如优先级)
  • 实现操作的语言

数据操作是对系统动态特性的描述

完整性约束条件

  • 数据的完整性约束条件

    • 一组完整性规则的集合
    • 完整性规则:给定的数据模型中数据及其联系所具有的制约和存储规则
    • 用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容
  • 数据模型对完整性约束条件的定义

    • 反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。例如在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件
    • 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件

概念模型

  • 概念模型的用途

    • 概念模型用于信息世界的建模
    • 是现实世界到机器世界的一个中间层次
    • 是数据库设计的有力工具
    • 数据库设计人员和用户之间进行交流的语言
  • 对概念模型的基本要求

    • 较强的语义表达能力
    • 能够方便、直接地表达应用中的各种语义知识
    • 简单、清晰、易于用户理解

信息世界中的基本概念

  1. 实体(Entity)
    客观存在并可相互区别的事物称为实体;
    可以是具体的人、事、物或抽象的概念;

  2. 属性(Attribute)
    实体所具有的某一特性称为属性;
    一个实体可以由若干个属性来刻画;

  3. 码(Key)
    唯一标识实体的属性集称为码;

  4. 域(Domain)
    属性的取值范围称为该属性的域;

  5. 实体型(Entity Type)
    用实体名及其属性名集合来抽象和刻画同类实体称为实体型;

  6. 实体集(Entity Set)
    同一类型实体的集合称为实体集;

  7. 联系(Relationship)
    现实世界中事物内部以及事物之间的联系在信息世界中反映为实体内部的联系和实体之间的联系;

    实体内部的联系通常是指组成实体的各属性之间的联系;

    实体之间的联系通常是指不同实体集之间的联系;

概念模型的一种表示方式

  • 实体-联系方法(E-R方法)

    • 用E-R图来描述现实世界的概念模型
    • E-R方法也称为E-R模型
    • P.P.S.Chen于1976年提出的实体-联系方法(Entity-Relationship Approach)
    • E-R图提供了表示实体型、属性和联系的方法
  • E-R图

    • 实体型:用矩形表示,矩形框内写明实体名
      在这里插入图片描述

    • 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来
      在这里插入图片描述

    • 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)
      在这里插入图片描述

      • 两个实体型之间的联系
        在这里插入图片描述

        • 一对一联系(1:1)
          • 实例:
            一个班级只有一个正班长
            一个班长只在一个班中任职
          • 定义:
            如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1:1
        • 多对多联系(m:n)
          • 实例:课程与学生之间的联系(一门课程同时有若干个学生选修;一个学生可以同时选修多门课程)
          • 定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n>=0)与之联系,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m>=0)与之联系,则称实体集A与实体集B具有多对多联系,记为m:n
      • 两个以上实体型之间的联系

        • 两个以上实体型之间一对多联系
          若实体集E1,E2,…,En存在联系,对于实体集Ej(j=1,2,…,i-1,i+1,…,n)中的给定实体,最多只和Ei中的一个实体相联系,则我们说Ei与E1,E2,…,Ei-1,Ei+1,…,En之间的联系是一对多的
          • 实例:课程、教师与参考书三个实体型:
            一门课程可以有若干教师讲授,使用若干本参考书,每个一个教师只讲授一门课程,每一本参考书只供一门课程使用
            在这里插入图片描述
        • 两个以上实体型之间多对多联系
          • 实例:供应商、项目、零件三个实体型:
            一个供应商可以供给多个项目多种零件,每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给 在这里插入图片描述
      • 单个实体型内的联系

        • 一对多联系
          • 实例:职工实体型内部具有领导与被领导的联系,某一职工(干部)“领导”若干名职工,一个职工仅被另外一个职工直接领导,这就是一对多的联系。 在这里插入图片描述
      • 一对一联系
        自行举例

      • 多对多联系

        • 实例:工厂职工之间的朋友关系
          在这里插入图片描述
      • 三个以上的实体间联系是否可以简化? 可以
        在这里插入图片描述

    • 联系的属性
      联系本身也是一种实体型,也可以有属性。如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来
      在这里插入图片描述

一个实例

在这里插入图片描述

最常用的数据模型

  • 非关系模型
    • 层次模型(Hierrarchical Modal)
    • 网状模型(Network Modal)
  • 关系模型(Relational Modal)
  • 面向对象模型(Object Oriented Modal)
  • 对象关系模型(Object Relational Modal)

层次模型

层次模型是数据库系统中最早出现的数据模型

层次数据库系统的典型代表是IBM公司的IMS(Information Management System)数据库管理系统

层次模型用树形结构来表示各类实体以及实体间的联系

层次数据模型的数据结构

  • 层次模型:
    满足下面两个条件的基本层次联系的集合为层次模型
    1 .有且只有一个结点没有双亲结点,这个结点称为根结点
    2 .根以外的其它结点有且只有一个双亲结点
  • 层次模型中的几个术语
    根结点,双亲结点,兄弟结点,叶结点

在这里插入图片描述

  • 层次模型的特点
    • 结点的双亲是唯一的
    • 只能直接处理一对多的实体联系
    • 每个记录类型可以定义一个排序字段,也称为码字段
    • 任何记录值只有按其路径查看时,才能显示出它的全部意义
    • 没有一个子女记录值能够脱离双亲记录值而独立存在
      在这里插入图片描述
      在这里插入图片描述

多对多联系在层次模型中的表示

  • 多对多联系在层次模型中的表示
    • 用层次模型间接表示多对多联系
    • 方法:
      将多对多联系分解成一对多联系
    • 分解方法
      🔹冗余结点法
      🔹虚拟结点法

层次模型的数据操纵与完整性约束

  • 层次模型的数据操纵
    查询、插入、删除、更新
  • 层次模型的完整性约束条件
    • 无相应的双亲结点值就不能插入子女结点值
    • 如果删除双亲结点值,则相应的子女结点值也被同时删除
    • 更新操作时,应更新所有相应记录,以保证数据的一致性

层次数据模型的存储结构

  • 邻接法
    按照层次树前序遍历的顺序把所有记录值依次邻接存放,即通过物理空间的位置相邻来实现层次顺序
    在这里插入图片描述
  • 链接法
    • 用指针来反映数据之间的层次联系
    • 子女–兄弟链接法
      每个记录设置两类指针,分别指向最左边的子女和最近的兄弟
      在这里插入图片描述
    • 层次序列链接法
      按树的前序穿越顺序链接各记录值
      在这里插入图片描述

层次模型的优缺点

  • 优点
    • 层次模型的数据结构比较简单清晰
    • 查询效率高,性能优于关系模型,不低于网状模型
    • 层次数据模型提供了良好的完整性支持
  • 缺点
    • 多对多联系表示不自然
    • 对插入和删除操作的限制比较多,应用程序的编写比较复杂
    • 查询子女结点必须通过双亲结点
    • 由于结构严密,层次命令趋于程序化

网状模型

网状数据库系统采用网状模型作为数据的组织方式

典型代表是DBTG系统:

  • 亦称CODASYL系统
  • 70年代由DBTG提出的一个系统方案
  • 奠定了数据库系统的基本概念、方法和技术

实际系统

  • Cullinet Software Inc.公司的 IDMS
  • Univac公司的 DMS1100
  • Honeywell公司的IDS/2
  • HP公司的IMAGE

网状数据模型的数据结构

  • 网状模型
    满足下面两个条件的基本层次联系的集合:
    ⭐允许一个以上的结点无双亲
    ⭐一个结点可以有多于一个的双亲

  • 表示方式

    • 实体型:用记录类型描述;每个结点表示一个记录类型(实体)
    • 属性:用字段描述;每个记录类型可以包含若干个字段
    • 联系:用结点之间的连线表示记录类型之间的一对多的父子联系
  • 举例:一个学生可以选修若干门课程,某一课程可以被多个学生选修,学生与课程之间是多对多联系。引入一个学生选课的联结记录,由3个数据项组成<学号,课程号,成绩>表示某个学生选修一门课程及其成绩
    在这里插入图片描述

网状数据模型的操纵与完整性约束

网状数据库系统(如DBTG)对数据操纵加了一些限制,提供了一定的完整性约束:

  • 码:唯一标识记录的数据项的集合
  • 一个联系中双亲记录与子女记录之间是一对多联系
  • 支持双亲记录和子女记录之间某些约束条件

网状数据模型的存储结构

  • 关键:
    实现记录之间的联系
  • 常用方法:
    单向链接
    双向链接
    环状链接
    向首链接
    在这里插入图片描述

网状数据模型的优缺点

  • 优点
    • 能够更为直接地描述现实世界,如一个结点可以有多个双亲
    • 具有良好的性能,存取效率较高
  • 缺点
    • 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变的越来越复杂,不利于最终用户掌握
    • DDL、DML语言复杂,用户不易使用

网状模型与层次模型的区别

  • 网状模型允许多个结点没有双亲结点
  • 网状模型允许结点有多个双亲结点
  • 网状模型允许两个结点之间有多种联系(复合联系)
  • 网状模型可以更直接地去描述现实世界
  • 层次模型实际上是网状模型的一个特例

关系模型

关系数据库系统采用关系模型作为数据的组织方式

1970年美国IBM公司San Jose研究室的研究员E.F.Codd首次提出了数据库系统的关系模型
在这里插入图片描述
计算机厂商新推出的数据库管理系统几乎都支持关系模型

关系数据模型的数据结构

  • 在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
    在这里插入图片描述
    • 关系(Relation)
      一个关系对应通常说的一张表
    • 元组(Tuple)
      表中的一行即为一个元组
    • 属性(Attribute)
      表中的一列即为一个属性,给每一个属性起一个名称即属性名
      • 码(Key)
        表中的某个属性组,它可以唯一确定一个元组
      • 域(Domain)
        属性的取值范围
      • 分量
        元组中的一个属性值
      • 关系模式
        对关系模式的描述
        关系名(属性1,属性2,…,属性n)
        学生(学号,姓名,出生日期,性别,系,年级)
        课程(课程号,课程名,学分)
        选修(学号,课程号,成绩)
      • 关系必须是规范化的,满足一定的规范条件
        最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表
        下图中工资和扣除是可分的数据项,不符合关系模型要求
        在这里插入图片描述
      • 术语对比
        在这里插入图片描述

关系数据模型的操纵与完整性约束

  • 数据操作是集合操作,操作对象和操作结果都是关系
    查询
    插入
    删除
    更新
  • 数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合
  • 存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”
  • 关系的完整性约束条件
    • 实体完整性
    • 参照完整性
    • 用户定义的完整性

关系数据模型的存储结构

  • 实体及实体间的联系都用表来表示
  • 表以文件形式存储
    • 早期,有的DBMS一个表对应一个操作系统文件
    • 主要的DBMS,在操作系统一个大的文件中,设计自己的文件存储结构

关系数据模型的优缺点

  • 优点
    • 建立在严格的数学概念的基础上
    • 概念单一
      • 实体和各类联系都用关系来表示
      • 对数据的检索结果也是关系
    • 关系模型的存取路径对用户透明
      • 具有更高的数据独立性,更好的安全保密性
      • 简化了程序员的工作和数据库开发建立的工作
  • 缺点
    • 存取路径对用户透明导致查询效率往往不如非关系数据模型
    • 为提高性能,必须对用户的查询请求进行优化,增加了开发DBMS的难度

E-R模型到关系模型的转化

转换原则

  • 一个实体型转换为一个关系模型
    实体的属性就是关系的属性,实体的码就是关系的码
  • 一个1:1联系可以转换为一个独立的关系模型
    则与该实体相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码
  • 一个1:n联系可以转换为一个独立的关系模式
    则与该实体相连的各实体的码以及联系本身的属性均转换为关系的属性,关系的码是n端实体的码
    在这里插入图片描述
  • 一个m:n联系转换为一个关系模式
    则与该实体相连的各实体的码以及联系本身的属性均转换为关系的属性,关系的码是各实体码的组合
    在这里插入图片描述
  • 三个或三个以上实体间的一个多元联系可以转换为一个关系模式
    则与该实体相连的各实体的码以及联系本身的属性均转换为关系的属性,关系的码是各实体码的组合

其它的数据模型

面向对象模型(Object Oriented Model)

  • 面向对象数据库系统支持OO模型
  • 面向对象数据库系统:一个持久的、可共享的对象库的存储和管理者
  • 对象库:由一个OO模型所定义的对象的集合体
  • 80年代已开始出现一些面向对象数据库的产品
  • 面向对象模型的核心概念
    • 对象
      • 定义:对象是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位
      • 组成部分
        • 属性集合:属性描述对象的状态、组成和特性
        • 方法集合:描述了对象的行为特性
      • 对象类:共享同样属性和方法集的所有对象构成了一个对象类
      • 实例:一个对象是某一类的一个实例(instance)
      • 在OODB中,类是“型”,对象是某一类的一个“值”
    • 继承
      在这里插入图片描述
  • 面向对象数据库系统
    一个持久的、可共享的对象库的存储和管理者
  • 面向对象数据库系统产品
    • Caché:美国InterSystems公司
    • ObjectStore :Progress Software公司

对象关系数据库(ORDBS)

ORDBS是面向对象数据模型与关系数据模型相结合的产物。ORDBS是关系数据库系统与面向对象数据模型的结合。它保持了关系数据库系统的非过程化数据存取方式和数据独立性,继承了关系数据库系统已有的技术,支持原有的数据管理,又能支持OO模型和对象管理。

  • 允许用户根据应用的需求自己定义数据类型,函数和操作符,而且一经定义,这些新的数据类型、函数和操作符,将存放在数据库管理系统核心中,可供所有用户共享
  • 由多种基本类型或用户定义的类型构成的对象
  • 能够支持子类对超类的各种特性的继承,支持数据继承和函数继承,支持多重继承,支持函数重载,能够提供功能强大的通用规则系统,而且规则系统与其它的对象关系能力是集成为一体的
  • 对象关系数据库产品
    • ORACLE公司从ORACLE 8i开始的版本支持ORDBMS
    • IBM 提供了两种最新型的对象-关系数据库:DB2® Universal Database™(UDB)和 Informix Dynamic Server™(IDS)

数据库原理之数据库概述(下)


在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 数字50 设计师:CSDN官方博客 返回首页