博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?
阅读量:5999 次
发布时间:2019-06-20

本文共 5342 字,大约阅读时间需要 17 分钟。

这里是修真院后端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析后端知识/技能,本篇分享的是:

【什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?

1 背景介绍】

大家好,我是IT修真院深圳分院第十三期学员,一枚正直纯洁善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任务二里面的知识点:

什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?
1 背景介绍
在任务三设计数据库的时候,需要理清表与表数据之间的关系,这时候就需要知道什么是实体表和关系表。然后根据他们之间的关系设计表

2.知识剖析

2.1什么是实体表
实体表就是对应实际的对象的表,比如:学生表,老师表
2.2什么是一对一、一对多和多对多?
1.一对一、一对多和多对多都是指数据表与表中的数据关系,不是表与表之间的关系

2.一对一:一个班主任只属于一个班级,一个班级也只能有一个班主任

3.一对多:一个顾客对应多个订单,而一个订单只能对应一个客户

4.多对多:一个学生有多个老师,一个老师有多个学生

2.3什么是关系表

关系表是表示表与表之间的数据关系,我的理解是:关系表设计一般只存在多对多。

3.常见问题

1)什么是实体表?

2)什么是关系表?

3)怎么设计表,多对多怎么在实际代码中表示?

4.解决方案:

设计表:一对一和一对多在表中多加一个关联字段,多对多多设计一个关联表
代码中实体类的编写:一对一在实体类中多加一个属性,一对多在实体类中多加一个集合属性,多对多就是在两个实体类中各加一个集合属性

5.编码实战

学生表

clipboard.png

老师表

clipboard.png

关系表

clipboard.png

学生实体类

package mybatisTest.pojo; import java.util.List; public class Student {    private Integer stuId;    private String stuName;    private Integer age;    private List
 teachers;     public Integer getStuId() {        return stuId;    }     public void setStuId(Integer stuId) {        this.stuId = stuId;    }     public String getStuName() {        return stuName;    }     public void setStuName(String stuName) {        this.stuName = stuName;    }     public Integer getAge() {        return age;    }     public void setAge(Integer age) {        this.age = age;    }     public List
 getTeachers() {        return teachers;    }     public void setTeachers(List
 teachers) {        this.teachers = teachers;    }     @Override    public String toString() {        return "Student{" +                "stuId=" + stuId +                ", stuName='" + stuName + '\'' +                ", age=" + age +                ", teachers=" + teachers +                '}';    }}

老师实体类

package mybatisTest.pojo;import java.util.List;public class Teacher {private Integer teaId;private String teaName;private String gender;private List students;public Integer getTeaId() {    return teaId;} public void setTeaId(Integer teaId) {    this.teaId = teaId;} public String getTeaName() {    return teaName;} public void setTeaName(String teaName) {    this.teaName = teaName;} public String getGender() {    return gender;} public void setGender(String gender) {    this.gender = gender;} public List
 getStudents() {    return students;} public void setStudents(List
 students) {    this.students = students;} @Overridepublic String toString() {    return "Teacher{" +            "teaId=" + teaId +            ", teaName='" + teaName + '\'' +            ", gender='" + gender + '\'' +            ", students=" + students +            '}';}}

dao层接口

package mybatisTest.dao; import mybatisTest.pojo.Student;  import java.util.List; public interface StuDao {    List
 queryStu();}package mybatisTest.dao;。import mybatisTest.pojo.Teacher;import java.util.List; public interface TeaDao {    List
 queryTea();}

xml文件

    
        
        
        
        
            
            
            
                
        select s.*,t.*        from student s,teacher t,stu_tea st        where s.stu_id=st.stu_id and t.tea_id=st.tea_id     

<--------------------------------------------------------------------------->

  
        
        
            
            
            
            
                
                
                
                            
            SELECT t.*,s.*            from teacher t,student s,stu_tea st            WHERE st.tea_id=t.tea_id            and s.stu_id=st.stu_id                ```测试

Student{stuId=1, stuName='张三', age=15, teachers=[Teacher{teaId=1, teaName='赵六老师', gender='男', students=null}, Teacher{teaId=2, teaName='钱七老师', gender='男', students=null}, Teacher{teaId=3, teaName='二三老师', gender='女', students=null}]}

Student{stuId=2, stuName='李四', age=16, teachers=[Teacher{teaId=2, teaName='钱七老师', gender='男', students=null}, Teacher{teaId=3, teaName='二三老师', gender='女', students=null}]}
Student{stuId=3, stuName='王武', age=17, teachers=[Teacher{teaId=1, teaName='赵六老师', gender='男', students=null}, Teacher{teaId=3, teaName='二三老师', gender='女', students=null}]}

<----------------------------------------------------------------------------------------->

Teacher{teaId=1, teaName='赵六老师', gender='男', students=[Student{stuId=1, stuName='张三', age=15, teachers=null}, Student{stuId=3, stuName='王武', age=17, teachers=null}]}

Teacher{teaId=2, teaName='钱七老师', gender='男', students=[Student{stuId=1, stuName='张三', age=15, teachers=null}, Student{stuId=2, stuName='李四', age=16, teachers=null}]}
Teacher{teaId=3, teaName='二三老师', gender='女', students=[Student{stuId=3, stuName='王武', age=17, teachers=null}, Student{stuId=2, stuName='李四', age=16, teachers=null}, Student{stuId=1, stuName='张三', age=15, teachers=null}]}

6.扩展思考:在多对多的设计中,关系表好像一般都没有实体类,但如果我要修改多对多之间的关系怎么修改?注:本人初学java者,如有不对敬请指出,谢谢!7.参考文献CSDN、百度百科8.更多讨论7.参考文献CSDN、百度百科8 更多讨论总结:1))什么是实体表?实体表就是对应实际的对象的表,比如:学生表,老师表2)什么是关系表?关系表是表示表与表之间的数据关系,我的理解是:关系表设计一般只存在多对多。3)怎么设计表,多对多怎么在实际代码中表示?设计表:一对一和一对多在表中多加一个关联字段,多对多多设计一个关联表代码中实体类的编写:一对一在实体类中多加一个属性,一对多在实体类中多加一个集合属性,多对多就是在两个实体类中各加一个集合属性温馨提示:本人初学java者,如有不对敬请指出,谢谢!PPT链接 视频链接

转载地址:http://rmzmx.baihongyu.com/

你可能感兴趣的文章
ASP.NET MVC Module
查看>>
JSP动作--JSP有三种凝视方式
查看>>
算法的时间复杂度示例
查看>>
[转]C#综合揭秘——细说多线程(下)
查看>>
[转]C#综合揭秘——细说多线程(上)
查看>>
DownloadProvider源码解析——与Volley对比
查看>>
Latest SQLite binary for January 2015
查看>>
JSON学习
查看>>
Codeforces Round #258 (Div. 2) 小结
查看>>
基于jquery下拉列表树插件代码
查看>>
探索WebKit内核(一)------ 菜鸟起步
查看>>
mysql 加入柱更改列删除列
查看>>
Oracle 工艺结构
查看>>
用mongoose实现mongodb增删改查
查看>>
动态类型
查看>>
ImportError: No module named argparse
查看>>
unity, animator stateMachine立即触发状态转换
查看>>
WebService它CXF这三个音符(Service接口实现类)
查看>>
.NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB
查看>>
从setTimeout谈JavaScript运行机制
查看>>