梗概
- 本质上就是一对多联系
- 只不过多对一的映射比较少,比较强调一对多的单向映射
实例
- 一个人对应不定数量的收货地址
- 一个人一般对应多个收货地址
- 有很多地址对应不到人
处理多值
多值可以用分隔符连接成单值
用实体表示
也可以用一个单独的表来表示
- 即人(ID,收货地址)
- 所以很多时候多值都直接用实体表示就行了
适用范围
多值属性组
当多值属性是一个属性组的话, 多值就更适合使用使用实体来表示
这样的话, 属性组就拆散作为这个新实体的属性
实例
- 订单中可以有多个商品, 及其对应的数量, 等信息
- 对应一个属性组,在这里称之为商品明细
- 因为可以有多个商品,所以是多值属性
- 把商品明细作为一个实体
错误的设计
认为商品以及相关信息与订单是多对一的关系, 就直接让商品与订单产生联系
这样的话, 不同的商品就得反映在行里, 而每行还得保存订单的其他属性, 他们的值都是一样的, 就会造成内存的浪费
做冗余
也可以为做冗余, 为可能的多值预留位置
- 如人(id,收货地址1,收货地址2,收货地址3)