数据库的三大范式
为什么需要数据规范化 ?
信息重复
更新异常
插入异常
无法正常显示信息
删除异常
丢失有效的信息
三大范式:
1.第一范式(1NT):列不可再分
1.每一列属性都是不可再分的属性值,确保每一列的原子性
2.两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据
2.第二范式(2NT):属性完全依赖于主键
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主键
2.第三范式(3NF)属性不依赖于其它非主属性 属性直接依赖于主键
3.第三范式(3NF)属性不依赖于其它非主属性 属性直接依赖于主键
数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a–>b–>c 属性之间含有这样的关系,是不符合第三范式的。
https://blog.csdn.net/qq_40899182/article/details/81706253
规范和性能的问题
关联查询的表不得超过三张表
1. 考虑商业化的需求和目标,(成本,用户体验!) 数据库的性能更加重要
2. 在规范性能的问题的时候,需要适当的考虑一下规范性!
3. 故意给某些表中增加一些冗余的字段。(从多表查询中变为单表查询)
4. 故意增加一些计算列 (从大数据量值降低为小数据量的查询:索引)
JDBC
数据库驱动
地址:马文仓库: 我的ql - 我的斯克尔连接器 - 爪哇 (mvnrepository.com)
选择相对的版本号
点击jar下载
然后在file–>project structure–>libraries加号,找到存放的位置,确定,ok, apply
在项目下面
点击加号添加你的数据库,然后填写信息
点击6位置添加
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @Author:刘洋
* @Date:2021/8/26-08-26-17:33
* @Description:PACKAGE_NAME
* @version:1.0
*/
public class JdbcFirstDEmo {
public static void main(String[] args) {
Connection con;
//jdbc驱动
String driver="com.mysql.cj.jdbc.Driver";
//这里我的数据库是cxxt
String url="jdbc:mysql://localhost:3306/shop?&useSSL=false&serverTimezone=UTC";
String user="root";
String password="come.2018";
try {
//注册JDBC驱动程序
Class.forName(driver);
//建立连接
con = DriverManager.getConnection(url, user, password);
if (!con.isClosed()) {
System.out.println("数据库连接成功");
}
con.close();
} catch (ClassNotFoundException e) {
System.out.println("数据库驱动没有安装");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("数据库连接失败");
}
}
}
// 结果
数据库连接成功
Process finished with exit code 0