資料庫(二),資料庫起源

2022-08-02 01:18:14 字數 1750 閱讀 1569

現在需要開發一套資訊系統, 記錄系裡的學生、課程、 還有選課資訊。比如

可以使用三個獨立的文字檔案來儲存這些資訊,比如學生資訊:

然後程式只需要讀寫這三個檔案就可以了。

到了期末,各個老師希望能進行一些統計的工作,比如哪些人不及格,某學科的平均分等等。實際上就是對檔案進行查詢而已。如果每次都使用程式來進行操作,非常麻煩,而且不利於普及。

所以我們可以提供乙個中間層,把檔案層遮蔽掉,讓每個人都可以在這個中間層用簡單的方法進行查詢。我們把資料存放的結構叫,每一列叫列、字段、屬性

可以使用簡單的sql語句就能查詢

select  學號,姓名 

from 學生資訊

where 入學日期='1991-9-1'

然後需要乙個解析器,可以把語句轉換為內部對檔案的操作。這樣還可以使用程式來呼叫抽象層來程式設計啊, 也不用直接操作檔案了

使用這樣的sql語句最大的好處是使用者完全不用考慮物理層的那些檔案的結構,只需要關注邏輯層的「表」就可以了。

中間的邏輯層的另外的好處是可以對物理層的檔案儲存進行優化了, 為了加快訪問速度, 可以增加了索引、b+樹,快取等手段。

總結起來,中間層的好處在於:

之前的訪問都是單機版的,但是如果有若干的客戶端連入呢?可能會存在

那麼怎麼辦呢?

現在我們已經解決了併發寫的帶來的資料不一致的問題,那麼還有沒有其他的風險點呢?系統故障

比如電子系有1000元, 數學系有2000元

電子系給數學系轉賬200元, 系統先扣除了電子系的錢,現在餘額只有800 ,此時系統崩潰了。

重啟以後,就發現電子系的餘額是對的, 可是數學系還是2000元, 那200元丟了

所以轉賬的操作必須是原子的: **要麼全部發生, 要麼根本不發生。 **

可以把類似轉賬這樣的操作叫做「事務」, 但是怎麼實現呢?記錄日誌

在做真正的操作之前,

乙個沒有許可權控制的系統是非常危險的, 尤其是隨意刪除。

先定義三大類許可權:

資料操作的, 例如select, update, insert等

結構操作的, 例如建立表,修改表,等

管理的, 例如備份資料, 建立使用者等

然後就可以把這些許可權授予某個使用者了

grant  select on 財務表 to  系主任 #只能查詢。

grant create_table to 張老師:#可以建立**

這個系統的中間層完全可以剝離出來,形成乙個完整的軟體了,也就是資料庫

mysql的起源 資料庫(二),資料庫起源

資訊系統 現在需要開發一套資訊系統,記錄系裡的學生 課程 還有選課資訊。比如 學生資訊 學號,姓名,性別,身份證號,入學日期,班級 課程資訊 課程號,課程名,授課老師 選課 學號,課程號,成績 然後程式只需要讀寫這三個檔案就可以了。中間層的引入 到了期末,各個老師希望能進行一些統計的工作,比如哪些人...

資料庫 資料庫程式設計二

標頭檔案 include include include include include include include ifdef cplusplus extern c endif 輔助方法實現 include pub.h 設定退格鍵不回顯 intset backkey 設定tremios的擦除字...

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...