数据库设计

数据库设计三大范式和五大约束

自闭症网瘾萝莉.ら 提交于 2020-02-28 06:50:01
来源: https://www.cnblogs.com/zhouguowei/p/9268788.html 一、三大范式: 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法,以下就是对这三个范式的基本介绍: 第一范式(1NF): 1、数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。 如果需求知道那个省那个市并按其分类,那么显然第一个表格是不容易满足需求的,也不符合第一范式。 2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。 显然第一个表结构不但不能满足足够多物品的要求,还会在物品少时产生冗余。也是不符合第一范式的。 第二范式(2NF): 满足1NF后要求表中的所有列,每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。 一个人同时订几个房间,就会出来一个订单号多条数据,这样子联系人都是重复的,就会造成数据冗余。我们应该把他拆开来。

MyBatis:一对多、多对一处理

喜欢而已 提交于 2020-02-28 02:05:35
多对一的处理 多对一的理解: 多个学生对应一个老师 如果对于学生这边,就是一个多对一的现象,即从学生这边关联一个老师! 数据库设计 CREATE TABLE `teacher` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO teacher(`id`, `name`) VALUES (1, '秦老师'); CREATE TABLE `student` ( `id` INT(10) NOT NULL, `name` VARCHAR(30) DEFAULT NULL, `tid` INT(10) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fktid` (`tid`), CONSTRAINT `fktid` FOREIGN KEY (`tid`) REFERENCES `teacher` (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO `student` (`id`, `name`, `tid`) VALUES ('1', '小明', '1'); INSERT INTO `student`

分销系统数据库设计

て烟熏妆下的殇ゞ 提交于 2020-02-27 12:10:32
简单点说二三级分销系统,   1、用户通过分享链接促成商品卖出,获取到一定比例的商品利润。   2、用户促成交易获得一定比例的利润时,其上级用户也会获得一定比例的利润。   对于本人所设计的分销系统,与二三级分销系统还是有很大的差别, 只要是上级用户,其下级或无线下级的用户一旦获取利润,其都可以获得一定利润比咧,而类似于微信的二三级分销系统,是只有连续的三级用户才可以获得利润。 这里只为解决这些需求所带来的技术难题,不做实际应用。 由上我们可以分析出一些内容   数据库设计方面:用户表的设计,用户的上下级关系如何设计,推广链接的数据库存储,用户与推广链接的数据存储   网上看到用户上下级关系有很多存储方式,   比如, 方法一、   用一个tree字段存储字符串来表示上下级关系模式,比如A用户是B用户的上级, 则用户B的数据库中tree为"/A/" , B用户的下级是C用户,则C的tree是"/A/B/" 这样要数据库查找上下级关系的时候只需要SELECT * FROM user WHERE treelike "/A/%" 如上面sql语句是查找出A的所有下级用户,使用一条简单的sql语句即可完成查找。 如果要找到当前用户的所有上级用户也是用like关键字进行匹配,如查找C用户上级 , %是通配符,匹配任意多个字符串 SELECT * FROM user WHERE

网页评论的数据库设计

痞子三分冷 提交于 2020-02-27 09:17:06
转发自https://blog.csdn.net/lm1622/article/details/77950133 1.由用户发表作品 其他已注册用户 在浏览个用户发表的作品时可以进行 点赞 评论 (同时可以撤销点赞) 2.同时对评论的内容也可以进行相应的点赞 (同时可以撤销点赞) 3.以及后期规划 对评论的用户可以进行相应的回复 基于以上三点 我查了一些网上资料 最终决定 设计以下 三张表 用户表就不多说了 id account nickname password 等等 评论表(comment)设计如下: 表字段字段说明 id主键 compose_id作品id compose_type作品类型 content评论内容 from_userid评论用户id 回复表(reply)设计: 表字段字段说明 id主键 comment_id评论id reply_id回复目标id reply_type回复类型 content回复内容 from_userid回复用户id to_userid目标用户id 点赞表(zan)设计如下: 表字段字段说明 id主键 type_id对应的作品或评论的id type点赞类型 1作品点赞 2 评论点赞 3.... user_id用户id status点赞状态 0--取消赞 1--有效赞 对于 评论表来说 它是挂载于 作品之下的 。 1个作品有多个评论。 而回复表

mybatis一级缓存二级缓存

江枫思渺然 提交于 2020-02-27 00:21:52
一级缓存   Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时的情况下,SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。                  为什么要使用一级缓存,不用多说也知道个大概。但是还有几个问题我们要注意一下。    1、一级缓存的生命周期有多长?    a、MyBatis在开启一个数据库会话时,会创建一个新的SqlSession对象,SqlSession对象中会有一个新的Executor对象。Executor对象中持有一个新的PerpetualCache对象;当会话结束时,SqlSession对象及其内部的Executor对象还有PerpetualCache对象也一并释放掉。   b、如果SqlSession调用了close()方法,会释放掉一级缓存PerpetualCache对象,一级缓存将不可用。   c、如果SqlSession调用了clearCache()

MyBatis缓存配置

眉间皱痕 提交于 2020-02-26 10:19:19
一级缓存   Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时的情况下,SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。                  为什么要使用一级缓存,不用多说也知道个大概。但是还有几个问题我们要注意一下。    1、一级缓存的生命周期有多长?    a、MyBatis在开启一个数据库会话时,会 创建一个新的SqlSession对象,SqlSession对象中会有一个新的Executor对象。Executor对象中持有一个新的PerpetualCache对象;当会话结束时,SqlSession对象及其内部的Executor对象还有PerpetualCache对象也一并释放掉。   b、如果SqlSession调用了close()方法,会释放掉一级缓存PerpetualCache对象,一级缓存将不可用。   c、如果SqlSession调用了clearCache()

考研复试数据库(五)

不想你离开。 提交于 2020-02-25 22:20:13
第五部分 数据库设计 (一)、考核内容 (1) 用户需求分析、概念结构设计 (2) 逻辑结构设计 (3) 物理结构设计 (4) 数据库结构与应用行为设计 (二)、考核要求 (1)了解数据库生命周期。 (2)了解数据库设计规划与用户需求分析。 (3)掌握数据库概念结构设计步骤与方法(实体联系模型)。 (4)掌握数据库逻辑结构设计方法,由实体-联系模型向关系模型的转换。 (5)了解数据库的物理结构设计方法:索引、数据聚簇。 (一)选择 1.在数据库设计中,用E-R 图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的 ( )段。 A.需求分析 B.概念设计 C.逻辑设计 D .物理设计 2.在关系数据库设计中,设计关系模式是( )的任务。 A.需求分析阶段 B.概念设计阶段 C.逻辑设计阶段 D .物理设计阶段 3.数据库物理设计完成后,进入数据库实施阶段,下列各项中不属于实施阶段的工作是( )。 A.建立库结构 B.扩充功能 C.加载数据 D .系统调试 4.在数据库的概念设计中,最常用的数据模型是 。 A.形象模型 B.物理模型 C.逻辑模型 D .实体联系模型 5.从E-R模型关系向关系模型转换时,一个M∶N联系转换为关系模型时,该关系模式的关键字是 。 A.M端实体的关键字 B.N 端实体的关键字 C.M端实体关键字与N端实体关键字组合 D .重新选取其他属性 6

数据库设计

荒凉一梦 提交于 2020-02-25 08:00:08
数据库设计 一、数据库设计简介 按照规范设计,将数据库的设计过程分为六个阶段: A、系统需求分析阶段 B、概念结构设计阶段 C、逻辑结构设计阶段 D、物理结构设计阶段 E、数据库实施阶段 F、数据库运行与维护阶段 需求分析和概念结构设计独立于任何数据库管理系统。 二、系统需求分析 1、需求分析的任务 需求分析的任务:对现实世界要处理的对象进行详细的调查,通过对原系统的了解,收集支持新系统的基础数据并对其进行处理,在此基础上确定新系统的功能。 A、调查分析用户活动 B、收集和分析需求数据,确定系统边界信息需求,处理需求,安全性和完整性需求 C、编写系统分析报告 2、需求分析的方法 需求分析有两种方法:自顶向下、自底向上 A、自顶向下 自顶向下方法从最上层的系统组织机构入手,采用逐层分解的方式分析系统。 用数据流图和数据字典描述系统 数据流图:描述输入数据到输出数据的变换过程 数据流:由一组固定成分的数据组成,代表数据的流动方向 处理:描述了输入数据到输出数据的变换 文件:用于存储数据 源或宿:存在于系统之外的人员或组织,表示系统输入数据的来源和输出数据的去向 B、自底向上 3、实例 教学管理系统 基本需求: 某学校设计学校教学管理系统,学生实体包括学号、姓名、性别、生日、民族、籍贯、简历、入学日期,每名学生选择一个主修专业,专业包括专业编号、名称、类别,一个专业属于一个学院

hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存

若如初见. 提交于 2020-02-25 01:43:21
二级缓存(sessionFactory):    Hibernate的二级缓存由SessionFactory对象管理,是应用级别的缓存。它可以缓存整个应用的持久化对象,所以又称为“SessionFactory缓存”.    hibernate二级缓存中的缓存对象可以被整个应用的Session对象共享,即使关闭当前Session对象,新建的Session对象仍可使用。使用Hibernate的二级缓存之后查询数据,Session对象会首先在以及缓存中查找有无缓存数据被命中。如果没有,则查找二级缓存。如果有,则直接返回所命中的数据;否则查询数据库   下面介绍在hibernate中如何开启和使用二级缓存:   1.在hibernate.cfg.xml中开启二级缓存,并且配置cache.region.factory_class: <!-- 开启二级缓存 --> <property name="cache.use_second_level_cache">false</property> <!-- 配置cache.region.factory_classs --> <property name="cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>   2

Mybatis简单数据库查询

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-24 20:51:22
简介: MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 MyBatis的功能架构: 分为三层 1.API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。 2.数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。 3.基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。 优点: 1.解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。 2.提供映射标签,支持对象与数据库的orm字段关系映射 3.提供对象关系映射标签,支持对象关系组建维护 4.提供xml标签,支持编写动态sql。 until public