曾经的我以为,我数据库这块应该掌握的不是多差,毕竟我本科学过,然后研究生期间给导师做项目过程中也没有觉得很吃力,因为会写简单的查询语句就没多大问题,直到现在(一个项目后),才觉得我真的该好好复习一下数据库这块的知识,以下是我整理的:
觉得这篇文章对数据库基本概念阐述的很明白
数据库设计优化总结:
- 设计思路:
1、根据业务概念抽象成类和属性,区分类和属性采用找名词的方法,看名词是否具有动作或者方法。
2、在设计建模时,类之间的各种关系为:继承(extends,指向父类)、实现(implement),关联(拥有关系,指向被拥护者)、组合(整体与部分,不可单独,指向整体)、聚合(整体与部分,可单独存在,指向整体)、包图(对类图进行分类)。建模使用uml,有用例图(描述系统功能)、类图(描述业务概念)、状态图(描述业务流程)、包图(对类图进行分类)。
3、在设计数据表时,从数据的查询、增加、删除 等功能来考虑sql的难易程度,通过增加冗余字段或者表来实现SQL的简化。
4、数据库表之间的关系本质就是主外键之间的关系。表之间的关系分为:一对一、一对多、多对多的关系,并且通过外键进行关联。在设计表时,一般在多的一方添加外键。 - 主键、外键的介绍
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组能唯一标识一条记录,那么该属性组就可以成为一个主键。
如:学生表(学号,姓名,性别,班级)学号是个主键;
课程表(课程编号,课程名,学分)课程编号是个主键;
成绩表(学号,课程编号,成绩)学号和课程号的组合才是主键;
成绩表中的学号不是成绩表的主键,但它和学生表里面的学号相对应,并且学生表里面的学号是学生表的主键,则称成绩表中的学号是学生表的外键。同理可得,成绩表中的课程编号是课程表的外键。
定义主键和外键的目的主要是为了维护关系数据库的完整性,主键能确定一条记录的唯一标识;外键用于与另一个表的关联,是确定另一张表记录的字段,用于保持数据的一致性。
主键和外键的设计原则:
主键和外键是把多个表组织成一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。一旦将所设计的数据库用于生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键是非常必要和值得的。
主键在物理层面只有两个用途:1、唯一的标识一行;2、作为一个可以被外键有效引用的对象。
主键对用户是没有任何意义的;主键应该是单列的,以提高连接和筛选操作的效率;永远不要更新主键;主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等;主键应当有计算机自动生成(如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义)。
下面是mysql的基本语法的使用:
其中,order by 关键字用于对结果集按照一个列或者多个列进行排序;默认按照升序对记录进行排序,如果需要按照降序对记录进行排序,你可以使用DESC关键字。
in 与 = 的异同
相同点:均在where中使用作为筛选条件之一,均是等于的含义。
不同点:in可以规定多个值,等于规定一个值。