getRoot()这句不是很明白
ALTER TABLE cake ADD CONSTRAINT FK_Reference_1 FOREIGN KEY(cid) REFERENCES catalog(id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE catalog ADD CONSTRAINT FK_Reference_2 FOREIGN KEY(pid) REFERENCES catalog(id) ON DELETE RESTRICT ON UPDATE RESTRICT;
数据库的设计和使用上逻辑有点看不明白,根据数据库上面两句语言的意思,在业务上是不是可以这样理解:
一:catalog(id)有两个子类,一个是catalog(pid),另一个是cake(cid)
二:getRoot()使用catalogDao.select(10000);为什么选择第一个id(10000)就得到了根?,如果后续id出现了11000,那么catalogDao.select(10000)还能得到跟吗?
三:root.child是catalog(pid),root.child.child是cake(id)。这样理解对吗?
正在回答
同学你好!
首先pid是指某个分类的父id,并不会出现直接根据pid查询分类
查询时通常都是根据id查询分类,然后pid=id,去查询这个id下面的子分类哦~所以不会出现直接使用pid查询的呢,pid的作用是用来根据pid=id查询子分类的
如果我的回答解决了你的疑惑,请采纳,祝学习愉快
同学你好!
同学可以按照以下思路理解哦~
下面这个sql的意思是:
给cake表中的cid字段添加外键,与catalog表中的id关联(也就是cake表中的cid字段与catalog表中的id字段匹配)
给catalog表中的pid字段添加外键,与catalog表中的id关联(也就是catalog表中的pid字段与catalog表中的id字段匹配)主要是用来表示层级关系
catalog(id)不存在子类呢,不建议同学这么理解
getRoot()使用catalogDao.select(10000),其实是我们自己设置好的,其它的id不会影响到它,在数据库中id=10000的数据,是没有pid的,它不属于任何一个分类的下面,因此它就是最外层的那个分类。getRoot()就是获取最外层的分类
root.child是根据id,去查询pid=id的记录,也就是属于root下面的分类,比如:根据id=10000,查询出pid=10000的记录
这里的cake与cakelog的关系是,cake的cid必须要cakelog中有相匹配的id才可以,也就是这个蛋糕必须要某个蛋糕分类的下面
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星