实现一个基于Java语言的简易关系型数据库

实现一个基于Java语言的简易关系型数据库

用来学习关系型数据库(如Mysql)的设计理念、核心骨架、基本算法。

涉及的核心原理

自平衡的排序二叉树: 我们的数据库采用平衡二叉树,来加快增删改查的速度

序列化:因为要存储到磁盘空间上,对添加数据之后的二叉树进行序列化

StartUpMain这个是启动类要,启动用的

设计思路

1.建表
create table students ( name varchar(30) , age varchar(30) );

建表的逻辑:建立一个Entity类

定义一个int id,作为查询的主键,定义一个map类型存放各个属性,定义一个String的Table.

我们的数据库是一个比较简单的数据库,所有的存放类都是Entity的实例

建立一个自平衡的二叉树,存储数据

在这个过程当中我们需要一个在表中维护一个id,随着子数据的被插入而增加.这就是我们自增的主键
之后我们通过截取字符串的方法获取到了表在所有的列和属性,在这里我们的属性可以用java中的Object来代替通过int propertyNum = (s.length - 4) / 3;我们来算出有多少个属性,在这里画一个饼,以后会通过分析字符串来识别
之后遍历字符串,在表中有一个list维护了属性

2.插入数据
insert into students values ( wangbing , 22 );

这个是直接在平衡二叉树里面封装了一个add方法,这个添加的子结点会根据id进行自平衡,保持二叉树平衡,以此来提升查找效率

3.查找数据
select * form students ;

这个在平衡二叉树里面写了一个中序遍历的方法,来打印.

最后这是运行截图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dAsfzFXX-1656081073590)(img.png)]

GitHub:https://github.com/xiaozhaotongzhide/MyMiniSql

未来改进(画饼)

1.完成删除和条件查询
2.对属性进行改进,使其可以存放多种属性.
3.设计一个工厂类,让工厂类来建立数据结点,同时把表中存放的自增长id给工厂类来进行解耦
4.通过java序列化来实现本地存储

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值