数据库设计

数据库设计规范、E-R图、模型图

旧城冷巷雨未停 提交于 2019-12-03 23:19:44
(1)数据库设计的优劣: 糟糕的数据库设计: ①数据冗余冗余、存储空间浪费。 ②数据更新和插入异常。 ③程序性能差。 良好的数据库设计 ①节省数据的存储空间。 ②能够保证数据的完整新。 ③方便进行数据应用系统的开发。 (2)软件项目开发周期中的数据库设计: 一个完整的项目 开发需要经过: 1.需求分析:分析客户的业务和数据处理需求。 2.概要设计:设计数据库的E-R模型图,确认需求信息的正确和完整。 详细设计:应用三大范式审核数据库结构,将E-R模型图转换为数据库模型图。 代码编写:物理实现数据库,编码实现应用。 运行设计后打包发行。 数据库设计步骤: 收集信息 标识实体(Entity) 标识每个实体的属性(Attribute) 标识实体之间的关系(Relationship) (3)E-R图(Entity Relationship Diagram) E-R图:相当于数据库图纸,用于和项目其他成员和客户之间沟通,讨论数据库的设计是否能满足客户的需求。 概念: 除了这三个还有直线,表示联系集的映射基数: 酒店管理系统的数据库(E-R图): 实体-关系图包含:实体、属性、联系。 (4)数据库模型图 E-R图转换为关系模式的步骤: 1.把每个实体都转化为关系模式R(U)形式 2.建立实体间联系的转换(1-1,1-n,n-n) 酒店管理系统数据库的关系模式: 该系统中实体间联系是1-n

数据库设计中一对一、多对一、多对多关系依据外键的实现条件及方法

▼魔方 西西 提交于 2019-12-03 11:13:51
作者:二歪求知iSk2y 链接:https://www.jianshu.com/p/2b27c7ba0653 来源:简书 下面以departments和staff_info表为例(为staff_info添加指向departments的外键) 一个表的字段作为外键的条件: 列值必须非空且唯一测试例子如下: mysql> create table departments (dep_id int(4),dep_name varchar(11)); Query OK, 0 rows affected (0.02 sec) mysql> desc departments; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | dep_id | int(4) | YES | | NULL | | | dep_name | varchar(11) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ rows in set

数据库设计的过程中的设置外键的作用

浪子不回头ぞ 提交于 2019-12-03 11:13:46
转自“ https://zhidao.baidu.com/question/445274717.html ” 表A中有字段(如身份证号)做了主键,表B中也有这个字段(身份证号),这里的身份证号一定来自表A同样字段里的内容,那么表B的这个字段就叫表A字段的外键,也就是两个表以身份证号这个字段建立了联系。 表A中身份证号字段里面的身份证号一定是唯一的,不能有重复,而表B里面的同一个身份证号可以出现多次。这称为表A身份证号字段与表B身份证号字段建立了一对多的关系。 外键的作用就是可以让身份证号保证是来自表A中,也就是保证了数据的规范性;如果要删除A表中的某个身份证号,那么首先要删除B表中同样的身份证号,这保证了数据的完整性 来源: https://www.cnblogs.com/isme-zjh/p/11793063.html

mybatis与hibernate区别

假如想象 提交于 2019-12-03 08:16:38
以前没怎么用过mybatis,只知道与hibernate一样是个orm数据库框架。随着使用熟练度的增加,发现它与hibernate区别是非常大的,结合至今为止的经验,总结出以下几点: 1.hibernate是全自动,而mybatis是半自动。 hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。 2.hibernate数据库移植性远大于mybatis。 hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle、mysql等)的耦合性,而mybatis由于需要手写sql,因此与数据库的耦合性直接取决于程序员写sql的方法,如果sql不具通用性而用了很多某数据库特性的sql语句的话,移植性也会随之降低很多,成本很高。 3.hibernate拥有完整的日志系统,mybatis则欠缺一些。 hibernate日志系统非常健全,涉及广泛,包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告等;而mybatis则除了基本记录功能外,功能薄弱很多。 4.mybatis相比hibernate需要关心很多细节 hibernate配置要比mybatis复杂的多,学习成本也比mybatis高

java面试小结——框架(hibernate、MyBatis、spring、Spring MVC)

ε祈祈猫儿з 提交于 2019-12-03 08:16:06
Hibernate 什么是ORM 对象关系映射(Object-Relational Mapping,简称ORM)是一种为了解决程序的面向对象模型与数据库的关系模型互不匹配问题的技术;简单的说,ORM是通过使用描述对象和数据库之间映射的元数据(在Java中可以用XML或者是注解),将程序中的对象自动持久化到关系数据库中或者将关系数据库表中的行转换成Java对象,其本质上就是将数据从一种形式转换到另外一种形式。 持久层设计要考虑的问题有哪些?你用过的持久层框架有哪些? 所谓”持久”就是将数据保存到可掉电式存储设备中以便今后使用,简单的说,就是将内存中的数据保存到关系型数据库、文件系统、消息队列等提供持久化支持的设备中。持久层就是系统中专注于实现数据持久化的相对独立的层面。 持久层设计的目标包括: - 数据存储逻辑的分离,提供抽象化的数据访问接口。 - 数据访问底层实现的分离,可以在不修改代码的情况下切换底层实现。 - 资源管理和调度的分离,在数据访问层实现统一的资源调度(如缓存机制)。 - 数据抽象,提供更面向对象的数据操作。 持久层框架有: - Hibernate - MyBatis - TopLink - Guzz - jOOQ - Spring Data - ActiveJDBC Hibernate中SessionFactory是线程安全的吗?Session是线程安全的吗

