数据库设计

SQL SERVER 数据库设计与实现 1

旧城冷巷雨未停 提交于 2020-01-24 15:30:45
   第一章(数据库的设计) 一、数据   数据是对客观的一种描述,数据是指描述事物的符号记录 二、数据库管理系统   数据库管理系统是数据库系统的核心,是为数据库的建立、使用和维护而配置的软件 三、数据的冗余   同一数据反复存放   问题:浪费存储空间、更新数据容易出错。 四、数据不一致性    数据不一致性是指同一数据在不同的地方有不同的取值 五、数据库(DataBase)    指长期存储在计算机内有组织、可共享的数据集合。 数据库的系统模型   一、层次型数据库   二、网状型数据库   三、关系型数据库     1、关系名 通常说的表名     2、元组 在数据库中经常被称为记录      3、属性 在数据库中经常被称为字段     4、域 属性的取值范围,数据库中某一列的取值限制     5、键 由一个或多个列组成     6、关系模式 只对关系的描述   四、面向对象型数据库 数据库概念模型   一、信息实体的概念     1、实体 用长方形表示 一般是名词     2、属性 用椭圆表示 一般是名词     3、关系 用菱形表示 一般是动词     4、键(Key) 主键、外键     5、实体型(Entity Type)        具有相同属性的实体必然具有共同的特征和性质     6、实体集(Entity Set)        同类型实体的集合   二

115网盘怎么搜索资源

孤者浪人 提交于 2020-01-23 21:51:43
1、啥是 MyBatis? MyBatis 是一个半自动 ORM 持久层框架,她内部对 JDBC 做了封装,并使用 XML 或注解来配置和映射数据库信息,开发人员只需要关注 SQL 语句本身,避免了处理繁琐的数据库映射过程,使 Java 代码和 SQL 完全分离,有利于分层开发,提高开发效率和灵活性。 2、MyBatis 的优缺点和适用场景? 1)优点 基于SQL语句编程,非常灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除SQL与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; 很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 能够与Spring很好的集成; 提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。 2)缺点 SQL语句的编写工作量较大,尤其当字段多、关联表多时。 不支持方言,数据库移植性差。 SQL存在XML文件中,调试不方便。 对动态SQL的支持不是很好,提供的标签过于简单。 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。 3)适用场景 MyBatis 解耦了 SQL 和 程序代码

数据库建表原则大揭秘

£可爱£侵袭症+ 提交于 2020-01-23 03:05:30
数据库设计器 1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。 2. 主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实体, 可以定义主键,也可以不定义主键(因为它无子孙), 但必须要有外键(因为它有父亲)。 主键与外键的设计,在全局数据库的设计中,占有重要地位。当全局数据库的设计完成以后,有个美国数据库设计专家说:“键,到处都是键,除了键之外,什么也没有”,这就是他的数据库设计经验之谈,也反映了他对信息系统核心(数据模型)的高度抽象思想。因为:主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。 3. 基本表的性质 基本表与中间表、临时表不同,因为它具有如下四个特性: (1) 原子性。基本表中的字段是不可再分解的。 (2) 原始性。基本表中的记录是原始数据(基础数据)的记录。 (3) 演绎性。由基本表与代码表中的数据

浅析数据库设计三范式

岁酱吖の 提交于 2020-01-23 02:43:16
在学习数据设计的时候,N种专业术语,看的头疼。但又不能不学,所以只好把它们整理整理出来,好让自己对它们有一个更深的理解。特别是对三范式(Normal Formal)的理解。 三范式指的是第一(1NF)、第二(2NF)和第三范式(3NF),其作用: 解决数据冗余,为数据有效性检查,提高存储效率考虑。 在了解三范式之前,我们先来弄清楚这几个概念(键、函数依赖以及其类型): 一、关键码(键): 由一个或多个属性组成,在实际使用中,有下列几种: 超键:在关系中能唯一标识元组的属性集称为关系模式的超键。 注意 : (属性集,说明可以是多个) 候选键:不含有多余属性的超键 主键:用户选作记录标识的候选键 这三个的关系,用数学关系可以做如下表示: 举例:一张学生信息表 问:超键是? 答曰:学号唯一,是超键;姓名唯一,是超键;(学号,年龄)唯一,是超键;(学号、姓名、年龄)唯一,也是超键。 —— 从这里我们就可以看出,超键的组合是唯一的,但不可能是最小唯一的。 问:候选键是? 答曰: 学号,唯一且没有多余的属性;姓名,唯一且没有多余的属性。 问:主键是? 答曰:既可以选择学号,也可以选择姓名(前提是规定没有重名的)作为主键,所以主键是选中的一个候选键。 数据库设计的目的主要是为了解决数据冗余,对数据进行有效的管理。那么引起数据冗余的主要原因是什么呢? 答曰:数据依赖。 什么是数据依赖

Java 程序员面试笔试宝典 第 5 章 Java Web:(5.3.11-5.3.19)

