什么是实体表,什么是关系表,一对多和多对多应该怎么设计表? 您所在的位置:网站首页 107041表与101012表什么关系 什么是实体表,什么是关系表,一对多和多对多应该怎么设计表?

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

2024-07-16 20:26| 来源: 网络整理| 查看: 265

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

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

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

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

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

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

3.常见问题

1)什么是实体表?

2)什么是关系表?

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

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

5.编码实战 学生表 在这里插入图片描述 老师表 在这里插入图片描述 关系表 在这里插入图片描述 学生实体类

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; } @Override public 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者,如有不对敬请指出,谢谢!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有