一、表的关系设计
二、表一般都拥有的字段
id
create_time
update_time
但是,中间表就不要以上这三个字段了
三、设置索引查询
一般MySQL语句中都会设置索引查询,可以提高查询效率
四、数据库事务
事务的四大特性
事务的原子性:sql语句要么成功,要么失败
事务的一致性
事务的持久性:事务一旦提交成功,就会持久性地保存在数据库中
事务的隔离性:事务与事务是相互独立的,当A事务正在执行还未提交事务;B事务处于等待状态(相当于单线程)
Mysql数据库是由java语言写成的,所以数据库中也支持多线程的
由于数据库的事务隔离性,一旦在java程序中开始事务(默认的隔离级别是第三级:对增删改隔离),在操作增删改时,需要事务A提交后(释放锁),B事务才可以对数据库进行增删改
但是,对于查操作,数据库第三级别没有进行事务隔离,那么事务A和事务B会同时获取到同一个数据;因此,在操作数据库的增删改操作时,我们需要考虑并发问题
若客户端并发操作时,考虑到安全问题,我们需要先操作增删改,再去查询;若不符合,则需要回滚事务(通过开始事务后,方法中若有异常,会进行事务回滚),那么我们只要在不符合条件的情况下抛出异常,由全局异常处理器进行处理,且事务会自动回滚(把操作的sql语句还原)