对于开发者来说 由于数据结构的变化导致程序的修改无疑是让人头疼的 。尤其是那些频繁的修改 今天加一个字段 明天又加一个字段, 大量的时间都浪费在修改这些无关紧要的工作上了。
好了,言归正传 先看下面一个小例子
//商品类
public class Product{
private long productId;
private String category;
private String productCode;
private String productName;
}
//推荐商品类 ,如推荐到首页
public class RecommendProduct{
private String recommend_username;
private String recommend_date;
private Product product;
}
一般我们的设计就是这样
通过查询返回一个List<RecommendProduct>到首页, 操作完成
如果想下面这样设计就不太合理,而且也打破了类设计的原则----功能单一性
//商品类
public class Product{
private long productId;
private String category;
private String productCode;
private String productName;
//新添加字段
private String recommend_flag;//是否被推荐
private String recommend_username;
private String recommend_date;
}
好了 现在把这个设计照搬到数据的设计上
如果将product和recommendProduct设计在一张表中如下
Product表
product_id number(12)
category varchar2(16)
productCode varchar2(16)
productName varchar2(32)
recommend_flag char(1) //推荐标志位
一开始可能是这样
如果我要推荐到10个二级域名的首页怎么办?要加10个标志字段吗?显然这样做不行
采用面向对象的思想设计如下
Product表(只包含产品相关信息的字段)
product_id number(12)
category varchar2(16)
productCode varchar2(16)
productName varchar2(32)
RecommendProduct表(作为单独表 而不是一个标志为)
recommend_id (PK)
product_id (Fk)
recommend_username
recommend_date
这样做的另外一个好处是:两个表的变化是独立的 可以在RecommendProduct表中添加字段而不会影响到product表 如果设计在一起的话就会出现开头说的问题 今天加一个字段明天加一个字段情况
借鉴了一些面向对象设计的开闭原则
分享到:
相关推荐
本书以面向对象的软件工程思想为主线,细致深入地讲解了C#语言面向对象程序设计的方法和技巧,内容涵盖面向对象的基本概念、基于接口的设计、泛型程序设计方法、Windows和Web应用开发,以及数据库访问技术。...
内容面向对象的数据库设计对象关系模型实体对象关系模型应用总结下载参考资料简介: 面向对象(OO)和三范式(3NF)都是成熟的设计方法,本文基于面向对象设计思想和三范式数据库设计方法,提出一种实体对象分层...
面向对象程序设计 在vb中综合练习数据库处理,控件处理
用DB4O面向对象数据库开发的小系统,开发工具为myeclipse,模块清晰,mvc层次简单。绝对值得下载学习。
本书以面向对象的软件工程思想为主线,细致深入地讲解了C#语言面向对象程序设计的方法和技巧,内容涵盖面向对象的基本概念、基于接口的设计、泛型程序设计方法、Windows和WPF窗体界面、文件和数据库访问,以及ASP...
本文档包含内容:课程设计完整工程代码+数据库备份(.mdf格式),不含课程设计说明文档,绝无二次收费,看好了,绝无二次收费。
对象大体上对应于E-R模型中的实体. 面向对象是基于将与一对象有关的代码与数据封装成一个单位的思想. 面向对象数据模型是一个逻辑数据模型 (类似E-R模型...使面向对象程序设计风格(e.g., Smalltalk, C++)适应数据库系统
三、课程目标 总体目标: 通过学习Java语言 的面向对象程序设计思想和实际应用技术,使学生养成良好的编程习惯,理解Java技术的编程理念,掌握使用Java语言的编程方法,具备 Java 技术再学习能力;能够具有分析用户...
Java程序设计中的面向对象的编程思想和swing以及数据库的应用
该系统将采用C++语言编写,使用面向对象编程的思想进行设计。在实现过程中,将使用Qt框架和MySQL数据库。以下是系统的主要功能: 1. **用户管理**:管理人员可以添加、删除和修改职工的信息。职工可以通过登录系统...
JAVASE做的ATM提款机项目 使用面向对象 分层等思想开发 使用了JDOM解析XML模仿Spring,其中的xml文件用来模仿数据源
面向对象的程序设计思想:以对象作为基本单位,以消息为驱动,事件模型为处理机制。 4:以后发展:基于组件(构件模型)、以中间件作为程序的构加基础等等,实现软件标准化 5:面向对象语言:C++、VB、Delphi及JAVA...
第三章Delphi面向对象编程思想 第九章对话框 第二章Delphi语法基础 第五章VCL组件应用 第八章VCL组件应用续2 第六章VCL组件应用续1 第十一章文件操作和管理 第十三章数据库编程 第十二章图形图像和多媒体技术 第十章...
Delphi是面向对象领域的佼佼者,是一种能迅速开发优秀程序的I具,它已成为当前 窗口应用系统最具实力的软件集成开发平台。有一句话在程序员中广为流行——“聪明的 程序员学 Delphi”。纵观 Delphi的发展历程,可见其...
日期格式的检查:在相关的参考书上查阅到在Calendar类中有一个getInstance()方法可以实现日期格式的严格检查,而且调用起来相当简单,于是就用了Calendar类中的getInstance()方法来实现日期格式的检查功能。...
逻辑阶段可采用的有效方法 ODL(Object Definition Language)方法 面向对象的数据库设计方法 计算机辅助设计 ORACLE Designer 2000 SYBASE PowerDesigner 数据库设计培训全文共37页,当前为第6页。 数据库设计概述 ...
面向对象(Object Oriented,OO)是当前...面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
1、综合运用Java程序设计课程和其他相关课程的理论和知识,掌握面向对象程序设计的一般方法、常用技术及技巧,树立良好的软件设计思想,培养分析问题和解决实际问题的能力; 2、学会从程序设计的方法及要求出发,...
本系统采用C++语言进行开发,采用面向对象的编程思想,具有良好的可扩展性和可维护性。同时,本系统采用MySQL作为后台数据库,保证数据的安全性和稳定性。 ## 基于C++的宾馆客房管理系统是一款功能强大、易用性高...