数据库设计

Day5:数据库设计

烈酒焚心 提交于 2019-11-28 08:12:05
今日完成:和组员一起完成数据库设计,为明天用eolinker创建API做好准备,后天准备用springboot搭建服务器并开始编程。 . 明日计划:根据数据库已有的七张表单构建API,离开始编程更进一步。 今日感想:今天创建数据库的过程让我们对小程序的结构加深了了解。在网上学习了微博等软件的数据库之后开始构建自己的数据库结构,这个过程也是对上学期数据库课程的回顾与应用。下午答辩的时候发现大家都非常厉害,很多组不但超前完成甚至已经开始编程了,这样字我们压力很大呀。 来源: https://www.cnblogs.com/Jane165/p/11401627.html

《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项

老子叫甜甜 提交于 2019-11-28 07:07:42
0.写在前面 MyBatis 是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。 MyBatis 提供了一级缓存、二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能。本文的目的则是向读者详细介绍 MyBatis 的一级缓存,深入源码,解析 MyBatis 一级缓存的实现原理,并且针对一级缓存的特点提出了在实际使用过程中应该注意的事项。 读完本文,你将会学到: 1、什么是一级缓存?为什么使用一级缓存? 2、MyBatis的一级缓存是怎样组织的?(即SqlSession对象中的缓存是怎样组织的?) 3、 一级缓存的生命周期有多长? 4、Cache接口的设计以及CacheKey的定义 5、一级缓存的性能分析以及应该注意的事项 1. 什么是一级缓存? 为什么使用一级缓存? 每当我们使用 MyBatis 开启一次和数据库的会话, MyBatis 会创建出 一个 SqlSession 对象表示一次数据库会话 。 在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句,如果不采取一些措施的话,每一次查询都会查询一次数据库,而我们在极短的时间内做了完全相同的查询,那么它们的结果极有可能完全相同,由于查询一次数据库的代价很大,这有可能造成很大的资源浪费。 为了解决这一问题,减少资源的浪费, MyBatis 会在表示会话的

XMind 在软件开发中的更多实践

人盡茶涼 提交于 2019-11-28 02:33:49
XMind 是一款头脑风暴软件,下图是程序界面 但是,最近,发现,原来它还可以拿来做需求分析、架构设计、数据库设计等工作。界面美观、描述丰富,非常不错。看看几个使用案例: eg. 数据库设计 示例; 数据库的设计不使用正向工程自动生成,而选择使用SQL语句创建。对于编程人员来说,需要知道数据库的关系结构、字段类型、物理名称。这个已经足够了! 转载于:https://www.cnblogs.com/AthsonWang/archive/2010/08/09/1795658.html 来源: https://blog.csdn.net/weixin_30653097/article/details/99925895

数据库设计三大范式

狂风中的少年 提交于 2019-11-27 21:22:42
什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些 规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。 什么是三大范式: 第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要 求,否则,将有很多基本操作在这样的关系模式中实现不了。 第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。 第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF. 注: 关系实质上是一张二维表,其中每一行是一个元组,每一列是一个属性 第一范式 1、每一列属性都是不可再分的属性值,确保每一列的原子性 2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。 如果需求知道那个省那个市并按其分类,那么显然第一个表格是不容易满足需求的,也不符合第一范式。 显然第一个表结构不但不能满足足够多物品的要求,还会在物品少时产生冗余。也是不符合第一范式的。 第二范式 每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复

Mybatis之分表设计与分表插入

﹥>﹥吖頭↗ 提交于 2019-11-27 21:12:13
现今数据量越来越大,表存储的数据越来越多,以至于查的时候非常慢,使工作效率明显的降低 所以对处理数据的保存就有比较常用的两个解决方案:分表,分区 在这里就说对分表和和通过mybatis对数据的增删改查 分表:是真正的分表,一张表分成很多表后,每一个小表都是完正的一张表 例如日志表:在数据库创建10张表XXXlog1,XXXlog2,XXXlog3,XXXlog4,XXXlog5........ 然后通过操作的用户的ID去取模 判断该用户的操作日志要插入哪个表 #${tb_sub}传入的参数值是取模后的数字:1,2,3..... 另外id属于自增不做插入 <insert id="insert" parameterType="Object" keyProperty="id"> insert into XXXlog${tb_sub}(user_id,status,send_userid,type,receive_yes,name,contents,create_time,addip,is_del) values ( #{userId},#{status},#{sendUserid},#{type},#{receiveYes},#{name},#{contents},now(),#{addip},#{isDel}) </insert> 同理改: <update id=

JPA使用Hibernate实现,使用UUID.主键的生成策略.

