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

来源:互联网 发布:各种门事件网络盘点 编辑:程序博客网 时间:2024/05/16 17:19

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

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


表设计:




设计好后:

写实体类

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

概述

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-8private 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>


0 0
原创粉丝点击