最近做毕业设计一直考虑数据之间的关联,如何在关系数据库中对MySQL进行存储和操作。
本来是不建关联表,采用主外键引用,但一想如果是依赖关联我就需要多表联合查询,需要写复杂的SQL语句,感觉十分头疼。
写论文时候来了灵感,论文的标题都是层状级结构的,我就考虑用一张表进行层状存储,
层状存储类似树的结构,包括父节点,子节点,层数,排序;节点里有节点唯一ID,标识值,对父节点的引用记录,信息值。
最近学习的发现数据之间的图关联可以先转换为树的结构进行层状存储,实际上设计应先不要考虑复杂的关联结构,基础表先把这些信息值建出来,
然后进行层级分析和抽离,层数不要太多,4-5层即可,如果复杂再进行表的拆解,因为层数过多表就十分复杂和巨大,有性能瓶颈;
然后写树的操作方法,查询建议不要使用java对象操作,直接使用MySQL的SQL语句直接操作,一步到位。

我个人觉得层级最难就是树的数据结构理解和操作方法理解,但是发现实际搞懂后要比嵌套SQL和联合查询简单得多,只要给1.层数和排序和2.唯一ID和3.标识值就能轻松拿到节点,
修改也只需要改变引用记录,层数和排序,根本不用写复杂的SQL语句。
需要注意层数和数据不宜太多,估计多了影响性能。

听说mongoDB有这样操作,但是估计没时间学了。