烂漫一生 提交于 2020-01-22 19:32:52
5.3.11 什么是 IoC 控制反转(Inverse of Control,IoC)有时也被称为依赖注入,是一种降低对象之间耦合关系的设计思想。一般而言,在分层体系结构中,都是上层调用下层的接口,上层依赖于下层的执行,即调用者依赖于被调用者。而通过 IoC 方式,使得上层不再依赖于下层的接口,完成控制反转,使得由调用者来决定被调用者。IoC 通过注入一个实例化的对象来达到解耦和的目的。使用这种方法后,对象不会被显式地调用,而是根据需求通过 IoC 容器(例如 Spring)来提供。 采用 IoC 机制能够提高系统的可扩展性,如果对象之间通过显式调用进行交互会导致调用者与被调用者存在着非常紧密的联系,其中一方的改动将会导致程序出现很大的改动。 例如,要为一家卖茶的商店提供一套管理系统,在这家商店刚开业时只卖绿茶(GreenTea),随着规模的扩大或者根据具体销售量,未来可能会随时改变茶的类型,例如红茶(BlackTea)等,传统的实现方法会针对茶抽象化一个基类,绿茶类只需要继承自该基类即可,如图 5-12 所示。 采用该实现方法后,在需要使用 GreenTea 时只需要执行以下代码即可:AbstractTea t=new GreenTea(),当然,这种方法是可以满足当前设计要求的。但是该方法的可扩展性不好,存在着不恰当的地方,例如,商家发现绿茶的销售并不好,决定开始销售红茶

SQL语句映射文件(1)resultMap

99封情书 提交于 2020-01-20 08:47:45
SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: Xml代码 <mappers> <mapper resource="com/liming/manager/data/mappers/UserMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/StudentMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/ClassMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/TeacherMapper.xml" /> </mappers> 当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。 SQL 映射XML 文件一些初级的元素: 1. cache – 配置给定模式的缓存 2. cache-ref – 从别的模式中引用一个缓存 3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象 4. sql –

MyBatis学习 之 二、SQL语句映射文件(1)resultMap

江枫思渺然 提交于 2020-01-20 06:42:49
二、SQL语句映射文件(1)resultMap SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: Xml代码 < mappers > < mapper resource = "com/liming/manager/data/mappers/UserMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/StudentMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/ClassMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/TeacherMapper.xml" /> </ mappers > 当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。 SQL 映射XML 文件一些初级的元素: 1. cache – 配置给定模式的缓存 2. cache-ref – 从别的模式中引用一个缓存 3. resultMap –

MyBatis学习 之 二、SQL语句映射文件(1)resultMap

落花浮王杯 提交于 2020-01-20 05:39:26
SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: Xml代码 <mappers> <mapper resource="com/liming/manager/data/mappers/UserMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/StudentMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/ClassMapper.xml" /> <mapper resource="com/liming/manager/data/mappers/TeacherMapper.xml" /> </mappers> 当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。 SQL 映射XML 文件一些初级的元素: 1. cache – 配置给定模式的缓存 2. cache-ref – 从别的模式中引用一个缓存 3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象 4. sql –

MyBatis学习 之 二、SQL语句映射文件(1)resultMap

假如想象 提交于 2020-01-20 04:32:01
二、SQL语句映射文件(1)resultMap SQL 映射XML 文件是所有sql语句放置的地方。需要定义一个workspace,一般定义为对应的接口类的路径。写好SQL语句映射文件后,需要在MyBAtis配置文件mappers标签中引用,例如: Xml代码 < mappers > < mapper resource = "com/liming/manager/data/mappers/UserMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/StudentMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/ClassMapper.xml" /> < mapper resource = "com/liming/manager/data/mappers/TeacherMapper.xml" /> </ mappers > 当Java接口与XML文件在一个相对路径下时,可以不在myBatis配置文件的mappers中声明。 SQL 映射XML 文件一些初级的元素: 1. cache – 配置给定模式的缓存 2. cache-ref – 从别的模式中引用一个缓存 3. resultMap –

数据库设计关系规范化的标准—范式

一世执手 提交于 2020-01-18 13:35:35
预备知识:属性:实体所具有的某一特性称为属性      码:唯一标识实体的属性集称为码,如果一个实体有多于一个候选码,则选定其中一个为主码       包含在任何一个候选码中的属性称为主属性,不包含在任何码中的属性叫做非主属性。     多值依赖:设于关系模式R(U),U 是属性全集,X,Y和Z是U的子集,且Z=U-Z-Y,如果对于R的任一关系r,对于X的一个确定值,存在Y的一组值与之对应,且Y的这组值仅仅决定于X的至而与Z值无关,此时称Y多值依赖与X。在多值依赖中,若Z不是空集,则称非平凡的多值依赖,否则是平凡的多值依赖。 范式的目的就是为了尽量消除数据冗余数据操作如插入,删除,更新时产生的异常。但是我个人觉得首先要理解什么是无异常的数据操作呢?什么是数据的冗余度最低呢,能否达到0冗余度呢?根据我在几本书上总结的,只要消除了非主属性或主属性对码的部分依赖或传递依赖,在高级一些就是消除非平凡且非函数依赖的多只依赖,消除不由候选码所蕴含的连接依赖,就可以让数据库模式达到你所期望的规范标准。 当前范式一共有六个: 1NF:关系模式R中的所有属性都是不可再分割的,在这种情况下,关系模式R中会同时包含完全函数依赖,部分函数依赖和传递函数依赖,这些复杂的函数依赖关系往往导致数据操作出现种种弊端。所以要运用投影分解来将关系分解,去掉复杂的关系,向更高一级的范式转换。   分解的基本原则是