王森 王風碩



摘要:如今在網絡上有越來越多的軟件可以提供給用戶使用,而在面向多用戶的前提下,用戶數據的精準儲存是最為重要的。因為這關系著用戶數據的是否安全,也關系著軟件的使用壽命,所以數據庫的設計和安全就是每個開發者都需要重點關注的地方。該文將以圖書管理系統的數據庫為例子來設計一個基本的數據庫。
關鍵詞:數據庫;node.js;vue.js
中圖分類號:TP311 ? ? 文獻標識碼:A
文章編號:1009-3044(2021)35-0018-02
1引言
在網絡技術非常發達的今天,越來越多的人參與到網絡環境的建設中。進而也產生了大量的、涉及各個方面的軟件或者網頁供我們使用,而這些軟件和網頁除了前端方面設計需要易交互、美觀之外,絕大多數的軟件和網頁還需要后臺數據庫的支持。因為每天都會有大量的用戶數據需要存儲,這部分數據關系到每一個用戶的使用體驗,所以必須完整且安全地保護好這些數據。本文就這個問題通過圖書銷售系統的數據庫設計來說明如何設計一個這樣的數據庫。
2開發環境介紹
本文主要使用HeidiSQL和MySQL,HeidiSQL是一款用于提供簡單化的MySQL服務器和數據庫管理圖形化界面的工具。HeidiSQL給予了用戶一個用于在數據庫瀏覽之間切換SQL查詢的簡單易用的界面。可以很簡單很直觀地設計數據庫。MySQL作為獨立的程序應用,他不會與其他的電腦程序發生沖突,或者鑲嵌到客戶中。也支持大型的數據庫系統并且可提供多種數據鏈接途徑。Node.js則是用于數據庫和后端實現端口連接和數據傳輸,還是用來實現前后端數據監聽和交互的媒介,在此就這方面就不再贅述。
3數據庫設計
在我們提到的前提下數據庫的設計應該滿足所有人員的基本使用需求,即對于管理人員、普通用戶和游客用戶都能有良好的使用體驗。所以就需要對每個不同的用戶生成或者不生成相應的數據表來儲存數據。
3.1數據庫設計的目標
由網站為圖書銷售系統的功能可以知道,這個數據庫至少需要有足夠的大來儲存每天都會產生的用戶和書籍數據。而且該數據庫應該足夠的高效且穩定,其中就包含用戶在查找書籍數據或者瀏覽歷史記錄時數據庫做出反應、查找數據的速度和穩定性。除了這些,數據庫系統還需要具備較高的范式、數據要足夠的安全、可移植性高、數據冗余度低、共享性好等特點。只有具備了這些特點,該數據庫才會給用戶一個較好的使用體驗,也就直接影響了該網站的使用效率。
3.2數據庫的概念結構
根據本文的要求,本文的數據庫中屬性、實體和聯系的關系如下:
(1)實體:客觀存在并可以互相區分的物理體被稱為實體,本系統的實體主要包括管理員,普通用戶,游客用戶,書籍等。
(2)屬性:實體所具備的特征為屬性,一個實體可以具有多個屬性,多個實體也可以共用一個屬性,以此為區分條件,就可以很明確地描繪出一個完整的實體,比如該系統中的書籍實體,其就包含書名、作者、出版社、開本、出版日期等屬性。
(3)聯系:而在現實世界中,該數據庫所包含的實體并不是彼此孤立的,而是有或多或少的聯系,這種聯系就有“一對一”“一對多”“多對多”這三種聯系。
而實體之間聯系最直白的表示方式就是E-R圖,通過E-R圖可以很輕松地看出每個實體之間的聯系以及聯系方式。本系統的E-R圖如下所示:
圖書銷售系統中每個實體的屬性:
書籍:(書籍名稱,作者,出版社,出版日期,isbn編號,簡介,備注)。
管理人員:(姓名,性別,權限級別,編號,照片,出生日期,手機號。)
普通用戶:(姓名,性別,權限級別,編號,出生日期,手機號)。
游客用戶:(臨時ID)。
3.3數據庫的邏輯結構
目標:把概念設計出的E-R模型圖轉成選用數據庫適用的邏輯結構。概念結構向邏輯結構轉化的一個關鍵問題就是將實體之間的聯系轉換為關系模型,邏輯結構的設計步驟如下:
(1)將概念結構中通過該系統繪制出來的E-R模型圖遵循所選擇的數據庫中的相關規則轉化為該數據 庫能適用的數據模型。
(2)對數據模型中的產品進行對方面的對比改進,找出最適合的關系模式。
(3)對定下來的數據模型以一定的方式進行優化,以盡可能提高邏輯結構設計的性能,這樣在后續的數據庫構建中才會有足夠好的數據支撐。
3.4數據庫的表創建及其表關聯
按照邏輯結構設計中的關系來進行表的設計,而在表的創建過程中,每一個實體必須有一個主鍵,且該主鍵一般選擇對于該數據庫來說僅僅只有該實體才擁有的屬性。除此之外,還需要為每個主鍵配合定義一個外鍵,使主鍵、外鍵之間能一一對應起來。而表與表之間的聯系一般被分為三種,分別是一對一、一對多和多對多。在設計關系表時需要注意三個問題:數據的冗余、數據之間的函數關系和數據空間的選擇。數據冗余的控制可以避免數據空間的浪費,函數依賴是表中的各字段屬性要滿足3NF規范式,數據空間選擇則是因為對于不同的實體,其所需要的空間大小也是不同的,所以根據不同的實體表選擇不同的空間以達到空間的充分利用,不浪費。在此以書籍表為例:
其他表也通過類似的方式建立,然后再建立關系表來將這些表鏈接起來,在此就不再一一展示。
3.5數據庫的物理設計
數據庫的物理設計主要就是以數據庫的數據來制定存儲結構和存儲方法的依賴,數據庫的存儲方法一般來說分為三種,分別是:索引方法、聚簇索引方法和HASH方法。索引方法就是根據要求,確定對應關系的哪些屬性列建立索引、哪些屬性列建立組合索引、哪些索引要設計為唯一索引等。聚簇索引方法就是為了提高某屬性(或屬性組)的查詢速度,可以將這些屬性(成為聚簇碼,cluster key)上具有相同值的元組集中放置在連續的物理塊上。HASH方法則是有些提供HASH方法的數據庫在滿足某些特定條件時可以適用HASH方法。以上三種方式中最常用的就是前兩種。而數據的存儲結構選擇就主要是在實際情況下選擇一種在保證數據庫能快速準確運行條件下的最節省空間的儲存方式。
3.6數據庫的測試
在數據庫設計完成之后,需要先通過簡單的增刪改查來檢查數據庫能否正常使用,在此通過錄入的100條數據來模擬測試,并執行增刪改查操作,當返回如圖3所示,說明數據庫的初步設計已經完成。
3.7數據庫的安全性
隨著使用,數據信息只會慢慢增多,數據庫的存儲容量也慢慢變大,但是當前主流的數據庫中,數據幾乎都是以明文的形式存在于存儲設備中,如果存儲設備遺失,就很有可能會引起數據泄露風險,給使用數據庫存儲信息的用戶帶來極大的危害。又因為數據庫中的文件一般都以明文形式存在,導致一些網絡黑客可能會通過網絡、操作系統等電腦的漏洞接觸到這些文件,從而導致數據有泄露的風險[1]。
所以為了避免數據庫的安全方面的一些問題,制定了一些設計規范。在建表時盡量避免一個表中有過多的數據關系,可以多創建一些表來儲存各個數據之間的關系。這樣不僅會避免可能會對數據庫造成的漏洞,還能更方便地維護和查找數據。而且盡量避免出現重復字段、對命名進行規范,最好是制定一個字段的命名規定,然后所有的命名都嚴格按照此命名規范來命名。
為了解決這些問題,可以采取以下方式,最簡單的方法就是對用戶的操作權限進行限制,這樣可以避免大多數安全性的問題。其次重要的是對數據進行加密的操作。也可以增加身份驗證、權限控制和敏感數據加密等方法可以有效地避免數據庫絕大部分安全問題。
除了這些,還可以實時更新操作系統這樣也可以避免由于版本問題而帶來的數據泄露隱患。
4結束語
本文通過了圖書管理系統來介紹了數據庫的設計實現以及其中需要主要的問題和相應的解決方法,僅僅是提供了一個設計數據庫的基本方式,在現實的生活中數據庫的設計是非常嚴謹且復雜的,而隨著數據庫的體量越大,其中所涉及的知識面以及需要考慮的東西也就越多。
該文章包含的代碼方面比較少,因為數據庫主要是對數據的存儲,而這方面則是前后端共同完成的,數據庫僅僅是起到一個輸入和輸出數據的作用。
參考文獻:
[1] 張士剛.計算機軟件開發中數據庫安全設計的應用實踐分析[J].發明與創新(職業教育),2021(7):238-239.
[2] 王兵兵,陳能,丁雅雪.基于MySQL的智慧社區助老關愛平臺數據庫設計[J].信息通信,2019,32(2):152-154.
[3] 楊浦,王樑.網上圖書銷售管理數據庫設計[J].電腦知識與技術,2018,14(26):13-15.
[4] 吳鋒珍.高校圖書管理系統的數據庫設計[J].湖南郵電職業技術學院學報,2016,15(2):32-35.
【通聯編輯:梁書】