数据库原理基础一[通俗易懂]

数据库原理基础一[通俗易懂]数据的分类: 结构化数据:有固定的格式,例如一个表格里面的信息 非结构化数据:无固定格式,例如图片、网页、语音、视频 半结构化数据:html、xml格式的数据 数据库:存放数据的一个集合,可以是文件的

数据库原理基础一

数据的分类:
  • 结构化数据:有固定的格式,例如一个表格里面的信息

  • 非结构化数据:无固定格式,例如图片、网页、语音、视频

  • 半结构化数据:html、xml格式的数据

数据库:存放数据的一个集合,可以是文件的方式,也可以是其他的方式。

数据库的发展:
  • 萌芽阶段:文件系统

使用磁盘文件来存储数据,比如一个文档里面存了很多数据内容。
缺点:管理不方便,且容易造成文件的损坏、安全性差。

  • 初级阶段:第一代数据库

出现了网状模型、层次模型的数据库

  • 中级阶段:第二代数据库

关系型数据库和结构化查询语言

  • 高级阶段:新一代数据库

“关系-对象”型数据库

相关概念
  • DBMS:Database Management System,数据库管理系统,就是一个应用软件,实现对数据的管理。例如mysql、orcler、redis等。

  • Database:数据库

  • DBA:Database Administrator(DBA)数据库管理员

  • Application:应用程序,用户访问数据不是直接通过DBMS来进行访问的。通过一些图形界面软件等来访问这些数据。例如京东、淘宝等。

DBMS工作逻辑:数据放在磁盘上,用户通过工具访问DBMS,然后DBMS访问到对应的数据。

数据库结构:
  • 单机架构:数据库就在一个机器上,只能通过这个机器来操作数据库,例如access

  • 主从架构(C/s):客户端-服务器,将要客户端和服务器区分开,通过客户端发送请求来和服务器交互。

  • 分布式架构:把数据分散在多个地方,不是集中在一起。

各种数据库管理系统:
  • 层次结构:按层(树状结构)组织数据,容易产生冗余

  • 网状结构:关系复杂,不容易管理

  • 关系型数据库:RDBMS,

关系型数据库相关概念:把所有数据放在一张二维表里面
  • 关系:就是一张二维表,

  • 行:row,称为记录,每一行称为一条记录(record)

  • 列:column,称为属性、字段或者域(field)

  • 主键:Primary key,一个或者多个字段的组合,主键不能为空且不能重复

  • 唯一键:Unique key, 一个或多个字段的组合,不能重复但可以为空

  • 域:domain,属性的取值范围。

常用的关系型数据据:
  • mysql: MySQL, MariaDB, Percona Server

  • oracle

  • DB2

  • PostgreSQL

实体-联系模型E-R:
  • E-R:描述数据库存储数据的结构模型

  • 实体Entity:用矩形表示,例如课程、班级、学生等

  • 属性Attribute:用椭圆形表示,描述实体的特征

  • 联系Relationship:实体的属性之间的关联规则

E-R模型的联系类型:
  • 一对一: 假设有两张表,一张存姓名,另一个存身份证,一个人只能有一个身份证。
  • 一对多:假设两张表部门和员工,一个部门能有多个员工信息。
  • 多对多:假设两张表课程和学上。一个学生能拥有多门课程,一个课程也能被多个学生选择。
数据库的操作:
  • 增加:Insert
  • 删除:Delete
  • 查找:Select
  • 修改:Update
数据库的规范化:

作用:减少数据的冗余,增进数据的一致性。越高的范式数据库冗余越小

  • 第一范式(1NF):无重复列、一列不能有多个值

  • 第二范式(2NF):表中的每一条记录都能被唯一区分(通过主键区分),某一个非主键的字段要依赖整个组件,而不能只依赖部分主键(多个字段组成一个逐渐)。

  • 第三范式(3NF):非主键的字段之间不能有从属关系

注意:满足第一范式的数据库才能称为关系数据库。

