那么我们要做到什么程度才是对的呢?下面就说说数据库设计的原则:
1、数据库设计最起码要占用整个项目开发的40%以上的时间
数据库是需求的直观反应和表现,因此设计时必须要切实符合用户的需求,要多次与用户沟通交流来细化需求,将需求中的要求和每一次的变化都要一一体现在数据库的设计当中。如果需求不明确,就要分析不确定的因素,设计表时就要事先预留出可变通的字段,正所谓“有备无患”。
2、数据库设计不仅仅停留于页面demo的表面
页面内容所需要的字段,在数据库设计中只是一部分,还有系统运转、模块交互、中转数据、表之间的联系等等所需要的字段,因此数据库设计绝对不是简单的基本数据存储,还有逻辑数据存储。
3、数据库设计完成后,项目80%的设计开发在你脑海中就已经完成了
每个字段的设计都是有他必要的意义的,你在设计每一个字段的同时,就应该已经想清楚程序中如何去运用这些字段,多张表的联系在程序中是如何体现的。换句话说,你完成数据库设计后,程序中所有的实现思路和实现方式在你的脑海中就已经考虑过了。如果达不到这种程度,那当进入编码阶段后,才发现要运用的技术或实现的方式数据库无法支持,这时再改动数据库就会很麻烦,会造成一系列不可预测的问题。
4、数据库设计时就要考虑到效率和优化问题
一开始就要分析哪些表会存储较多的数据量,对于数据量较大的表的设计往往是粗粒度的,也会冗余一些必要的字段,已达到尽量用最少的表、最弱的表关系去存储海量的数据。并且在设计表时,一般都会对主键建立聚集索引,含有大数据量的表更是要建立索引以提供查询性能。对于含有计算、数据交互、统计这类需求时,还要考虑是否有必要采用存储过程。
5、添加必要的(冗余)字段
像“创建时间”、“修改时间”、“备注”、“ *** 作用户IP”和一些用于其他需求(如统计)的字段等,在每张表中必须都要有,不是说只有系统中用到的数据才会存到数据库中,一些冗余字段是为了便于日后维护、分析、拓展而添加的,这点是非常重要的,比如黑客攻击,篡改了数据,我们便就可以根据修改时间和 *** 作用户IP来查找定位。
6、设计合理的表关联
若多张表之间的关系复杂,建议采用第三张映射表来关联维护两张表之间的关系,以降低表之间的直接耦合度。若多张表涉及到大数据量的问题,表结构尽量简单,关联也要尽可能避免。
7、设计表时不加主外键等约束性关联,系统编码阶段完成后再添加约束性关联
这样做的目的是有利于团队并行开发,减少编码时所遇到的问题,表之间的关系靠程序来控制。编码完成后再加关联并进行测试。不过也有一些公司的做法是干脆就不加表关联。
8、选择合适的主键生成策略
DEMO是demonstration的缩写。DEMO的中文含意为“示范”、“展示”、“样片”、“样稿”,常被用来称呼具有示范或展示功能及意味的事物。数据库demo简单来说就是一个数据库参考例子。此处用的是一个java web系统的一个staff表 *** 作的模块,核心部分包括表的设计、数据库连接、数据封装类(VO)的创建、封装业务的JavaBean(DAO)、servlet和jsp结合对数据库进行 *** 作和显示。其他业务的 *** 作大同小异。涉及到的类、jsp和servlet
ConnectionManager.java
Staff.java
Staff_Interface.java
OperateStaff.java
servlet如下:
GetStaff.java
doAddStaff.java
doEditStaff.java
doDeleteStaff.java
配置文件:web.xml
jsp如下:
AddStaff.jsp
EditStaff.jsp
ShowStaff.jsp
error.jsp
使用sql server 数据库,staff表如下:
在这里插入图片描述
此数据表不是本人设计,在字段设置上有缺陷,还有数据库的编码也存在问题,此处只展示表的大体结构,大家在数据库设计上一定要力求完整!
接下来分析每个类的作用,以便理解DAO,VO,下篇再分析servlet。
ConnectionManager.java
此类是数据库管理类,注册数据库驱动和获取数据库连接,以及关闭数据库连接,其中,getConnection()方法用于返回连接对象dbconnection(后面用得到),另外还含有Connection、ResultSet、Statement对象的关闭方法,如void getConnection(Connection con){省略}
Staff.java
是一个封装数据的JavaBean(类),也是一个VO(VO就是一个简单的JavaBean),JavaBean 中定义了成员变量和相应的set和get方法。
Staff_Interface.java
Staff表的 *** 作接口类,在接口类中定义类的方法原型,在具体类OperateStaff.java(DAO)中实现接口。设置接口的作用主要是便于对程序扩充。
OperateStaff.java
为一个DAO,封装了数据库的 *** 作,如增加、删除、修改、查找,在此DAO中,会把从数据库查询到的信息实例化为VO(用查询到的信息来实例化VO(如此处的staff.java类)),再将实例化的VO放入ArrayList数组中(或其他存储对象中,如HashMap对象)。
DAO中一般含有如下结构:
ArrayList stlist=new ArrayList()
文章知识点与官方知识档案匹配
Java技能树首页概览
89145 人正在系统学习中
打开CSDN,阅读体验更佳
Dao层,Service层,Servlet层运用的自我理解_Young9518的博客
Dao层,Service层,Servlet层运用的自我理解 Dao层 先声明一个接口类,类里声明一些将会用的方法, 同一层内写一个实现这个接口类的类,重写接口类里的方法 方法主要是处理数据的方法, publicinterfaceIStuClassDao {publicListfindAllStuClass...
继续访问
什么是Dao层、Entity层、Service层、Servlet层、Utils层?
Servlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。 Servlet实现过程: (1)客户端发送请求至服务器端...
继续访问
dao+service+servlet+jsp实现留言板(添加、查看)
运用MVC模式以及servlet、jsp技术实现留言板添加、查看
使用JavaBean(DAO和VO)开发购物车
使用JavaBean(DAO和VO)开发购物车 一,实现要求 1.编写一个JavaBean类Book,包含isbn,bookName,auther,publisher,price,amount 属性。用作VO(ValueObject)。 2.编写一个类BookDAO,该类中包含一个方法: publicArrayListgetAllBook() 该方法访问数据库,查询数据库表book_info,将所有图书以一个数组列表对象的形式返回。 3.改写作业7中的SelectBook.JSP页面,使用BookDAO获得
继续访问
Servlet基本功能实现_smallkneif的博客
1、Servlet 1.1、快速入门 创建项目,创建一个类实现Servlet接口,共有五个方法,可以在service方法中打印文字 配置Servlet 执行原理: 服务器受到浏览器请求之后,解析url路径,获得Servlet资源路径
继续访问
Servlet及JDBC、dao简单运用_summerwangnan的博客_jdbc和dao...
1.首先建一个dao包 ,然后创建一个类--BaseDao.java (里面放入与数据库相连接的代码等) package second.daoimport java.sql.Connectionimport java.sql.DriverManagerimport java.sql.PreparedStatement...
继续访问
JSP+Servlet+JavaBean+DAO模式+JDBC+Bootstrap+ajax+自定义标签完成用户登录验证
文章目录一.案例要求二.使用工具工具相关文件的导入三.案例导图四.案例实现1.数据库建立1.1 新建数据库1.2 建表1.3 添加记录2.登录页面实现Bootstrap部署login.jsp实现效果3.JDBC的DAO模式实现3.1 数据库连接类3.2 User实体类-JavaBeanUser特征User代码3.3 UserDAO接口类3.4 UserDAOImpl实现类3.5 UserDAOPr...
继续访问
博客系统(dao+servlet+service+vo+mysql)
基于的web的博客系统,数据库是mysql,里面有mysql数据库建表的sql语句,直接导入,部署好程序就可以运行了,保证可以运行
JSP中JavaBean和EL的介绍及使用
JavaBean在JSP中的应用 JavaBean使用时的注意事项;EL表达式的简单介绍和使用; 文件中解压可以直接导入运行的,运行环境MyEclipse2017 ,其它版本请注意添加jar文件!
带你了解:基于servlet层+service层+dao层实现前端对数据库的增删查改
前记:最近因为疫情原因上网课导致之前的几节课都没有好好听,所以当老师让我完成这个作业时我还是着急了一下。经过两天的了解学习,一天多完成了一个简单的从前斜体样式端 *** 作数据库demo.实现效果图如下: 在这里图就不多放了,如果你觉得实现以上的功能是你所想学习的,那么请继续往下看,否则也不用继续往下为此花费更多时间了。 一.实现原理 在实现前端 *** 作数据库之前,我们表面所认为的是:前端—>数据库 ...
继续访问
java web中的service,servlet和Dao有什么区别
servlet一般用于生成网页;service在后端中,web,service,Dao三层中,用于service调用Dao层。 Servlet返回的数据比较简单; Web Service返回的可以是复杂对象,甚至使用附件或者mutidata的二进制文件。 Servlet依赖于Java平台;Web Service是跨平台的,无论什么在什么平台使用什么语言开发的Web Service,其他平台上的任何语言都能调用。 Servlet定义的是一套服务于Java Web开发接口,目的是实现Java Web的动态访问。
继续访问
bean、dao、service、servlet的简单说明
bean:存放数据1、存放来自于数据库的数据。2、存放来自客户端的数据(表单提交),存数据的中介作用 dao:data access object:数据访问对象,主要做的事情就是对数据库单表进行增删改 *** 作,查的有可能是多表管理查询 service:对应界面上的 *** 作,增删改查,至于这个业务涉及到几个dao,就调用几个dao servlet:1、接受用户请求,进行处理(doget/dopost...
继续访问
JSP&Servlet --- JSP DAO模式
这几天开始和社会董还有小孟愿开始写小组的图书管理系统,将在此期间遇到的一些问题和学到的一些知识总结在博客里。 这篇博客要总结的就是在WEB项目中用到的很重要的一种数据库设计模式DAO。DAO是什么DAO是WEB项目里面的数据层,主要负责为其他各层(MVC(Model View Controller))提供数据。DAO层里封装了对数据库 *** 作的各种 *** 作的JDBC代码。为什么要使用DAO我们在写WEB项
继续访问
Java Web中访问数据库需要的DAO和VO
VO就是一个普通的JavaBean DAO叫做Data Access Object类,专门负责对数据库的访问 然后将数据库的 *** 作都封装在DAO内,把从数据库查询到的信息实例化为VO,放到ArrayList数组里返回,DAO类的代码如下
继续访问
book的Javabean类的实现
实现Java类的创建,基于book的类,包括许多的信息 name id book_type author
最新发布 JavaWeb连接数据库(Dao模式),实现添加book并按日期范围查找相应book信息
JDBC技术,通过简单的Dao模式封装,连接数据库,实现向数据库中添加book信息,并可以实现按照时间范围来查找book信息。
使用jsp+servlet+javabean+dao实现学生体质信息管理系统
大体样式如下,我已经将该项目部署到服务器上,网址是http://156.223.25.190:8080/ch_05/index.jsp 在服务器上数据库出了些问题还没解决,只有界面,但是在我电脑上数据库是没有问题的。 此项目连接数据库用的是DButils+cp03的方法。 一、建立jsp页面 几乎每个界面的css是一样的,在此不做重复的代码 index.jsp <%@ page conte...
继续访问
【Java Web开发】DAO和VO
1.pom.xml文件的<dependencies>标签下添加以下代码。 <dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>7.2....
继续访问
JavaWeb搭建超市管理系统
文章目录SMBMS准备工作登录功能实现登录功能优化密码修改密码验证Ajax用户管理实现用户数量用户列表角色列表 SMBMS 准备工作 搭建一个Maven项目、 配置Tomcat 测试项目能否跑起来 导入项目所需的jar包(servlet,jsp,mysql,jstl,standard…) 创建项目包结构 编写实体类(ORM映射:表—类映射) 编写基础公共类(数据库配置文件) driver=com.mysql.jdbc.driver url=jdbc:mysql://localho
继续访问
用JSP完成简单的图书信息查询系统
目录图书信息查询系统分层结构util包DButil代码bean包Book.java代码action包BookSearchServlet.java代码web.xml配置test包BookTest.java代码WebRoot下jsp页面search.jsp页面bookInfo.jsp页面book表数据浏览器效果search.jsp页面 图书信息查询系统 分层结构 util包 DButil代码 package top.xinsir.utilimport java.sql.Connectionimpor
继续访问
DAO模式实现MySQL数据库对数据的查询
1. 前言 在本人开发的一个系统中需要提供注册和登陆系统,自然需要有用户管理,对用户需要进行基础的增删改查,DAO是常用的设计模式之一,对数据访问进行抽象,可以大大减低不同的数据库之间移植的工作量,本文主要根据本人实现自己DAO模型的过程,讲述DAO设计模式以及本人是如何使用DAO实现对数据的访问的。 2. DAO设计模式 DAO全程是Data Access Object,是
继续访问
java servlet dao_Java Web:JSP+ Servlet+JavaBean+DAO
实例:页面登录1、登录页面的制做做用:实现数据的提交用户:密码:解释:action=“要提交给服务器端在web.xml注册过的servelt的名字”method=“提交给服务器的方法有get、post,这里选择post”user、password:咱们要提交的数据名java2、Sertvlet控制器的实现做用:处理来自客服端的请求,接收登录页面提交的数据并调用JavaBean实例化,接着调用DAO...
继续访问
Servlet、Biz、Dao和Vo关系描述
ServletDome中Servlet、Biz、Dao和Vo关系的简单描述之补充
继续访问
java调用dao_Servlet里面一调用Dao里的某个方法
背景:这几天,由于项目集成的需要,我要在doFilter里调用dao层里的某些方法,可是总之报空指针,只要调用那个dao方法,就报错误。很是纳闷,网上查找了各种原因,终于让我给突破了,看来还是Java基础掌握的不够呀!代码:在servlet中加入私有变量UserDao,然后在servlet的init()方法中初始化一下即可用。private UserDao userDaopublic void ...
继续访问
介绍dao和servlet实现基本功能
java
mysql
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)