ssh 实体关系分析确立(ER图-实体关系图)

比较简单的方式就是根据模仿同类产品,根据同类产品的进行模仿,表单就是一个起码要加的字段,然后根据项目需要额外增加字段。

注意:实体类之间的引用关系还需要考虑性能的影响。如:单向或是双向。

表设计:

设计好后:

写实体类

建立实体类到数据库的关联关系

概述

5.实体关系分析

1.类结构:带箭头是单线关联,不带箭头是双向关联

----------------------------------------

class User
(1)<------(*) class Survey  (1)-------(*)  class Page     (1)-------(*)    class Question

{ {                      {                      
{

Integer id ;
Integer id ;         Integer id ;        Integer id ;

... ...                ...                ...

User user ;                 Survey survey ;             Page page ;

Set<Page> pages ;    
   Set<Question> questions ;

} }                      }                      
}

2.表结构

------------------------------------------------------------------

[users]

+----------+-------------+------+-----+---------+----------------+

| Field    | Type        | Null | Key | Default | Extra          |

+----------+-------------+------+-----+---------+----------------+

| id       | int(11)     | NO   | PRI | NULL    | auto_increment |

| email    | varchar(50) | YES  |     | NULL    |                |

| password | varchar(50) | YES  |     | NULL    |                |

| nickname | varchar(50) | YES  |     | NULL    |                |

| regdate  | datetime    | YES  |     | NULL    |                |

+----------+-------------+------+-----+---------+----------------+

[surveys]

+---------------+--------------+------+-----+---------+----------------+

| Field         | Type         | Null | Key | Default | Extra          |

+---------------+--------------+------+-----+---------+----------------+

| id            | int(11)      | NO   | PRI | NULL    | auto_increment |

| title         | varchar(200) | YES  |     | NULL    |                |

| pretext       | varchar(50)  | YES  |     | NULL    |                |

| nexttext      | varchar(50)  | YES  |     | NULL    |                |

| exittext      | varchar(50)  | YES  |     | NULL    |                |

| donetext      | varchar(50)  | YES  |     | NULL    |                |

| createtime    | datetime     | YES  |     | NULL    |                |

| userid        | int(11)      | YES  | MUL | NULL    |                |

+---------------+--------------+------+-----+---------+----------------+

[pages]

+-------------+---------------+------+-----+---------+----------------+

| Field       | Type          | Null | Key | Default | Extra          |

+-------------+---------------+------+-----+---------+----------------+

| id          | int(11)       | NO   | PRI | NULL    | auto_increment |

| title       | varchar(200)  | YES  |     | NULL    |                |

| description | varchar(200)  | YES  |     | NULL    |                |

| surveyid    | int(11)       | YES  | MUL | NULL    |                |

+-------------+---------------+------+-----+---------+----------------+

[questions]

+---------------------+--------------+------+-----+---------+----------------+

| Field               | Type         | Null | Key | Default | Extra          |

+---------------------+--------------+------+-----+---------+----------------+

| id                  | int(11)      | NO   | PRI | NULL    | auto_increment |

| questiontype        | int(11)      | YES  |     | NULL    |                |

| title               | varchar(200) | YES  |     | NULL    |                |

| options             | varchar(200) | YES  |     | NULL    |                |

| other               | bit(1)       | YES  |     | NULL    |                |

| otherstyle          | int(11)      | YES  |     | NULL    |                |

| otherselectoptions  | varchar(200) | YES  |     | NULL    |                |

| matrixrowtitles     | varchar(200) | YES  |     | NULL    |                |

| matrixcoltitles     | varchar(200) | YES  |     | NULL    |                |

| matrixselectoptions | varchar(200) | YES  |     | NULL    |                |

| pageid              | int(11)      | YES  | MUL | NULL    |                |

+---------------------+--------------+------+-----+---------+----------------+

3.映射文件

------------------------------------------

[User.hbm.xml]

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

<class name="com.atguigu.surveypark.model.User" table="users">

<id name="id" column="id" type="integer">

<generator class="identity" />

</id>

<property name="email" column="email" type="string" length="50" />

<property name="password" column="password" type="string" length="50" />

<property name="nickName" column="nickname" type="string" length="50" />

<property name="regDate" column="regdate" type="timestamp"  update="false"/>

</class>

</hibernate-mapping>

[Survey.hbm.xml]

<hibernate-mapping package="com.atguigu.surveypark.model">

<class name="Survey" table="surveys">

<id name="id" column="id" type="integer">

<generator class="identity" />

</id>

<property name="title" column="title" type="string" length="200" />

<property name="preText" column="pretext" type="string" length="50" />

<property name="nextText" column="nexttext" type="string" length="50" />

<property name="doneText" column="donetext" type="string" length="50" />

<property name="exitText" column="exittext" type="string" length="50" />

