數(shù)據(jù)庫(kù)設(shè)計(jì)需求1. 需求概述本文筆者將與大家分析數(shù)據(jù)庫(kù)外部設(shè)計(jì)需求、結(jié)構(gòu)設(shè)計(jì)需求、運(yùn)用設(shè)計(jì)需求以及安全保密設(shè)計(jì)需求。
建立完善的數(shù)據(jù)庫(kù)結(jié)構(gòu)管理設(shè)備的基本參數(shù)、運(yùn)行狀態(tài)和各種工作計(jì)劃。
數(shù)據(jù)庫(kù)的框架和結(jié)構(gòu)必須根據(jù)設(shè)備和運(yùn)行狀態(tài)而設(shè)計(jì),方便提供強(qiáng)大的錄入、查詢(xún)、統(tǒng)計(jì)、分析和報(bào)表等各種功能操作,較好的反映平臺(tái)業(yè)務(wù)的基本情況和運(yùn)行狀況,滿足平臺(tái)的基本要求。
2. 外部設(shè)計(jì)需求2.1 標(biāo)識(shí)符和狀態(tài)
數(shù)據(jù)庫(kù)表前綴:根據(jù)模塊名定義(如用戶(hù)模塊:sys_)
用戶(hù)名:root
密碼:待定
權(quán)限:全部
有效時(shí)間:開(kāi)發(fā)階段
說(shuō)明:系統(tǒng)正式發(fā)布后,可能更改數(shù)據(jù)庫(kù)用戶(hù)/密碼。
2.2 使用它的程序
本系統(tǒng)主要利用java作為后端的應(yīng)用開(kāi)發(fā)工具,使用MySQL作為后臺(tái)的數(shù)據(jù)庫(kù), Linux或Windows均可作為系統(tǒng)平臺(tái)。
2.3 約定
所有命名一定要具有描述性,杜絕一切拼音、或拼音英文混雜的命名方式。
字符集采用 UTF-8,請(qǐng)注意字符的轉(zhuǎn)換。
所有數(shù)據(jù)表第一個(gè)字段都是系統(tǒng)內(nèi)部使用主鍵列,自增字段,不可空,名稱(chēng)為:id,確保不把此字段暴露給最終用戶(hù)。
除特別說(shuō)明外,所有日期格式都采用date格式。
除特別說(shuō)明外,所有字段默認(rèn)都設(shè)置不充許為空, 需要設(shè)置默認(rèn)值。
所有普通縮影的命名都是表名加設(shè)置縮影的字段名組合,例如用戶(hù)表User中name字段設(shè)置普通所以,則縮影名稱(chēng)命名方式為user_name_index。
2.4 專(zhuān)門(mén)指導(dǎo)
對(duì)本系統(tǒng)的開(kāi)發(fā)者、使用這、測(cè)試員和維護(hù)人員,提出以下參考意見(jiàn):
在使用數(shù)據(jù)庫(kù)時(shí),首先要參考上面的約定內(nèi)容,做好軟件的安裝以及表格的建立。
數(shù)據(jù)庫(kù)的輸入統(tǒng)一采用鍵盤(pán)。對(duì)于數(shù)據(jù)庫(kù)的使用權(quán)限,請(qǐng)參考本系統(tǒng)其他相關(guān)文檔。
數(shù)據(jù)庫(kù)的后臺(tái)管理員沒(méi)用等級(jí)差異,可根據(jù)實(shí)際情況添加刪除管理員。
2.5 支持軟件
操作系統(tǒng): Linux / Windows
數(shù)據(jù)庫(kù)系統(tǒng):MySQL
查詢(xún)?yōu)g覽工具:Navicat Premium
命令行工具:mysql
注意:mysql 命令行環(huán)境下對(duì)中文支持不好,可能無(wú)法書(shū)寫(xiě)帶有中文的 SQL 語(yǔ)句。
3. 結(jié)構(gòu)設(shè)計(jì)需求3.1 概念結(jié)構(gòu)設(shè)計(jì)需求
概念數(shù)據(jù)庫(kù)的設(shè)計(jì)是進(jìn)行具體數(shù)據(jù)庫(kù)設(shè)計(jì)的第一步,概念數(shù)據(jù)庫(kù)設(shè)計(jì)的好壞直接影響到邏輯數(shù)據(jù)庫(kù)的設(shè)計(jì),影響到整個(gè)數(shù)據(jù)庫(kù)的好壞。
我們已經(jīng)得到了系統(tǒng)的數(shù)據(jù)流程圖和數(shù)據(jù)字典,現(xiàn)在就是要結(jié)合數(shù)據(jù)規(guī)范化的理論,用一種模型將用戶(hù)的數(shù)據(jù)要求明確地表示出來(lái)。
概念數(shù)據(jù)庫(kù)的設(shè)計(jì)應(yīng)該極易于轉(zhuǎn)換為邏輯數(shù)據(jù)庫(kù)模式,又容易被用戶(hù)所理解。概念數(shù)據(jù)庫(kù)設(shè)計(jì)中最主要的就是采用“實(shí)體-關(guān)系數(shù)據(jù)”模型來(lái)確定數(shù)據(jù)庫(kù)的結(jié)構(gòu)。
數(shù)據(jù)是表達(dá)信息的一種重要的量化符號(hào),是信息存在的一種重要形式。數(shù)據(jù)模型則是數(shù)據(jù)特征的一種抽象。它描述的是數(shù)據(jù)的共性,而不是描述個(gè)別的數(shù)據(jù)。一般來(lái)說(shuō),數(shù)據(jù)模型包含兩方面內(nèi)容:
數(shù)據(jù)的靜態(tài)特性:主要包括數(shù)據(jù)的基本結(jié)構(gòu)、數(shù)據(jù)間的關(guān)系和數(shù)據(jù)之間的相互約束等特性。
數(shù)據(jù)的動(dòng)態(tài)特性:主要包括對(duì)數(shù)據(jù)進(jìn)行操作的方法。
在數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)中,建立反映客觀信息的數(shù)據(jù)模型,是設(shè)計(jì)中最為重要的,也最基本的步驟之一。
數(shù)據(jù)模型是連接客觀信息世界和數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)邏輯組織的橋梁,也是數(shù)據(jù)庫(kù)設(shè)計(jì)人員與用戶(hù)之間進(jìn)行交流的共同基礎(chǔ)。概念數(shù)據(jù)庫(kù)中采用的實(shí)體-關(guān)系模型,與傳統(tǒng)的數(shù)據(jù)模型有所不同。“實(shí)體-關(guān)系”模型是面向現(xiàn)實(shí)世界,而不是面向?qū)崿F(xiàn)方法的,它主要是用使用方便,因而在數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用的設(shè)計(jì)中,得到了廣泛應(yīng)用?!皩?shí)體-關(guān)系”模型可以用來(lái)說(shuō)明數(shù)據(jù)庫(kù)中實(shí)體的等級(jí)和屬性。
以下是實(shí)體-關(guān)系模型中的重要標(biāo)識(shí):
在數(shù)據(jù)庫(kù)中存在的實(shí)體;
實(shí)體的屬性;
實(shí)體之間的關(guān)系;
3.2 邏輯結(jié)構(gòu)設(shè)計(jì)需求
項(xiàng)目結(jié)構(gòu)實(shí)體、實(shí)體屬性ER圖如下:
用戶(hù)權(quán)限實(shí)體、實(shí)體屬性ER圖如下:
進(jìn)度計(jì)劃?rùn)?quán)限實(shí)體、實(shí)體屬性ER圖如下:
3.3 物理結(jié)構(gòu)設(shè)計(jì)需求
1)定義數(shù)據(jù)庫(kù)、表及字段的命名規(guī)范:
數(shù)據(jù)庫(kù)、表及字段的命名要遵守可讀性原則。
數(shù)據(jù)庫(kù)、表及字段的命名要遵守表意性原則。
數(shù)據(jù)庫(kù)、表及字段的命名要遵守長(zhǎng)名原則。
2)選擇合適的存儲(chǔ)引擎:
3)為表中的字段選擇合適的數(shù)據(jù)類(lèi)型。
4)建立數(shù)據(jù)庫(kù)結(jié)構(gòu)
4. 運(yùn)用設(shè)計(jì)需求4.1 表名的命名規(guī)范
表名以英文單詞、單詞縮寫(xiě)、簡(jiǎn)寫(xiě)、下劃線構(gòu)成,總長(zhǎng)度要求小于30位。
4.2 表字段的命名規(guī)范
字段名以英文單詞、單詞縮寫(xiě)、簡(jiǎn)寫(xiě)、下劃線構(gòu)成,總長(zhǎng)度要求不超過(guò)30位。
字段名以名詞或名詞短語(yǔ),字段采用單數(shù)形式。若表名由多個(gè)單詞組成,則取各個(gè)單詞的縮寫(xiě)組成,單詞縮寫(xiě)間使用下劃線作為分隔。
若某個(gè)字段是引用某個(gè)表的外鍵,則字段名應(yīng)盡量與源表的字段名保持一致,一面混淆。
5.1 防止用戶(hù)直接操作數(shù)據(jù)庫(kù)的方法
通過(guò)把關(guān)鍵應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行分離,防止用戶(hù)對(duì)數(shù)據(jù)庫(kù)服務(wù)器的直接操作,保證數(shù)據(jù)庫(kù)安全。
5.2 應(yīng)用系統(tǒng)的用戶(hù)口令進(jìn)行加密
在軟件系統(tǒng)中,對(duì)于數(shù)據(jù)的保護(hù)、業(yè)務(wù)操作的許可是通過(guò)識(shí)別用戶(hù)身份和權(quán)限來(lái)完成的。用戶(hù)口令相比較,相同的話系統(tǒng)將該用戶(hù)的操作權(quán)限分配給用戶(hù),用戶(hù)再根據(jù)所分配的權(quán)限對(duì)系統(tǒng)進(jìn)行操作。
由以上過(guò)程可知,用戶(hù)口令在傳輸過(guò)程中容易被竊取泄漏,另外如果數(shù)據(jù)庫(kù)被非法進(jìn)入則其中保存的口令能夠被非法查看。因此,在傳輸過(guò)程中和數(shù)據(jù)庫(kù)中的口令記錄字段不應(yīng)使用明文傳遞和保存,應(yīng)該在口令被傳遞前對(duì)其明文口令使用有效的主流技術(shù),對(duì)傳輸數(shù)據(jù)進(jìn)行加密部分描述的加密算法進(jìn)行加密,在加密后傳輸?shù)较到y(tǒng)。系統(tǒng)將用戶(hù)提交的經(jīng)過(guò)加密的口令數(shù)據(jù)保存的加密口令進(jìn)行比較,相一致則進(jìn)行后續(xù)操作。
通過(guò)以上措施和過(guò)程,證了加密口令即使被竊取仍無(wú)法得到原始口令。
5.3 對(duì)用戶(hù)進(jìn)行權(quán)限識(shí)別和分級(jí)
在XXXXXX平臺(tái)中,不同的業(yè)務(wù)不同的人員處理,并且對(duì)于不同的操作人員其所能夠訪問(wèn)的數(shù)據(jù)是不同的。
為了保障各功能模塊的授權(quán)使用和數(shù)據(jù)不被非法訪問(wèn),系統(tǒng)劃分了不同的操作權(quán)限和數(shù)據(jù)讀寫(xiě)等級(jí)。系統(tǒng)管理人員可以方便、靈活的將這些權(quán)限登記分配給某一個(gè)或某一類(lèi)用戶(hù)。
當(dāng)用戶(hù)登陸時(shí),系統(tǒng)在用戶(hù)身份驗(yàn)證通過(guò)后取得用戶(hù)的權(quán)限,根據(jù)用戶(hù)權(quán)限顯示相應(yīng)的功能菜單。當(dāng)用戶(hù)對(duì)數(shù)據(jù)進(jìn)行讀、寫(xiě)、刪除后瀏覽操作時(shí),系統(tǒng)判斷用戶(hù)對(duì)該數(shù)據(jù)的訪問(wèn)權(quán)限確定是否允許該操作的執(zhí)行。
本文由 @臥枕江山 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。
題圖來(lái)自Unsplash,基于CC0協(xié)議
聯(lián)系客服