GithubHelp home page GithubHelp logo

haoyangrui / wyxdbms Goto Github PK

View Code? Open in Web Editor NEW

This project forked from wwwyanxin/wyxdbms

0.0 1.0 0.0 361 KB

用Java实现了一个关系型数据库,DBMS数据库管理系统,可使用常用增删改查的SQL语句,具有数据字典,数据索引文件,并且实现了启发式查询优化

Java 100.00%

wyxdbms's Introduction

wyxDBMS 是一个用Java实现的关系型数据库

实现功能

  • 1、用Java语言建立数据库表。
    (1) 数据文件和字典文件存储结构和存取方法为按行存取,数据为字符型可直接阅读。
    (2) 属性的个数任意,属性的类型包括整数int,字符串varchar,双精度浮点double。
    (3) 表的相关信息存入数据字典。

  • 2、为关系表插入元组。
    (1) 用VALUES子句为新建立的关系插入元组。
    (2) 用VALUES子句在关系模式修改之后按照新的模式插入元组。
    (3) 不指定属性,插入元组的所有属性值;
    (4) 插入元组的指定属性的值。
    (5) 修改相应的索引文件。

  • 3、实现属性的添加和删除功能。
    (1)为基本表添加属性并维护数据字典。

  • 4、实现表中元组的删除和修改功能,维护索引文件。
    (1)实现删除数据库记录的功能。
    a) 没有WHERE条件,删除关系中的所有元组。
    b) 指定WHERE条件,删除满足条件的元组。
    (2)实现修改数据库记录的功能。
    a) 没有WHERE条件,修改所有元组的指定属性的值。
    b) 指定WHERE条件,修改满足条件的元组的指定属性的值。
    (3)修改相应的索引文件。

  • 5、实现表的删除功能。
    (1)删除表并维护数据字典。
    (2)删除相应的索引文件。

  • 6、索引的创建、维护与删除
    (1)为关系表的所有属性建立稠密索引(文件路径+文件行号)。
    (2)使用java类库的treeMap(红黑树实现)存储索引项。
    (3)实现数据增删改时索引的维护功能。
    (4)实现数据增删改查时,从索引树中索引所需的数据文件,提高数据操作效率。
    (5)可控制文件行数,默认:lineNumConfine = 10;每插满10行,新建数据文件。

  • 7、实现显示数据库表的功能。
    (1)实现“SELECT * FROM 表名”。
    (2)显示表的结构和内容。

  • 8、查询优化:
    (1)实现启发式关系代数优化算法。(对原始的语法树进行优化处理,生成查询计划,选择代价最小的。)

  • 9、查询执行:
    (1)、实现单关系的投影操作(select 属性名列表 from 关系名)。
    (2)、实现单关系的选择操作(select * from 关系名 where 条件表达式)。
    (3)、实现单关系的选择和投影操作(select 属性名列表 from 关系名 where 选择条件)。//选择条件是指“属性名 操作符 常量”形式的条件
    (4)、实现多个关系的选择、投影和连接操作(select 属性名列表 from 关系名列表 where 条件表达式)。
    (5)、实现两个关系和多个关系的连接操作(select * from 关系名列表 where 连接条件)。//连接条件是指“属性名 操作符 属性名”形式的条件
    (6)、实现多个关系的选择、投影和连接操作(select 属性名列表 from 关系名列表 where 条件表达式)。

  • 10、用户权限
    (1)、创建用户、设置密码,并写数据字典;
    (2)、为用户授权,并写数据字典(grant admin to userName;);
    (3)、用户进行任何数据库操作前,要根据数据字典进行权限验证;
    (4)、撤销用户权限,并修改数据字典(revoke admin from userName;)。

wyxdbms's People

Contributors

wwwyanxin avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.