現在需要開發一套資訊系統, 記錄系裡的學生、課程、 還有選課資訊。比如
可以使用三個獨立的文字檔案來儲存這些資訊,比如學生資訊:
然後程式
只需要讀寫這三個檔案就可以了。
到了期末,各個老師希望能進行一些統計的工作,比如哪些人不及格,某學科的平均分等等。實際上就是對檔案進行查詢
而已。如果每次都使用程式來進行操作,非常麻煩,而且不利於普及。
所以我們可以提供乙個中間層
,把檔案層遮蔽掉,讓每個人都可以在這個中間層用簡單的方法進行查詢。我們把資料存放的結構叫表
,每一列叫列、字段、屬性
。
可以使用簡單的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索引,也就是說預設使用...