一、约束

(1)概念:

  • 是作用于表中列上的规则,用于限制加入表的数据
  • 约束的存在保证了数据库中数据的正确性、有效性和完整性

(2)约束的分类

java项目数据库如何设计_数据


注:MySQL不支持检查约束

  • 外键约束:

二、数据库设计

(1)数据库设计简介
  1. 软件研发步骤

java项目数据库如何设计_数据_02


2. 数据库设计概念

  • 根据业务系统的具体需求,结合所用的DBMS,为这个业务系统构造出最优的数据存储模型
  • 建立数据库中的表结构以及表之间的关联关系的过程
  1. 数据库设计步骤
  • 需求分析(数据是什么,哪些属性,数据与属性的特点)
  • 逻辑分析(ER图对数据库进行逻辑建模)
  • 物理设计(根据数据库自身的特点把逻辑设计转换为物理设计)
  • 维护设计(1.对新需求建表 2.表优化)
(2)表关系
  1. 一对一
  • 用户与用户详情
  • 用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另外一张表
  • 实现方式:在任意一方加入外键,关联另一方的主键,并设置外键为唯一
  1. 一对多(多对一)
  • 部门和员工
  • 在多的一方建立外键关联一的一方主键
  1. 多对多
  • 商品和订单
  • 借助于第三张中间表,中间表至少包含两个外键,分别关联两方主键

三、多表查询

  1. 简介
-- 多表查询
select * from emp, dept;
-- 笛卡尔积:有A,B两个集合,取A、B所有的组合情况

-- 消除无效数据
-- 查询emp和dept的数据,emp.dep_id = dept.did
select * from emp, dept where emp.dep_id = dept.did;
  1. 内连接
-- 隐式内连接
select * from emp, dept where emp.dep_id = dept.did;

-- 查询emp的name,gender,dept表的dname
select emp.name,emp.gender, dept.dname from emp,dept where emp.dep_id = dept.did;

-- 给表起别名
select t1.name,t1.gender, t2.dname from emp t1,dept t2 where t1.dep_id = t2.did;

-- 显示内连接
select * from emp inner join dept on emp.dep_id = dept.did;
  1. 外连接
-- 左外连接
-- 查询emp表所有数据和对应的部门信息
select * from emp left join dept on emp.dep_id = dept.did;

-- 右外连接
-- 查询dept表所有数据和对应的员工信息
select * from emp right join dept on emp.dep_id = dept.did;
  1. 子查询
  • 查询中嵌套查询,称嵌套查询为子查询
  • 子查询根据查询结果不同,作用不同:单行单列、多行单列、多行多列

四、事务

1.简介

  • 一种机制,一个操作序列,包含了一组数据库操作命令
  • 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这组数据库命令要么同时成功,要么同时失败
  • 事务是一个不可分割的工作逻辑单元

2.事务的四大特征

  • 原子性A:事务是不可分割的最小操作单位,要么同时成功,要么同时失败;
  • 一致性C:事务完成时,必须使所有的数据保持一致状态
  • 隔离性I:多个事务之间,操作的可见性
  • 持久性D:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的