1. 为什么要进行数据库规范设计:
-
-
数据库设计的三大范式:
- 第一范式:要求数据库的每一列都是不可分割的原子数据项(原子性即每个字段只包含一一个不可分割的属性)。
- 第二范式:前提满足第一范式,每张表只描述一件事情,主键依赖--每个非主键的字段都必须依赖于全部的主键(即只有通过所有的主键才能唯一标识,确认唯一的字段信息)
- 第三范式:满足第二范式的基础上,非主属性不存在传递依赖。(即不存在传递依赖--即除了非主属性完全依赖于主键外,非主属性之间也存在依赖)
- 依赖即使可以通过自己的信息找到你所依赖的唯一信息。
-
规范性和性能的问题:
- 关联查新不得超过三张表
- 考虑商业化的需求和目标,(成本和用户体验)数据库的性能更加重要
- 在规范性能的问题的时候,需要适当考虑一下规范性
- 故意给某些表增加一些冗余的字段,(从多表查询中变成单表查询)
- 故意增加一些计算列(从大数据量变成小数据量查询;增加索引)
-
MySQL数据库连接示例:
package com.model.test;
import java.sql.*;
public class JDBC {
public static void main(String[] args) throws SQLException {
Connection connection=null;
Statement statement=null;
ResultSet resultSet=null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取用户的信息和url
String url="jdbc:mysql://localhost:3306/shop";
String username="root";
String password="12346";
//3.获取数据库连接对象Connection
connection = DriverManager.getConnection(url, username, password);
//4.获取SQL执行对象Statement
statement = connection.createStatement();
//5.获取SQL语句
String sql="select * from user";
//6.执行SQL并获取返回值
resultSet = statement.executeQuery(sql);
//7.遍历返回值result即可
while (resultSet.next()){
String id = (String) resultSet.getObject("id");
String name = (String) resultSet.getObject(2);
System.out.println("id号:"+id+"姓名:"+name);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}finally {
//8.关闭连接
resultSet.close();
statement.close();
connection.close();
}
}
}