Mybatis面试题一

半腔热情 提交于 2019-12-03 07:26:41
1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; (3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 (4

IBatis和Hibernate区别

荒凉一梦 提交于 2019-12-03 05:27:57
1. 简介 Hibernate是当前最流行的O/R mapping框架。它出身于sf.net,现在已经成为Jboss的一部分了。iBATIS是另外一种优秀的O/R mapping框架,现已改名叫myBATIS。目前属于apache的一个子项目了。相对Hibernate"O/R"而言,iBATIS 是一种"Sql Mapping"的ORM实现。 Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。程序员往往只需定义好了POJO到数据库表的映射关系,即可通过 Hibernate提供的方法完成持久层操作。 程序员甚至不需要对SQL的熟练掌握,Hibernate/OJB会根据制定的存储逻辑,自动生成对应的 SQL并调用JDBC接口加以执行。 而iBATIS的着力点,则在于POJO与SQL之间的映射关系。也就是说,iBATIS并不会为程序员在运行期自动生成SQL执行。 具体的SQL需要程 序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。 使用iBATIS提供的ORM机制,对业务逻辑实现人员而 言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL语句

灯塔——项目系统设计与数据库设计

我只是一个虾纸丫 提交于 2019-12-03 05:26:43
作业描述 项目 内容 这个作业属于哪个课程 2019秋福大软件工程实践Z班 (福州大学) 这个作业要求在哪里 团队作业第四次—项目系统设计与数据库设计 团队名称 灯塔 这个作业的目标 设计好系统和数据库、制定好计划和分工 作业正文 灯塔——项目系统设计与数据库设计 其他参考文献 《软件工程事务》《数据库设计说明书》(GB8657——88)《构建之法》《软件工程》 时间安排 日期 目标 11月1日 完成项目系统设计与数据库设计的验收 11月2日 各个组员配置好进行开发所需的环境,明确开发所需的框架 11月3日-11月8日 前端人员和后端人员同时开始工作,实现计划书中的功能 11月9日 进行单元测试 11月10日-11月11日 汇总成果,开始进行接口设计 11月12日-11月13日 进行功能测试,修复bug 11月14日 进行汇总工作,制作ppt和撰写博客 分工安排 组员 学号 分工 林德辉 031702142 组长,项目经理,Android后端开发 叶心言 031702108 Android前端、ui 彭文泽 031702140 Android后端开发 张成德 031702130 系统设计说明书 王茜葶 031702101 Android后端开发 余泓 031702409 Android前端、ui 何云鹏 031702327 网页前端、ui 李中瑾 031402112 数据库设计

MyBatis入门

半腔热情 提交于 2019-12-03 05:26:15
title: MyBatis入门 date: 2018-07-12 15:22:24 tags: [Java,MyBatis] categories: 框架 1. MyBatis 简介 MyBatis是一个优秀的 持久层框架 ,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。 Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回 2. MyBatis架构 MyBatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息、 mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载 SqlSessionFactory 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂 SqlSession

宠爱有家——系统设计与数据库设计

别说谁变了你拦得住时间么 提交于 2019-12-03 05:18:57
软件工程 https://edu.cnblogs.com/campus/fzu/2019FZUSEZ/ 作业要求 https://edu.cnblogs.com/campus/fzu/2019FZUSEZ/homework/9871 团队名称 十分宠爱 这个作业的目标 构建一个宠物交流呵护平台 作业正文 正文链接 其他参考文献 《实用软件工程》,清华大学出版社 1997.4 《数据库系统概论》,王珊,高等教育出版社 《软件工程》,机械工业出版社 《数据库设计说明书》国际规范文本 一.团队项目开发预期安排 日期 目标 11月1日 系统设计和数据库设计完成,博客撰写完成 11月2日 团队演讲PPT,课程结束后开会讨论问题,明确方向 11月3日——5日 UI设计出界面样本,明确具体功能实现,其他人进行自己模块的准备工作 11月6日——11日 前端后端进行对应的编程工作,同时对设计不足之处进行反馈和修改 11月12日 进行自己设计部分单元测试,找出bug并修改 11月13日 相互之间进行测试,防止固有思维产生的bug,并进行告知和修改 11月14日 前后端接口连接,同时进行测试,找出bug并修改 11月15日 进行答辩PPT准备 二.团队项目的预期开发计划分工安排 学号 姓名 预期分工安排 131700114 张辉 数据库设计 061700232 闫佳豪 UI界面设计 031702612