<property name="createTime" column="createtime" type="string" length="200" />

<!-- 映射从Survey到User之间多对一关联关系 -->

<many-to-one name="user" class="User" column="userid" />

<!-- 映射从Survey到Page之间一对多关联关系 -->

<set name="pages" inverse="true">

<key column="surveyid" />

<one-to-many class="Page"/>

</set>

</class>

</hibernate-mapping>

[Page.hbm.xml]

<hibernate-mapping package="com.atguigu.surveypark.model">

<class name="Page" table="pages">

<id name="id" column="id" type="integer">

<generator class="identity" />

</id>

<property name="title" column="title" type="string" length="100" />

<property name="description" column="description" type="string" length="200" />

<!-- 映射从Page到Survey之间多对一关联关系 -->

<many-to-one name="survey" class="Survey" column="surveyid" />

<!-- 映射从Page到Question之间一对多关联关系 -->

<set name="questions" inverse="true">

<key column="pageid" />

<one-to-many class="Question"/>

</set>

</class>

</hibernate-mapping>

[Question.hbm.xml]

<hibernate-mapping package="com.atguigu.surveypark.model">

<class name="Question" table="questions">

<id name="id" column="id" type="integer">

<generator class="identity" />

</id>

<property name="questionType" column="questiontype" type="integer" />

<property name="title" column="title" type="string" length="100" />

<property name="options" column="options" type="string" length="200" />

<property name="other" column="other" type="boolean"/>

<property name="otherStyle" column="otherstyle" type="integer" />

<property name="otherSelectOptions" column="otherselectoptions" type="string" length="200" />

<property name="matrixRowTitles" column="maxtrixrowtitles" type="string" length="200" />

<property name="matrixColTitles" column="matrixcoltitles" type="string" length="200" />

<property name="matrixSelectOptions" column="matrixselectoptions" type="string" length="200" />

<!-- 映射从Question到Page之间多对一关联关系 -->

<many-to-one name="page" class="Page" column="pageid" />

</class>

</hibernate-mapping>

详细代码如下:

Page.java

package com.atguigu.surveypark.model;

import java.util.HashSet;
import java.util.Set;

/**
 * 页面类
 */
public class Page {
	private Integer id;
	private String title = "未命名";
	private String description;

	//简历从Page到Survey之间多对一关联关系
	private Survey survey;

	//简历从Page到Question之间一对多关联关系
	private Set<Question> questions = new HashSet<>();

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public Survey getSurvey() {
		return survey;
	}

	public void setSurvey(Survey survey) {
		this.survey = survey;
	}

	public Set<Question> getQuestions() {
		return questions;
	}

	public void setQuestions(Set<Question> questions) {
		this.questions = questions;
	}

}

Page.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.atguigu.surveypark.model">
	<class name="Page" table="pages">
		<id name="id" column="id" type="integer">
			<generator class="identity" />
		</id>
		<property name="title" column="title" type="string" length="100" />
		<property name="description" column="description" type="string" length="200" />

		<!-- 映射从Page到Survey之间多对一关联关系 -->
		<many-to-one name="survey" class="Survey" column="surveyid" />

		<!-- 映射从Page到Question之间一对多关联关系 -->
		<set name="questions" inverse="true">
			<key column="surveyid" />
			<one-to-many class="Question"/>
		</set>
	</class>
</hibernate-mapping>

Survey.java

package com.atguigu.surveypark.model;

import java.util.Date;

/**
 * 调查类
 */
public class Survey {
	private Integer id;
	private String title = "未命名";
	private String preText = "上一步";
	private String nextText = "下一步";
	private String exitText = "退出";
	private String doneText = "完成";
	private Date createTime = new Date();

	//建立从Survey到User之间多对一关联关系
	private User user ;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getPreText() {
		return preText;
	}

	public void setPreText(String preText) {
		this.preText = preText;
	}

	public String getNextText() {
		return nextText;
	}

	public void setNextText(String nextText) {
		this.nextText = nextText;
	}

	public String getExitText() {
		return exitText;
	}

	public void setExitText(String exitText) {
		this.exitText = exitText;
	}

	public String getDoneText() {
		return doneText;
	}

	public void setDoneText(String doneText) {
		this.doneText = doneText;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

}

Survey.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.atguigu.surveypark.model">
	<class name="Survey" table="surveys">
		<id name="id" column="id" type="integer">
			<generator class="identity" />
		</id>
		<property name="title" column="title" type="string" length="200" />
		<property name="preText" column="pretext" type="string" length="50" />
		<property name="nextText" column="nexttext" type="string" length="50" />
		<property name="doneText" column="donetext" type="string" length="50" />
		<property name="exitText" column="exittext" type="string" length="50" />
		<property name="createTime" column="createtime" type="string" length="200" />		