SQL
  • SQL:Structure Query Language,结构化查询语言。SQL配套关系型数据库使用的。

  • SQL解释器:将SQL语句解释成机器语言

  • 数据存储协议:应用层协议,C/S
    S:server, 监听于套接字,接收并处理客户端的应用请求
    C:Client

数据约束:
  • 约束:constraint,需要遵守的限制
常见的约束:
  • 主键:primary key,一个或多个字段的组合,非空且唯一。

  • 唯一键:unique key, 一个或者多个字段的组合

  • 非空:not null

  • 外键:foreign key,用来建立表和表之间的关系。外键的字段依赖于另一张表的字段。

  • 默认:default,默认值

  • 检查:字段值的一个范围

主键和外键的区别:
  • 主键:primary key
    作用:用于惟一地标识表中的某一条记录,确保每列的原子性。
    形式:主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键
    其他:建立主键会生成唯一索引,一个表只能建一个主键。

  • 外键:foreign key
    作用:保持数据一致性,完整性,主要目的是使两张表形成关联,并控制存储在外键表中的数据。
    形式:建立外键的表为“从表”,外键依赖的表为“主表”,主表是从表的“外表”
    其他:外键只能引用外表中的列的值!一个表只能建一个外键。
    建立外键的列,必须是外表的主键,并且字段类型必须一致。

关系运算:
  • 选择:筛选行(记录)

  • 投影;(cut)筛选列

  • 连接:表和表之间的关系。比如外键。

原文地址:https://www.cnblogs.com/heyongshen/archive/2022/09/06/16662555.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4806.html

(0)
上一篇 2023-06-04
下一篇 2023-06-04

相关推荐

  • Python中的数字类型及运用

    Python中的数字类型及运用a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2023-12-18
    103
  • Flask中的url_for函数详解

    Flask中的url_for函数详解Flask是一个轻量级的Web框架,它提供了灵活的URL规则和模板引擎等功能。在Flask中,url_for函数是一个非常重要的函数,它可以帮助我们生成URL地址,这对于实现页面跳转、重定向等功能非常有帮助。在本文中,我们将详细介绍Flask中的url_for函数,包括使用方法、参数说明等内容。

    2024-07-22
    38
  • Python GUI应用之Tkinter布局

    Python GUI应用之Tkinter布局Python是一门高级编程语言,它具备丰富的标准库和第三方库,可用于web开发、数据分析、人工智能等诸多领域。同时,在GUI(图形用户界面)方面,Python也具备一定的优势,它提供了多个GUI框架,其中之一就是Tkinter。Tkinter是Python自带的GUI框架,它的特点是使用简单、兼容性好。在本文中,我们将学习如何使用Tkinter进行GUI应用的布局。

    2024-04-26
    64
  • linux下安装mysql数据库[通俗易懂]

    linux下安装mysql数据库[通俗易懂]本次安装使用的是虚拟机,系统使用centos6.5 64位版本,mysql使用的是linux通用版本5.7.28 一、下载链接地址https://dev.mysql.com/downloads/mys

    2022-12-20
    146
  • Mysql 表锁_mysql临键锁

    Mysql 表锁_mysql临键锁一.分类: 二.创建示例表: create table mylock( id int not null primary key auto_increment, name varchar(20) )e…

    2023-02-27
    169
  • 理解Python节点是如何工作的

    理解Python节点是如何工作的a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-01-11
    112
  • 包含python练习实例019的词条

    包含python练习实例019的词条1、 串联比较

    2023-11-29
    114
  • 100行js代码实现网站在线用户数量统计 nodejs + socket.io方案[亲测有效]

    100行js代码实现网站在线用户数量统计 nodejs + socket.io方案[亲测有效]  公司的在线培训平台,需要增加一个新功能:实时统计当前在线的用户数量并在终端界面上显示,需要的时候可以查询当前在线的用户的明细。   有3种技术方案可以选用:   1)改动后台代码,在用户登录和退…

    2023-04-12
    142

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注