简书 賈小強
转载请注明原创出处,谢谢!
关系型数据库是由多张关系表组成的,表之间通过一对多关系不断连接,数据库可能由几张甚至上百张的表连接而成,那么如何构建一个看似复杂的关系型数据库呢?
我们知道通过SQL语句中的JOIN实际上可以将多张表连接成一张虚拟表,也就说可以将不同表的属性连接到一起形成一个表头,从这里个角度逆向思考,当我们发现一行由多个属性组成的记录时,也就说可以拆分成多张关系表
比如有一行记录: field1,field2,field3,field4,field5,field6,然后可以按照2NF,3NF拆分进行垂直查分
- field1 2只依赖主键field1,那么分成一张表A
- field3 4只依赖主键field3,那么分成一张表B
- field5 6只依赖主键field5,那么分成一张表C
然后可以形成如下图可能形式的连接情况
ER1.png
现在假设B表还可以继续拆分成3张表,于是又可以形成如下形式的连接情况
ER2.png
推论:按照上面的方式可以将一行记录逐步拆成任意复杂度的关系表
Happy learning !!
网友评论