数据库四大特性及其相关内容

一、数据库四大特性五大约束

数据库四大特性是指:原子性、一致性、隔离性和持久性,下文将根据这四大特性详细探讨五大约束。

1. 实体完整性约束

实体完整性约束用来保证每张表都有一个主键,而且不允许为空。它还可以用来防止出现重复的记录。

<create table students(
   ID int PRIMARY KEY NOT NULL,
   Name varchar(255) NOT NULL,
   Age int NOT NULL,
   Address varchar(255),
   CLass varchar(255) NOT NULL,
   Sex varchar(255) NOT NULL,
   Phone varchar(255)
);>

2. 参照完整性约束

参照完整性约束用来保证在一个表中的外键使用的参照表中的主键是唯一的。它可以防止以后删除一些记录带来的问题。

<create table class(
   Class varchar(255) PRIMARY KEY NOT NULL,
   HeadTeacher varchar(255) NOT NULL
);

create table students(
   ID int PRIMARY KEY NOT NULL,
   Name varchar(255) NOT NULL,
   Age int NOT NULL,
   Address varchar(255),
   CLass varchar(255) NOT NULL,
   Sex varchar(255) NOT NULL,
   Phone varchar(255),
   foreign key(CLass) references class(Class)
);>

3. 域完整性约束

域完整性约束用来限制每一个属性的取值范围,比如年龄不能小于0。

<create table students(
   ID int PRIMARY KEY NOT NULL,
   Name varchar(255) NOT NULL,
   Age int NOT NULL CHECK (Age > 0),
   Address varchar(255),
   CLass varchar(255) NOT NULL,
   Sex varchar(255) NOT NULL,
   Phone varchar(255)
);>

4. 用户定义完整性约束

用户定义完整性约束用来进行内容上的限制,比如手机号必须是11位纯数字。

<create table users(
   Name varchar(255) PRIMARY KEY NOT NULL,
   Password varchar(255) NOT NULL,
   Email varchar(255) NOT NULL,
   Phone varchar(11) NOT NULL CHECK (Phone LIKE '[0-9]%')
);>

5. 触发器约束

触发器约束在一张表上设置一个触发器,在该表中添加、修改或删除记录时,触发器会按照一定规则执行相应操作。

<CREATE TRIGGER update_salary
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
IF NEW.salary > OLD.salary THEN
   INSERT INTO record VALUES(OLD.ID, OLD.salary, NEW.salary)
END IF;
END;>

二、数据库四大特性三大范式

三大范式是指:第一范式(1NF)、第二范式(2NF)和第三范式(3NF),它们属于逐步消除数据冗余的策略。下面我们分别简单介绍一下这三个范式。

1. 第一范式(1NF)

第一范式指每个属性都是原子性的,不可再分,这是消除重复数据的第一步。

<create table students(
   ID int PRIMARY KEY NOT NULL,
   Name varchar(255) NOT NULL,
   Age int NOT NULL,
   Address varchar(255),
   CLass varchar(255) NOT NULL,
   Sex varchar(255) NOT NULL,
   Phone varchar(255)
);>

2. 第二范式(2NF)

第二范式指消除非主属性对主键的部分依赖,即表中任何非主属性都不能只依赖于主键的部分,而应该依赖于整个主键。

<create table orders(
   OrderID int PRIMARY KEY NOT NULL,
   CustomerID varchar(255) NOT NULL,
   OrderDate date NOT NULL,
   ProductID int NOT NULL,
   Quantity int NOT NULL,
   Price decimal(18,2) NOT NULL,
   foreign key(CustomerID) references customers(CustomerID)
   foreign key(ProductID) references products(ProductID)
);>

3. 第三范式(3NF)

第三范式指消除非主属性对主键的传递依赖,即当一个非主属性依赖于另一个非主属性时,应该将这些非主属性分别放到独立的关系中。

<create table orders(
   OrderID int PRIMARY KEY NOT NULL,
   CustomerID varchar(255) NOT NULL,
   OrderDate date NOT NULL,
   foreign key(CustomerID) references customers(CustomerID)
);

create table order_details(
   OrderID int NOT NULL,
   ProductID int NOT NULL,
   Quantity int NOT NULL,
   Price decimal(18,2) NOT NULL,
   foreign key(OrderID) references orders(OrderID)
   foreign key(ProductID) references products(ProductID)
);>

三、数据库四大特性及数据库隔离级别

数据库隔离级别用来解决多个事务之间产生的一致性问题,下面我们选择四种隔离级别来介绍。

1. 读未提交(read uncommitted)

事务中的改变会马上被其他事务所见,容易造成脏读、不可重复读和幻读等问题。优点是效率高,缺点是不安全不稳定。

2. 读已提交(read committed)

事务中的改变只有在提交以后其他事务才能看到,可以避免脏读,但仍然存在不可重复读和幻读的问题。

3. 可重复读(repeatable read)

在这种隔离级别下,读取过的数据会被缓存,直到事务结束,保证了事务中所读取的数据的一致性,同时可以避免脏读和不可重复读的问题,但仍然有可能发生幻读。

4. 序列化(serializable)

将所有事务串行执行,可以避免所有的并发问题,但同时也牺牲了系统的性能。

<SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

START TRANSACTION;

SELECT * FROM students WHERE Age < 20;

