问题一:

自连接表肯定是相似  Id(PK),parentId(FK),name ….了

Id假如是主键的话,parentId就是外键了,

可是树形结构肯定是有根节点了,那么根节点的parentId按理说应该是null,原因是根节点没有父节点,

可是主键Id是不能为空的啊,导致外键parentId也不能为null,那本人输入数据的时候怎么办呢?

问题二:

本人为了避免问题一中的麻烦,本人单独弄了个uuid主键ID,而然后是唯一索引Bh(编号),然后是上级编号parentBh

也就是自连接表项为   ID(PK),Bh(unique),parentBh(FK),name…

这样以来,外键parentId就可以为null了,也就实现了树形结构根节点的父节点为null了。

本来还挺高兴,但是网上有人说本人这么设计数据库根本不合理,说外键就应该关联主键,真的是这样么,那本人说的问题一怎么样解决呢?本人看很多人定义自连接表,parentId都default null,却不设置为外键,这样根节点的parentId的确默认为null了,可是他们这样岂不是就不能用数据库自带的级联操作了么?只能程序控制parentId和Id的一致性了吧?

问题三:

一开始本人是按照问题二描述的那样设计的数据库表,可是后来本人发现,假如是两张表有主外键关联关系的话,本人修改或删除主表的唯一索引,从表的外键会自动修改或删除/set null。

可是假如是自连接表的话,就只能级联删除/set null, 却不能级联更新,这是为什么呢?一修改唯一索引就报错。

问题四:

由于本人不会在hibernate配置文件里(hbm.xml文件)配置主外键关联,所以只能像以前那样写个基本的pojo和.hbm.xml,然后生成数据库表,最后本人在数据库中设置的外键关联,现在使用没出现什么错误,问一下是不是可以这样,而不必非得把hibernate配置中也加上 和之类的配置呢?

问题五:问一下假如客户想要看到数据库表中数据的树形结构,不知道这样的形式能否容易实现呢?

请有耐心、有经验的高手们帮帮小弟吧!

解决方案

40

呵呵,关键是你的父ID可以为空呀。你的思路有问题了。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明自连接表的相关问题(树形结构)!

mysql 自连接 树形_自连接表的相关问题(树形结构)相关推荐

  1. mysql 多级分类_数据库多级分类相关行排列在一起的查询

    我用的数据库是mysql. 在做后台分类管理的时候遇到这样一个需求 就是将分类以树形菜单的方式展现出来. 我的导航栏的表在数据库中是这样的 然后,经过初步的sql查询,实现的效果是下面这样的,下边有s ...

  2. Mysql优化原则_小表驱动大表IN和EXISTS的合理利用

    //假设一个for循环 for($i = 0; $i < 10000; $i++) { for ($j = 0; $i < 50; $j++){} }for($i = 0; $i < ...

  3. mysql创建表格1warning_MySQLMySQL创建表及相关约束

    第一个表创建: create table class( cid int not null auto_increment primary key, caption char(20) not null ) ...

  4. mysql 收入支出_支出表和收入表生成收支流水表的问题

    收入表a id    harvest 1       300 2       500 支出表b id   pay 1     -100 2     -150 希望生成的流水表c 发生金额        ...

  5. mysql迁移、备份数据表,导出表数据与结构

    在服务器上部署的爬虫成功的爬取了一些数据,现在需要把这个表迁移到另一台主机 mysql -u 用户名 -p 输入密码后进入mysql命令行: #显示数据库的表 show databases; use ...

  6. mysql 向下兼容_前言本文主要介绍的是关于Mysql8.0驱动getTables返回所有库的表的相关内容,MySQL Connector/J 8.0版本驱动向下兼容之前的5.5...

    前言 本文主要介绍的是关于Mysql8.0驱动getTables返回所有库的表的相关内容,MySQL Connector/J 8.0版本驱动向下兼容之前的5.5+版本MySQL,如果你使用的是5.5+ ...

  7. MySQL笔记:第06章_多表查询

    第06章_多表查询 多表查询概述 1.一个案例引发的多表连接 1.1 案例说明 1.2 笛卡尔积(或交叉连接)的理解 演示代码 2. 多表查询分类讲解 分类1:等值连接 vs 非等值连接 等值连接 非 ...

  8. 【MySQL笔记 第06章_多表查询】

    第06章_多表查询 多表查询概述 1.一个案例引发的多表连接 1.1 案例说明 1.2 笛卡尔积(或交叉连接)的理解 演示代码 2. 多表查询分类讲解 分类1:等值连接 vs 非等值连接 等值连接 非 ...

  9. MySQL—通过Adjacency List(邻接表)存储树形结构

    转载自:Mysql通过Adjacency List(邻接表)存储树形结构 今天来看看一个比较头疼的问题,如何在数据库中存储树形结构呢?像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数 ...

最新文章

  1. 阿里云云效何勉:云原生是“精益实践”的最佳助力
  2. linux看网络电影,Linux中看电影、听音乐
  3. python怎么查询帮助信息_Python 查看模块的帮助文档,方法和帮助信息
  4. 批量域名解析为IP地址
  5. 浅谈Linux管线命令grep
  6. html中加入emjio表情,jqueryemoji表情插件
  7. Maven的依赖与最佳配置(转载自Maven实战 作者许晓斌)
  8. html5音乐背景图,HTML5 Audio 麦克风操控+钻石背景图案
  9. echarts飞线图
  10. 项目总结 :木门app(2015.4.10 —— 2015.5.8)
  11. 什么是分布式系统,这么讲不信你不会
  12. PACS医学影像DICOM dcmdictpath知识记录梳理
  13. OpenCV3的GPU模块编译
  14. PostgreSQL函数——数值函数
  15. 永久解决Linux(Ubuntu)下安装CH340驱动问题
  16. NodeJS_06_Mysql_Promise_json-server_http-server
  17. 遥感识别3——遥感图像数据集大全
  18. 全班练MATLAB,精讲多练MATLAB
  19. 让你大开眼界的6个超惊人机械假肢,AI加持下还能怎样进化?
  20. AppCompatActivity设置为dialog弹窗主题样式,并设置半透明背景

热门文章

  1. cd-rom门锁定什么意思_CD-ROM XA的完整格式是什么?
  2. Java ResourceBundle getLocale()方法与示例
  3. olap 多维分析_OLAP(在线分析处理)| OLAP多维数据集和操作
  4. avatar.php uid,phpcms函数库中获取会员头像方法get_memberavatar()有时无效问题
  5. 网络克隆软件_网文生成器,克隆的是骗钱“病毒”
  6. c++局部对象是什么_程序员每日一题-GCROOT对象
  7. observable_Java Observable notifyObservers()方法与示例
  8. c++ stl stack_C ++ STL中的stack :: push()函数
  9. mysql导入工具 行提交_使用命令行工具mysqlimport导入数据
  10. pythonpptx 楷体_python-pptx 实践 4:添加形状、文本