半城伤御伤魂 提交于 2019-11-27 17:30:33
警告信息如下: 3.1 WARN [org.hibernate.id.UUIDHexGenerator] (ServerService Thread Pool -- 48) HHH000409:Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values; consider using org.hibernate.id.UUIDGenerator instead 修改 @GenericGenerator(name = "system-uuid", strategy = "uuid") 为@GenericGenerator(name = "system-uuid", strategy = "uuid2") 下面是在CSDN上看到的一篇文章,保存在我的txt中,现在也贴出来. 介绍hibernate主键生成策略的文章网上比比皆是。但是如何选择一个适合于自己项目的主键生成策略缺没有什么好的指导性文章。在此希望与大家议论。 hibernate的主键生成策略主要包括了"uuid2","guid","uuid","uuid.hex","hilo","assigned","identity","select","sequence","seqhilo",

Hibernate映射的基本操作

假装没事ソ 提交于 2019-11-27 17:28:07
Hibernate映射主要是通过对象关系映射文件实现,对象关系映射文件把数据库中的实体(一般为二维表)映射到面向对象中的实体对象,把数据库中多个表之间的相互关系也反映到映射好的类中。以后,在Hibernate中对数据库的操作就直接转换为对这些实体对象的操作了。 1. 映射文件说明: 正确理解各个配置选项的含义是掌握映射文件的关键。映射文件可以对面向对象中的关联关系、继承关系和组合关系等各种关系进行配置。如: <!-- XML 文件的声明 --> <? xml version = "1.0" encoding = "utf-8" ?> <!-- hibernate DTD 文件的声明 --> <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <!-- 映射文件的根节点 --> < hibernate-mapping > <!-- 对象关系映射的开始: class 元素表示类和数据库中的表的映射关系。 name 属性指定持久化类(或者接口)的 Java 全限定名; table 属性指定要映射的对应的数据库表名 --> < class name =

Mybtis mybatis与hibernate的异同

混江龙づ霸主 提交于 2019-11-27 16:05:08
(1)Mybatis和hibernate不同,它不完全是一个ORM框架,因为 MyBatis 需要程序员自己编写Sql语句 。mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。 (2)Mybatis学习门槛低,简单易学,程序员直接编写原生态sql,可严格控制sql执行性能,灵活度高,非常适合对关系数据模型要求不高的软件开发,例如互联网软件、企业运营类软件等,因为这类软件需求变化频繁,一但需求变化要求成果输出迅速。但是灵活的前提是 mybatis无法做到数据库无关性 ,如果需要实现支持多种数据库的软件则需要自定义多套sql映射文件,工作量大。 (3)Hibernate对象/关系映射能力强, 数据库无关性好 ,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。 总之,按照用户的需求在有限的资源环境下只要能做出维护性、扩展性良好的软件架构都是好架构,所以框架只有适合才是最好。 来源: https://blog.csdn.net/guanmao4322

数据库设计

这一生的挚爱 提交于 2019-11-27 15:59:58
toB 应用设计系列 - 导航 适用范围 本文仅适用于 mysql 数据库 原则 数据库只做存储使用, 计算 / 业务逻辑放到应用层 尽量遵循三范式 高级功能 禁止使用触发器 / 存储过程 / 函数 / 视图 触发器非常影响插入 / 更新 / 删除 的效率, 触发器的功能可由应用层来实现 一旦放开存储过程/函数的限制, 不能保证人们会用存储过程/函数来做什么, 极有可能在存储过程/函数里进行大量的运算, 或者将业务逻辑写入; 另外, 大多数缓存在应用层实现, 存储过程/函数就无法复用缓存 触发器 / 存储过程 / 函数 / 视图 没有版本管理 字段 通用字段 主键id: 尽量使用单一逻辑主键, 实体使用单一逻辑主键, 关联关系可使用复合主键; 坚决不使用业务主键, 只使用逻辑主键 实体一般拥有业务唯一标识 no 创建时间 create_time 更新时间 update_time 数据类型 字符串类型 定长字符串: char(n) 不定长字符串: varchar(n) 长文本 text 整数类型 无符号 unsigned 类型 范围(有符号) 范围(无符号) tinyint (-128,127) (0,255) smallint (-32 768,32 767) (0,65 535) mediumint (-8 388 608,8 388 607) (0,16 777 215)

解决mybatis在mysql中查询字段为关键字的问题

偶尔善良 提交于 2019-11-27 08:30:30
解决mybatis在mysql中查询字段为关键字的问题 今天做项目的时候,调用mybatis进行数据查询,但是一直报错,查了半天,终于知道是在创建mysql数据库表时将function作为字段名,所以在查询的时候MySQL无法进行正常查询。 解决方法 在@TableField注解中加入反引号“ ` ” @TableField("`function`") private String function; 注意!!!以后进行数据库表设计的时候一定要注意不要把关键字设为字段名!!! 来源: https://blog.csdn.net/yq1220/article/details/99606067