		<!-- 映射从Survey到User之间多对一关联关系 -->
		<many-to-one name="user" class="User" column="userid" />

		<!-- 映射从Survey到Page之间一对多关联关系 -->
		<set name="pages" inverse="true">
			<key column="surveyid" />
			<one-to-many class="Page"/>
		</set>
	</class>
</hibernate-mapping>

Question.java:

package com.atguigu.surveypark.model;

/**
 * 问题类
 */
public class Question {
	//
	private Integer id;
	// 题型0-8
	private int questionType;
	//
	private String title;
	// 选项
	private String options;

	// 其他项
	private boolean other;

	// 其他项样式:0-无 1-文本框 2-下拉列表
	private int otherStyle;

	// 其他项下拉选项
	private String otherSelectOptions;

	// 矩阵式行标题集
	private String matrixRowTitles;

	// 矩阵式列标题集
	private String matrixColTitles;
	// 矩阵是下拉选项集
	private String matrixSelectOptions;

	//建立从Question到Page之间多对一关联关系
	private Page page;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public int getQuestionType() {
		return questionType;
	}

	public void setQuestionType(int questionType) {
		this.questionType = questionType;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getOptions() {
		return options;
	}

	public void setOptions(String options) {
		this.options = options;
	}

	public boolean isOther() {
		return other;
	}

	public void setOther(boolean other) {
		this.other = other;
	}

	public int getOtherStyle() {
		return otherStyle;
	}

	public void setOtherStyle(int otherStyle) {
		this.otherStyle = otherStyle;
	}

	public String getOtherSelectOptions() {
		return otherSelectOptions;
	}

	public void setOtherSelectOptions(String otherSelectOptions) {
		this.otherSelectOptions = otherSelectOptions;
	}

	public String getMatrixRowTitles() {
		return matrixRowTitles;
	}

	public void setMatrixRowTitles(String matrixRowTitles) {
		this.matrixRowTitles = matrixRowTitles;
	}

	public String getMatrixColTitles() {
		return matrixColTitles;
	}

	public void setMatrixColTitles(String matrixColTitles) {
		this.matrixColTitles = matrixColTitles;
	}

	public String getMatrixSelectOptions() {
		return matrixSelectOptions;
	}

	public void setMatrixSelectOptions(String matrixSelectOptions) {
		this.matrixSelectOptions = matrixSelectOptions;
	}

	public Page getPage() {
		return page;
	}

	public void setPage(Page page) {
		this.page = page;
	}
}

Question.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.atguigu.surveypark.model">
	<class name="Question" table="questions">
		<id name="id" column="id" type="integer">
			<generator class="identity" />
		</id>
		<property name="questionType" column="questiontype" type="integer" />
		<property name="title" column="title" type="string" length="100" />
		<property name="options" column="options" type="string" length="200" />
		<property name="other" column="other" type="boolean"/>
		<property name="otherStyle" column="otherstyle" type="integer" />
		<property name="otherSelectOptions" column="otherselectoptions" type="string" length="200" />

		<property name="matrixRowTitles" column="maxtrixrowtitles" type="string" length="200" />
		<property name="matrixColTitles" column="matrixcoltitles" type="string" length="200" />
		<property name="matrixSelectOptions" column="matrixselectoptions" type="string" length="200" />

		<!-- 映射从Question到Page之间多对一关联关系 -->
		<many-to-one name="page" class="Page" column="pageid" />
	</class>
</hibernate-mapping>

User.java

package com.atguigu.surveypark.model;

import java.util.Date;

/**
 * 用户类
 */
public class User {
	private Integer id;
	private String email;
	private String name;
	private String password;
	private String nickName;
	//注册时间
	private Date regDate = new Date();

	public Integer getId() {
		return id;
	}

	public Date getRegDate() {
		return regDate;
	}

