当前位置: 首页 > web >正文

第2章 数据库设计

数据库设计

  • 1 关系数据库设计理论三大范式
  • 2 连接数据库和基本信息
    • 2.1 连接数据库
    • 2.2 基本信息查询
  • 3 创建数据库和表
    • 3.1 创建数据库
    • 3.2 创建表

1 关系数据库设计理论三大范式

​ 关系模型(Relational Mode)是一种基于表的数据模型,广泛应用于数据库管理系统(DBMS)中。

​ 关系模型的核心思想,将数据组织成表,每个表包含一组相关的行和列。

​ 行和列之间的关系通过主键和外键来定义,从而实现数据的王整形、一致性和可维护维护性。

  • 属性(Attribute):列的名称。
  • 关系(Relation):列属性之间存在的某种关联。
  • 表(Table):由多个属性以及众多元祖所表示的各个实例组成。
  • 键(Key):由一个或多个属性组成,其值能唯一标识关系中的一个元组。如果某个关系A中的一个(组)属性是另一个关系B的键,则该(组)属性在A中被称为外键。
  • 笛卡尔积(交叉连接,Cross Join):第一个关系的每一行数据分别与第二个关系的每一行数据组合。
  • 自然连接(Natural Join):第一个关系的每一行数据与第二个关系的每一行数据进行匹配,若得到交叉部分则合并,若无交叉部分则舍弃。
  • θ连接(Theta Join):加上约束条件的笛卡尔积,先得到笛卡尔积,在根据约束条件删除不满足条件的元祖。
  • 外连接(Outer Join):执行自然连接后,将舍弃的部分也加入,并且把匹配失败处的属性设置为null。

范式:

  • 第一范式(1NF):目标是确保每列的原子性,如果每列都是不可再分的最小数据单元(也被称为最小的原子单元),则满足第一范式。
  • 第二范式(2Nf):要求每张表只描述一件事件。
  • 第三范式(3NF):如果一个关系满足第二范式,并且除了主键以外的其他列都不依赖于主键列,则满足第三范式。

2 连接数据库和基本信息

2.1 连接数据库

mysql -h localhost -u root -p

2.2 基本信息查询

# 查询服务器版本和当前信息
select version(),current_date;#把MySQL作用计算器
select sin(pi() /5),(9+1) *5;#用分号分隔多条SQL语句
select version(); select now();#MySQL可以写成多个的形式,最后带上终止分号
select 
user()
,
current_date;#取消查询,当输入 "\c" 之后,当前输入的命令就取消了
select 
users
\c
  • 查询通常由分好结尾的SQL语句组成。
  • 输入查询语句后,MySQL将它发送到服务器执行并显示结果,然后显示下个 "mysql>"提示符,表名已准备好接收另一个查询。
  • MySQL以表格形式(行和列)显示查询的结果。第一行是标签(或列名),其他行为查询结果。
  • SQL关键不区分字母大小写。

MySQL所处状态含义:

提示意义和说明
msyql>准备就绪,等待接收新的查询
->等待多行查询的下一行
'>等待下一行,等待以单引号(')开头的字符串完成
">等待下一行,等待以单引号(")开头的字符串完成
`>等待下一行,等待以单引号(`)开头的字符串完成
/*>等待下一行,等待以单引号(/*)开头的字符串完成
#当以单行输入查询语句是时,如果忘记分好结尾,那么MySQL会一直等待我们输入";" 
mysql> select user()->
#'> 和 ">提示符表示当前正处于字符串的收集过程中。
mysql> select * from mytable where name = 'clay and'>

3 创建数据库和表

# 1.使用 show语句查询当前服务器上存在的数据库;
show dtabases;#2. 如果msyql数据库存在,那么我们可以进入MySQL数据库查询当前数据库的表。
use mysql;##查询当前数据库中的表
show tables;

3.1 创建数据库

#创建数据库
create database DEMO;
  • 在UNIX操作系统中,数据库名称是区分字符大小写的。

3.2 创建表

#创建数据表
create Table table_name(column_name column_type);
  • 表名:代码数据表的名称,如果我们想要存储用户信息,则可以取名为 userinfo。
  • 表字段名:表示表中有哪些属性。
create table if not exists `userinfo`(`id` int unsigned auto_increment,`name` varchar(100) not null,`age` int not null,`date` date,primary key(`id`)
) engine=innodb default charset=utf8;
  • 设置字段值不为null,字段属性设置为 not null。
  • auto_increment:列定义为自增的属性,一般用于主键,数值自动加1.
  • primary key:用于把列定义为主键,可以使用多列来定义主键,列之间以逗号分隔。
  • engine:设置存储引擎。
  • charset:设置字符集的编码。
  • varchar(100) 与 int:代表字段使用的数据类型。
#查看表结构
describe userinfo;
http://www.xdnf.cn/news/8634.html

相关文章:

  • 多场景游戏AI新突破!Divide-Fuse-Conquer如何激发大模型“顿悟时刻“?
  • JAVA网络编程——socket套接字的介绍上(详细)
  • uniapp+ts 多环境编译
  • JavaSE核心知识点03高级特性03-03(IO流)
  • 5 分钟速通密码学!
  • 人工智能发展
  • 【C/C++】胜者树与败者树:多路归并排序的利器
  • MFC——编程框架和基础
  • “可观、可测、可调、可控“,四可功能如何让光伏电站变身电网“优等生“?
  • Spring AI(8)——流式响应
  • wafer晶圆几何形貌测量系统:厚度(THK)翘曲度(Warp)弯曲度(Bow)等数据测量
  • 直线导轨运转过程中如何避免震动发生?
  • Linux上部署IgH EtherCAT主站教程
  • B2C商城架构对比:ZKmall模板商城为何选择 Spring Cloud
  • 《P1470 [USACO2.3] 最长前缀 Longest Prefix》
  • SOC-ESP32S3部分:9-GPIO输入按键状态读取
  • python打卡训练营打卡记录day34
  • 电力设备类——如何使用YOLOv8模型对配网缺陷检数据集进行训练、评估和可视化 这个配网销钉缺失检测图像数据集 配网缺陷检测图像数据集 配网缺陷
  • 【达梦数据库】groupadd无法打开etc group
  • C++:适配器
  • VsCode配置
  • 前后端分页详解
  • Java的动态加载及类加载器实践
  • UI 设计|提高审美|Linear UI风格分享
  • RxJS 核心操作符详细用法示例
  • AI开发实习生面试总结(持续更新中...)
  • 精华贴分享|个股拥挤度分析研究分析
  • docker安装es连接kibana并安装分词器
  • Windows开机时间过长的原因
  • 射频芯片学习