概念模型
来源:互联网 发布:数据连接已断开连接 编辑:程序博客网 时间:2024/06/05 17:17
1、概念模型
当我们要完成一个软件系统时,需要把系统中的实体抽取出来,形成概念模型。概念模型在Java中称为实体类,实体类--是与数据库中的表对应的,一种orm(对象与关系的映射);实体类在Java中的体现形式就是javaBean(所以说javabean是实体类的一种)。
类使用成员变量来完成关系,一般都是双向关联!例如部门、员工都是系统中的实体。概念模型中的实体最终会成为Java中的类、数据库中表。实体之间也存在着关系,关系有三种:一对多、多对多和一对一。
2、Java中的概念模型
● 一对多:
例如每个员工都从属一个部门,而一个部门可以有多个员工,其中员工是多方,而部门是一方,如下:
class Employee {//多方关联一方 ... private Department department; } class Department {//一方关联多方 ... private List<Employee> employees; }
● 一对一:
例如丈夫和妻子就是一对一的关系,一个丈夫只能有一个妻子,而一个妻子只能有一个丈夫,如下:
class Husband { ... private Wife wife; } class Wife { ... private Husband; }
● 多对多:
老师与学生的关系就是多对多,一个老师可以有多个学生,一个学生可以有多个老师。
class Student { ... private List<Teacher> teachers } class Teacher { ... private List<Student> students; }
2、数据库中的概念模型
数据库中的概念模型称为表,表之间的关系:
● 一对多:
最为常见的就是一对多!一对多和多对一,这是从哪个角度去看得出来的。emp和dept的关系,从dept来看就是一对多,而从emp的角度来看就是多对一!这种情况都是在多方创建外键:
/*部门表*/ create table dept ( deptno int primary key,/*部门编号*/ ... ); /*员工表*/ create talbe emp ( empno int primary key, ... deptno int, CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES emp(empno) );
● 一对一:
丈夫和妻子是一对一的关系,在表中建立一对一关系比较特殊,需要让其中一张表的主键,即是主键又是外键。如下:
create table husband( hid int PRIMARY KEY, ... ); create table wife( wid int PRIMARY KEY, ... ADD CONSTRAINT fk_wife_wid FOREIGN KEY(wid) REFERENCES husband(hid) );
其中wife表的wid即是主键,又是相对husband表的外键!husband.hid是主键,不能重复,wife.wid是主键,不能重复,又是外键,必须来自husband.hid。所以如果在wife表中有一条记录的wid为1,那么wife表中的其他记录的wid就不能再是1了,因为它是主键。同时在husband.hid中必须存在1这个值,因为wid是外键。这就完成了一对一关系。
● 多对多:
例如t_stu和t_teacher表,即一个学生可以有多个老师,而一个老师也可以有多个学生。这种情况通常需要创建中间表来处理多对多关系,即需要三张表,在中间表中使用两个外键,分别引用其他两个表的主键:
create table student( sid int PRIMARY KEY, ... ); create table teacher( tid int PRIMARY KEY, ... ); create table stu_tea( sid int, tid int, ADD CONSTRAINT fk_stu_tea_sid FOREIGN KEY(sid) REFERENCES student(sid), ADD CONSTRAINT fk_stu_tea_tid FOREIGN KEY(tid) REFERENCES teacher(tid) );
这时在stu_tea这个中间表中的每条记录都是来说明student和teacher表的关系,而两个外键都是可以重复的,这样就完成了多对多:
sid tid 101 201 /*编号为101的学生有一个编号为201的老师*/ 101 202 /*编号为101的学生有一个编号为202的老师*/ 102 201 /*编号为102的学生有一个编号为201的老师*/
小结:概念模型是对真实世界中问题域内的事物的描述,可以发现表描述概念模型是没有javabean描述的清晰的,尤其是在多对多的描述上。
- 概念模型
- 模型概念
- 概念模型
- 概念模型
- 概念模型
- 概念模型,逻辑模型,物理模型 概念
- 概念模型和关系模型
- 概念模型,逻辑模型,物理模型
- 概念模型、逻辑模型和物理模型
- UML概念模型图
- E-R概念模型
- E-R概念模型
- 关系模型--码概念
- C++的概念模型
- 领域模型的概念
- UML的概念模型
- UML的概念模型
- UML的概念模型
- Maven-clover2-plugin
- 优雅(简单粗暴)的使用AndroidStudio
- python图片旋转
- Ruby学习之概述
- 如何创建iOS环境下的cordova插件,让其运用到iOS项目中
- 概念模型
- [数据挖掘]数学基础---距离度量方式(马氏距离,欧式距离,曼哈顿距离)
- SQL Server数据库中bit字段类型使用时的注意事项
- Sicily 1190. Reduced ID Numbers 简单哈希
- 正则表达式-2(匹配)
- 欢迎使用CSDN-markdown编辑器
- ubuntu上构建简单的基于http的文件共享服务
- 欢迎使用CSDN-markdown编辑器
- Windows窗口风格