数据库的设计
这里参考数据库设计三大范式
我这里用自己的话来简要的复述一下:
数据库设计第一范式:
数据库表中每一个属性都是原子的,即不应该在里面再分成几个部分,举几个例子:
英文名
LeBron James,既有first name,又有last name,所以数据库要拆成2列。
地址
在淘宝,京东上填写收货地址时都是:上海市 浦东新区 世纪大道1号,即分为省 市 详细地址,这样对于店家对不同地方的货物发快递会方便很多。
歌
歌手 专辑 发布年 月 日,等等吧
结论
是否是原子的主要看需求,如果没有对地址分类的需求,自然也就没必要把地址划分的那么详细,而这主要取决于业务上的讨论。
数据库设计第二范式:
我的理解是,当存在一对多的关系时,不要把他们都放在一个表里面,举几个例子:
歌
众所周知,专辑和歌不是一一对应的关系,一个专辑里面往往有很多首歌,那么歌的一行如果设计成这样:
歌名 歌的长度 在专辑的位置 专辑名称 专辑发行年份 专辑发行量 歌手 性别 歌手国籍
那么就会有十几首歌在从“专辑名称”开始都是一模一样的内容,浪费了很多空间,所以可以拆成3个表:
- 歌名 歌的长度 在专辑的位置 专辑名称 歌手
- 专辑名称 专辑发行年份 专辑发行量
- 歌手 性别 歌手国籍
数据库设计第三范式:
我觉得和第二范式差不太多,因为当数据具有从属关系时本质上也是具有一对多的关系,也不知道我理解的对不对哈