COMMIT;>

四、数据库四大类型

数据库类型指的是在关系模型中使用到的数据类型。下面我们介绍四种主要的数据库类型。

1. 数值类型

数值类型分为整型和浮点型,常见的整型有int、bigint、tinyint等,常见的浮点型有float、double等。

<create table students(
   ID int PRIMARY KEY NOT NULL,
   Name varchar(255) NOT NULL,
   Age int NOT NULL,
   Score float NOT NULL
);>

2. 字符串类型

字符串类型常见的有char、varchar、text等,char是固定长度的字符串,varchar是变长的字符串,text用来存放更长的字符串。

<create table students(
   ID int PRIMARY KEY NOT NULL,
   Name varchar(255) NOT NULL,
   Age int NOT NULL,
   Address text NOT NULL
);>

3. 时间类型

时间类型主要包含date、time、datetime、timestamp等,用来存储时间或日期相关的数据。

<create table orders(
   OrderID int PRIMARY KEY NOT NULL,
   OrderDate date NOT NULL,
   OrderTime time NOT NULL,
   DateTime datetime NOT NULL,
   TimeStamp timestamp NOT NULL
);>

4. 二进制类型

二进制类型主要用来存储二进制数据,如图片、音频等。

<create table images(
   ImageID int PRIMARY KEY NOT NULL,
   ImageData longblob NOT NULL
);>

五、数据库四大语言

数据库语言包含DQL(数据查询语言)、DML(数据操作语言)、DDL(数据定义语言)和DCL(数据控制语言),下面我们将按照不同语言进行介绍。

1. 数据查询语言(DQL)

数据查询语言主要用来查询数据,包括SELECT、FROM、WHERE等关键字。

<SELECT * FROM students WHERE Age < 20;>

2. 数据操作语言(DML)

数据操作语言主要用来对数据进行增、删、改,包括INSERT、UPDATE、DELETE等关键字。

<INSERT INTO students(ID, Name, Age) VALUES(1, 'Tom', 20);>

3. 数据定义语言(DDL)

数据定义语言主要用来定义或修改数据库中的对象,包括CREATE、ALTER、DROP等关键字。

<CREATE TABLE students(
   ID int PRIMARY KEY NOT NULL,
   Name varchar(255) NOT NULL,
   Age int NOT NULL
);>

4. 数据控制语言(DCL)

数据控制语言主要用来对数据库进行控制,包括GRANT、REVOKE等关键字。

<GRANT SELECT, UPDATE ON students TO user1;

REVOKE SELECT, UPDATE ON students FROM user2;>

六、数据库四大范式与数据库四大原则

数据库四大范式和四大原则是数据库设计中的重要概念,下面我们将按照不同范式和原则进行介绍。

1. 第一范式(1NF)

第一范式指每个属性都是原子性的,不可再分,这是消除重复数据的第一步。在数据库设计中,应该尽可能使每一列数据都是原子型的数据,也就是不可再分的数据。

2. 第二范式(2NF)

第二范式指消除非主属性对主键的部分依赖,即表中任何非主属性都不能只依赖于主键的部分,而应该依赖于整个主键。在数据库设计中,应该将表中的某一行数据作为一个整体来理解,同时要保证每个表都有一个主键。

3. 第三范式(3NF)

第三范式指消除非主属性对主键的传递依赖,即当一个非主属性依赖于另一个非主属性时,应该将这些非主属性分别放到独立的关系中。在数据库设计中,应该避免表之间的冗余,保证每个表只存储相关的数据,不要存储无关的数据。

4. 数据库四大原则

数据库四大原则是指:原子性、一致性、隔离性和持久性,下面我们分别来介绍一下。

5. 原子性

原子性指一个事务

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/204548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-07 12:18
下一篇 2024-12-07 12:18

相关推荐

  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • Python计算机语言的特性与应用

    Python,是一种高层次、解释型的、面向对象的计算机编程语言。 一、简介 Python编程语言的初衷是:代码简洁易读、可拓展性强、适用范围广。其应用领域包括Web开发、数据科学、…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28
  • Think-ORM数据模型及数据库核心操作

    本文主要介绍Think-ORM数据模型建立和数据库核心操作。 一、模型定义 Think-ORM是一个开源的ORM框架,用于简化在PHP应用中(特别是ThinkPHP)与关系数据库之…

    编程 2025-04-27
  • 如何使用Python将CSV文件导入到数据库

    CSV(Comma Separated Values)是一种可读性高、易于编辑与导入导出的文件格式,常用于存储表格数据。在数据处理过程中,我们有时需要将CSV文件导入到数据库中进行…

    编程 2025-04-27
  • Python批量导入数据库

    本文将介绍Python中如何批量导入数据库。首先,对于数据分析和挖掘领域,数据库中批量导入数据是一个必不可少的过程。这种高效的导入方式可以极大地提高数据挖掘、机器学习等任务的效率。…

    编程 2025-04-27
  • Activiti 6自动部署后不生成数据库act_hi_*的解决方法

    本文将从多个方面详细阐述Activiti 6自动部署后不生成数据库act_hi_*的问题,并提供对应的代码示例。 一、问题分析 在使用Activiti 6部署流程后,我们发现act…

    编程 2025-04-27

发表回复

登录后才能评论