	public void setRegDate(Date regDate) {
		this.regDate = regDate;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getNickName() {
		return nickName;
	}

	public void setNickName(String nickName) {
		this.nickName = nickName;
	}

}

User.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.atguigu.surveypark.model.User" table="users">
		<id name="id" column="id" type="integer">
			<generator class="identity" />
		</id>
		<property name="email" column="email" type="string" length="50" />
		<property name="password" column="password" type="string" length="50" />
		<property name="nickName" column="nickname" type="string" length="50" />
		<property name="regDate" column="regdate" type="timestamp"  update="false"/>
	</class>
</hibernate-mapping>

ssh 实体关系分析确立(ER图-实体关系图)

时间: 2024-10-30 23:50:00

ssh 实体关系分析确立(ER图-实体关系图)的相关文章

数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型

Data base: 长期存储在计算机内,有组织的,可共享的大量数据集合.基本特征:永久存储,可共享,有一定的物理和逻辑结构. Data base manage system(DBMS):用户和os之间的一层数据管理软件. 1.提供数据操纵语言DML对数据库增删改查 2.数据库的建立和维护 3.提供数据控制功能:在数据库建立,运行和维护时,DBMS管理数据的安全性,完整性,并发控制和故障的系统恢复,(也就是数据库的事务管理和运行管理) 4.与其它软件系统通信 Data base system(D

【Java EE 学习第69天】【数据采集系统第一天】【实体类分析和Base类书写】

之前SSH框架已经搭建完毕,现在进行实体类的分析和Base类的书写.Base类是抽象类,专门用于继承. 一.实体类关系分析 既然是数据采集系统,首先调查实体(Survey)是一定要有的,一个调查有多个页面(Page),一个页面有多个问题(Question),所以还要有页面和问题实体.参与完成调查之后一定还会生成若干个答案,所以还有答案实体(Answer),当然还有参与的用户(User),管理员是特殊的User,只需要登陆的时候进行判断即可. 分析实体类型是比较简单的,最重要的是设计,怎样设计才能

E-R图向关系模式的转换

转自: http://hi.baidu.com/qicaiqinxian/blog/item/a8bb0bdf31ae081b63279887.html E-R图向关系模型转换时犯糊涂了,找到下面这篇文章, 话说的真别扭, 不过问题算是能解决了, E-R图向关系模式的转换要解决的问题是如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码. 关系模型的逻辑结构是一组关系模式的集合.E-R图则是由实体型.实体的属性和实体型之间的联系3个要素组成.所以将E-R图转换为关系模型实际上

E-R图转换为关系模型

E-R模型如何转换成关系模型,这里我们分成三种情况进行讲解,分别是一对一,一对多和多对多. 1.一对一的情况: 有两种方法解决这个问题.第一个方法:可以单独对应一个关系模式,由各实体的主码构成关系模式,而关系模式的主码可以是任一个实体集的主码.而实体中属性照常写就可以了.第二个方法:实体中的属性照常写,然后将一方实体集的主码加到另一方实体集对应的关系模式中.下面举个例子我们来看一下: 在这个例子中,利用方法一,先将两个实体正班长和班级的属性照着写下来,然后将关系模式“属于”的属性写出来——即两边

一步一步学EF系列【2、Fluent API的方式来处理实体与数据表之间的映射关系。】

EF里面的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面,还有一个就是Fluent API,通过新增相应的配置类来覆盖默认配置另外.我们主要学习Fluent API,Data Annotations可以自行去学习一下. 补充一下为什么要用Fluent API 使用DataAnnotation非常简单,但对于EntityFramework中的特性,就要在实体类中引入Ent

量价关系分析实战(图)

正常的“价涨量增,价跌量缩”同步的情况下,并无必要特别加以注意,应该引起重视的是在“量价背离”的情况下,买卖股票时要特别加以分析. 这里需要纠正一个量价分析中被忽略了的问题.价涨量增的真实原因除股价上涨后续资金及时跟得上外,大量获利盘的存在和涌出是另一个重要因素.如果没有获利盘涌出,成交量就不会放大. 在C段,价涨量不增的原因是没有获利盘存在.因此,在庄家和跟庄者绝对控股下也会出现价涨量不增的背离情况.  (一) 价格随成交量的递增而上涨 价格随成交量的递增而上涨是市场行情的正常特性,表示后市价

类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)

类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图.组件图和配置图等进一步描述系统其他方面的特性. 类图包括7个元素:类(Class).接口(Interface).协作(collaboration).依赖关系(Dependency).泛化关系(Generalization).关联关系(Association)以及实现关系(Realization).

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

(1)数据库设计的优劣: 糟糕的数据库设计: ①数据冗余冗余.存储空间浪费. ②数据更新和插入异常. ③程序性能差. 良好的数据库设计 ①节省数据的存储空间. ②能够保证数据的完整新. ③方便进行数据应用系统的开发. (2)软件项目开发周期中的数据库设计: 一个完整的项目 开发需要经过: 1.需求分析:分析客户的业务和数据处理需求. 2.概要设计:设计数据库的E-R模型图,确认需求信息的正确和完整. 详细设计:应用三大范式审核数据库结构,将E-R模型图转换为数据库模型图. 代码编写:物理实现数据

ER 和 数据库关系模式

http://lianghuanyue123.blog.163.com/blog/static/130423244201162011850600/ 我们眼下所接触的数据库基本上是关系数据库,关系数据库中的关系模式是型,而关系是值.关系模式是对关系的描写叙述. 什么是关系?关系实质上是一张二维表,当中每一行是一个元组,每一列是一个属性,每一个元组是该关系涉及到属性集合笛卡尔积的一个元素.(笛卡尔积是这种一个集合.集合中的元素是有序对,若A={0,1}B={a,b}则:A*B={<0,a>,<