关系型
- 一对一关系
例:一个人对应一个身份证号。能通过身份证号查到驾驶证号,驾驶证号也能查到此人的身份证号和信息。
- 一对多关系
一个分类对应多个商品。
订单表-商品表:一个订单包含多个商品
一个班级对应多名学生
- 多对多关系
一个学生可以选修多个课程,而同一门课程可以被多个学生选修
一个用户可以关注多个商品,一个商品也可以被多个用户关注
中间表
用户 id=1 -> 收藏了 id=1 的商品
用户 id=1 -> 收藏了 id=3 的商品
用户 id=2 -> 收藏了 id=3 的商品
用户 id=2 -> 收藏了 id=2 的商品
1 | 用户表 中间表 商品表 |
查找用户 id=1 收藏了哪些商品?
查中间表 得到商品 id 为 1,3
再从商品表拿出 id=1,3 的商品即可
用于关联查询,多表关联等
主键
主关键字(主键,primary key)是 bai 被挑选出来,作表的行 du 的惟一 zhi 标识的候选关键字。一个表只有一个主 dao 关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键
主关键字的作用
1、保证实体的完整性;
2、加快数据库的操作速度;
3、在表中添加新记录时,ACCESS 会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
4、ACCESS 自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
外键
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。
索引
优点:
索引通常能够极大的提高查询的效率
缺点:
虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行 INSERT、UPDATE 和 DELETE
因为更新表时,不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件。
如果没有索引,MongoDB 在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
简单的说,索引就是将文档按照某个(或某些)字段顺序组织起来,以便能根据该字段高效的查询。有了索引,至少能优化如下场景的效率
索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录