5.2 NoSQL数据库

所有不遵循上节所述的关系模型的数据库统称为 NoSQL 数据库。
NoSQL 数据库一般使用集合代替表,使用文档代替记录。
NoSQL 数据库采用的设计方式使联结变得困难,所以大多数数据库根本不支持这种操作。
对于 之前的关系型数据库,若要列出各用户及其角色,就需要在程序中执行联结操作,
即先读取每个用户的 role_id,再在 roles 表中搜索对应的记录。

5.2 NoSQL数据库 - 图1

NoSQL 数据库更适合设计成如图所示的结构。这是执行反规范化操作得到的结果,
它减少了表的数量,却增加了数据重复量。

这种结构的数据库要把角色名存储在每个用户中。如此一来,将角色重命名的操作就变得很耗时,可能需要更新大量文档。
使用 NoSQL 数据库当然也有好处: 数据重复可以提升查询速度, 列出用户及其角色的操作很简单,因为无需联结。