利用簡單的字符串匹配模擬數(shù)據(jù)庫的DBMS

DBMS管理系統(tǒng)

先說一下,為什么要在這樣一個時候,寫一個DBMS,主要是我的學(xué)長告訴我,周日要找我吃飯,我平時不在學(xué)校住啊,我就早上就趕過來了,我就問啊,咱們什么時候吃飯啊,沒人回答。。。過了一會終于回答了,告訴我晚上六點(diǎn)半。。。我就想那我可以做點(diǎn)工作嘛,畢竟最近一直在打工嘛,剛想敲安卓代碼,就發(fā)現(xiàn)沒帶數(shù)據(jù)線沒有辦法調(diào)試,所以就寫這個數(shù)據(jù)庫實(shí)驗(yàn)玩一玩咯,打算一次性全寫完得啦,不想一次一次得寫啦。

我先將數(shù)據(jù)庫的功能進(jìn)行了分類:

  • 一. 基于數(shù)據(jù)庫的操作

1.數(shù)據(jù)庫的創(chuàng)建:
創(chuàng)建數(shù)據(jù)庫時,需要輸入管理員的用戶名,用戶口令,管理員的權(quán)限默認(rèn)是最大值,同時需要將管理員的用戶名,用戶口令,用戶權(quán)限存到數(shù)據(jù)字典中,其中用戶口令將采用MD5加密,這樣即使數(shù)據(jù)字典被破解,管理員的口令也不會被盜取。


2.完整性的約束
①:創(chuàng)建表的過程,要檢查表名是否重復(fù),如果重復(fù)將提示創(chuàng)建表失敗
②:數(shù)據(jù)插入過程中,要檢查是否符合用戶輸入的類型值,如果不滿足,將提示用戶插入失敗


3.數(shù)據(jù)庫安全問題的處理
①:要建立用戶權(quán)限的機(jī)制
②:所有用戶的用戶口令要采用MD5加密后存儲

  • 二. 文件操作

1.利用java對txt創(chuàng)建的操作
2.利用java向txt中寫入的操作
3.利用java對txt內(nèi)容讀取的操作
4.利用java刪除txt的操作

  • 三.用戶類的定義

1.為用戶定義用戶名、密碼、權(quán)限的操作
2.管理員可以授權(quán)的操作

  • 四.對表內(nèi)容的操作

1.增添數(shù)據(jù)的操作:Insert
①:要檢查表名是否正確
②:要檢查插入的屬性個數(shù)是否正確,如果屬性值為空請輸入null
③:檢查屬性值是否是預(yù)先定義好的類型


2.刪除數(shù)據(jù)的操作:Delete
①:該刪除操作需要刪除的是一整行數(shù)據(jù),如果需要刪除某個屬性值,需要調(diào)用更改的接口,將值修改為null即可


3.修改數(shù)據(jù)的操作:Update
①:修改是可以根據(jù)用戶輸入的條件進(jìn)行修改,需要輸入新的一行,暫不支持單獨(dú)輸入某一個屬性的修改


4.查詢數(shù)據(jù)的操作:Select
①:能夠處理多個表的連接操作;查詢條件包括and、or、=、≠、≤、≥、<、>
②:實(shí)現(xiàn)全關(guān)系選擇操作(select * from 關(guān)系名)。
③:實(shí)現(xiàn)單關(guān)系的投影操作(select 屬性名列表 from 關(guān)系名)。
④:實(shí)現(xiàn)單關(guān)系的選擇操作(select * from 關(guān)系名 where 條件表達(dá)式)。
⑤:實(shí)現(xiàn)單關(guān)系的選擇和投影操作(select 屬性名列表 from 關(guān)系名 where 選擇條件)。//選擇條件是指“屬性名 操作符 常量”形式的條件
⑥:實(shí)現(xiàn)兩個關(guān)系和多個關(guān)系的連接操作(select * from 關(guān)系名列表 where 連接條件)。//選擇條件是指“屬性名 操作符 屬性名”形式的條件
⑦:實(shí)現(xiàn)兩個關(guān)系和多個關(guān)系的選擇和連接操作(select * from 關(guān)系名列表 where 選擇條件和連接條件)。
⑧:實(shí)現(xiàn)兩個關(guān)系和多個關(guān)系的投影和連接操作(select 屬性名列表 from 關(guān)系名列表 where 連接條件)。
⑨:實(shí)現(xiàn)兩個關(guān)系和多個關(guān)系的選擇、投影和連接操作(select 屬性名列表 from 關(guān)系名列表 where 條件表達(dá)式)。


5.增添主鍵的操作:CreateKey
6.刪除主鍵的操作:DeleteKey
7.修改主鍵的操作:UpdateKey
8.輸出表結(jié)構(gòu)的操作:Select *

  • 五.對表這個層級的操作

1.創(chuàng)建表:CreateTable
①:需要先查重,如果已經(jīng)有該表則提示用戶創(chuàng)建表失敗
②:需要將表的屬性,和屬性信息寫到數(shù)據(jù)字典中,需要建立這樣一張表存儲在txt中


2.刪除表:DeleteTable
①:刪除數(shù)據(jù)字典中的信息,刪除對應(yīng)的txt文件

  • 六.修改表結(jié)構(gòu)的操作

1.增添表的屬性:AlterAdd
①:檢查是否已經(jīng)具有該屬性,已經(jīng)有,回復(fù)用戶失敗
②:修改對應(yīng)的數(shù)據(jù)字典,將表中加一列,屬性值全部置空


2.刪除表的屬性:AlterDrop
①:檢查是否已經(jīng)具有該屬性,若沒有,回復(fù)用戶失敗
②:修改對應(yīng)的數(shù)據(jù)字典,刪除表中的這一列


3.創(chuàng)建索引的操作:CreateIndex
①:檢查是否已經(jīng)具有該索引,如果有這個索引,則回復(fù)失敗
②:創(chuàng)建索引文件,修改數(shù)據(jù)字典中表的信息


4.刪除索引的操作:DeleteIndex
①:檢查是否已經(jīng)具有該索引,如果沒有這個索引,則回復(fù)失敗
②:刪除索引文件,修改數(shù)據(jù)字典中表的信息

//TODO 未完待續(xù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容