本帖最后由 lucas.Yan 于 2024-5-23 18:07 编辑
数据库表和关联关系建立 初学者在刚使用模型建模的过程中往往会发现,对于从数据库中提取的许多表之间,应该建立什么样的关联关系,才能确保我们在仪表板设计的时候能正确筛选数据。如果关联关系设置不正确,会导致表模型之间不可达,或者无法进行正确的筛选,最终使得无法绑定或者数据不全。 首先我们要了解到表和表之间存在的这些关系,在关系型数据库中,基于三大范式设计表结构,使得不同的表之间产生不同的关系。不同的表之间有四种关系一对一、一对多、多对一、多对多。说是表关系其实指的是表中关键字段之间的关系。 下面我们举一个例子来帮助大家去理解。 一对一关系:表关系针对上面的表来说,每个人都只有一个唯一的身份证号码,一个身份证号码只能属于一个人,因此我们称Person表的p_id和IdCard表的c_id是一对一关系。 关联关系针对这种表关系:我们在模型设计的时候应该使用1对1关系来进行关联。在建立关联关系前,需要将关联的两个字段都设置为唯一。 一对多&多对一关系:表关系: 一对多和多对一关系是相对概念,例如上面的课程表和教师表。一个教师可以教授多种课程,一个课程只能被一个老师教授。从教师角度来看,是一对多关系,从课程角度来看是多对一关系。 在一对多和多对一关系中,一般把一的表叫做主表,多的表叫做从表。在数据库建立一对多关系的时候,通常使用外键约束,建立教师表t_id和课程表t_id的外键约束关系。 关联关系: 针对这种表关系,我们在建立关联关系的时候使用1对N 、N对1、0..1对N、N对0..1这四种。其中1对N、N对1对应着非空的外键约束关系,0..1对N、N对0..1对应着数据库中可空的外键约束关系。 多对多关系:表关系:多对多关系可以看做是两个多对一关系,例如下面课程与学生表 站在课程表的角度:一门课程可以被多个学生选择。站在学生表的角度:一个学生可以选择多门课程。 针对这样的情况,我们需要通过一张中间表来建立关联, 中间表的创建规则:1、表名由多对多关系的两个表名称组成。2、表中只有两个字段,分别建立外键关联到对应表的主键。3、两个字段都是主键,组成联合主键。 关联关系:通过创建中间表,然后各自针对中间表的字段,将其余两张表各自建立1:N关系。
|