• 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>


  • 相关阅读:
    BZOJ3669
    HDU3726
    BZOJ3282
    BZOJ2843
    Link/cut Tree
    Codeforces396A
    LOJ6277~6285 数列分块入门
    Codeforces446C
    Codeforces475D
    Codeforces103D
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4355639.html
Copyright © 2020-2023  润新知