在系统设计中,对数据库的设计应考虑哪些设计原则?

在系统设计中,对数据库的设计应考虑哪些设计原则?,第1张

数据库是整个软件应用的根基,是软件设计的起点,它起着决定性的质变作用,因此我们必须对数据库设计高度重视起来,培养设计良好数据库的习惯,是一个优秀的软件设计师所必须具备的基本素质条件!

那么我们要做到什么程度才是对的呢?下面就说说数据库设计的原则:

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6421981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存