文章目录
如下内容讲的,主要是关系型数据库
1.基本概念
信息世界的一些基本的概念
- 实体:一个人,一个部门,一个学生,一门课,学生的一次选课。
- 属性:一个实体可以用若干属性来刻画。例如学生可以用学号、姓名。
- 实体型:例如:学生(学号,姓名,性别,出生年月,所在院系)
- 实体集:例如:全体学生就是一个实体集
实体内部的联系,通常指组成实体的各属性之间的联系
实体之间的联系,通常指实体集之间的联系
2.关系型数据库
关系型数据库系统,采用关系模型作为数据的组织方式,就是一张规范的二维表
相关概念:
- 关系:通常说就是一张表。
- 元组:表中的一行,即一个元组。
- 属性:表中的一列,即一个属性。
- 码:表中的某个属性组,他可以唯一确定一个元组。
- 域:域是一组具有相同数据类型的值得集合。属性的取值来自于某个域,例如人的年龄一般是在(1-120)中间。 (笛卡尔积就是域上的一种集合运算。)
- 分量:元组中的一个属性值。
关系的每一个分量,必须是一个不可分的数据项,也就是说不允许表中还有表
3.联系
实体之间的联系,有一对一,一对多,多对多等多种类型
- 如果实体集 A 中的每一个实体,实体集 B 至多有一个实体(也可以没有)与之联系,反之亦然,则实体集 A 与 实体集 B 具有一对一联系
- 如果实体集 A 中的每一个实体,实体集B中,有 n 个实体(n>=0)与之联系,反之,对于实体集B中的每个实体,实体集A中,至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系
- 如果实体集 A 中的每一个实体,实体集 B 中有n个实体(n>=0)与之联系,反之,对于实体集 B 中的每个实体,实体集A中也有m个实体(m>=0)与之联系。则称实体集A与实体集B具有多对多的关系
4.多对多的关系
多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。
数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。
5.结合EF core 理解多对多
1.Model配置
一对多
以city和Province为例,Province有多个city,而一个city只能有一个Province
using System;
using Microsoft.EntityFrameworkCore;
namespace ASPNetEFFCore.Models
{
public class MyContext:DbContext
{
public MyContext(DbContextOptions<MyContext> options):base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder){
//配置多对多 ,就是两个一对多,可以不写
modelBuilder.Entity<City>().HasOne(city => city.Province).WithMany(x => x.Cities).HasForeignKey(city => .ProviceId