https://blog.csdn.net/weixin_42476601/article/details/84261992
1. 什么是數據字典
數據字典存儲有關數據的來源、說明、與其他數據的關系、用途和格式等信息,它本身就
是一個數據庫,存儲“關于數據項的數據”。數據字典是個指南,它為數據庫提供了“路線圖”,
而不是“原始數據”。換句話說,數據字典通常是指數據庫中數據定義的一種記錄,類似一個
數據庫的數據結構,但其內容要比數據庫的數據結構描述豐富得多(Malamud, 1989)。
在收集有關數據信息,建立數據庫的初始階段,必須建立數據項的命名約定,必須統一不同部
門、不同個人之間對共同關心的數據的內涵、來源和命名的觀念。這個過程要涉及數據監管人、
用戶和數據庫開發人員,是一個需要反復多次的過程。這個統一的命名約定,及其附帶的說明,
就是數據字典。
數據庫的重要部分是數據字典。它存放有數據庫所用的有關信息,對用戶來說是一組只讀的表。
數據庫數據字典是一組表和視圖結構。它們存放在SYSTEM表空間中。
2. 建立數據字典的目的
建立數據字典有以下幾個目的:
1)提高開發效率,降低研制成本。數據字典是數據庫開發者、數據監管人和用戶之間的共同
約定,是系統說明書的一個重要組成部分。一個統一的數據字典有助于開發者建立數據模型
以及程序和數據庫之間的數據轉換接口,為規范化設計和實施數據管理系統鋪平了道路。
2)促進數據共享,提高數據的使用效率。通過數據字典,用戶可以方便地知道每項數據的意
義,了解數據的來源和使用方法,從而幫助用戶迅速地找到所需的信息,并按照正確的方法
使用數據。
3)控制數據的使用。在某些特定的場合,可以通過對數據字典的控制達到控制數據使用的目的。
3. 數據字典的內容(了解)
一個完整的數據字典至少應當包括以下內容:
數據集(系統)名稱 數據集(系統)的正式名稱
數據庫名稱 數據庫文件的名稱
數據名稱 數據項的名稱
數據存儲名稱 數據字段的名稱
數據類型 數據的類型,如數字類型等
數據說明 關于數據含義的說明
數據存儲長度 在計算機中數據存儲的空間,用字節(BYTE)表示
單位 數據的測量單位
代碼說明 使用的代碼體系及編碼規則
精密度 有效數字最低位數的位置
準確度 有效數字位數
數據的下限 數據合理的下限
數據的上限 數據合理的上限
獲得數據的手段 數據測量的方法或引用的來源
時間和/或環境 獲得數據的時間和/或環境
數據的例子 一個數據的實例
備注 其他要補充的說明
4. 數據字典的建立過程(了解)
建立數據庫管理系統的第一步是用戶需求分析。通過系統開發人員和未來用戶的相互交
流,用戶需求分析的結果被反映在《系統功能說明書》里。《系統功能說明書》詳細地列
出原始數據的內容、格式和來源,并且對數據處理的過程給出詳細的描述。數據處理后產
出的信息應當滿足最終用戶的信息需求。這個說明書只說明擬建立的系統的功能和處理能
力,而不討論怎樣用硬件、軟件、網絡以及設備之間的連接等具體手段實現這些功能。
在這個過程中,開發人員要和不同的用戶部門進行多次的討論,可能還要征求有關的
同行業專家的意見,找到不同部門之間對數據的用途、相互關系和意義的不同理解,辨認
出數據元的同義詞。對于輸出數據,一方面要考慮現有數據的狀況、測量手段和數據處理
手段,另一方面還應當考慮用戶對產出信息的要求,如有必要,需要對數據獲取和處理的
手段進行調整。
在用戶需求分析階段,對原始數據和產出數據進行描述時,不必注意數據在計算機中的
具體的存儲方式和數據處理的系統。但隨著設計過程的進展,必須將數據的概念和邏輯與
數據模型和實際的實現方式聯系起來。這時,數據在系統中的標識符(數據項或字段名稱)
、存儲類型(數據項或字段類型)和存儲空間(數據項或字段長度)就必須確定下來,
以達到數據輸入、存儲、顯示、交換和處理等功能模塊的需要。
在設計階段結束時,把系統輸入和輸出數據的說明和存儲信息集中起來,使有關人員
在進行涉及這些數據的工作時,有一個統一的概念和理解,這樣就形成了數據字典。
在系統完成之前,數據字典幫助系統開發人員理解真實世界,規范數據系統內數據處理
的過程,使系統分析員、系統程序員、應用程序員和數據監管人員之間有共同的語言;在
系統完成以后,數據字典幫助用戶理解數據系統的功能,各項輸入輸出數據的意義,使用
戶、數據監管人和審計人員有共同語言,促進數據的使用和流通,達到數據共享的目的。
數據字典的用例:(理解: 數據字典中的數據是管理員設計好,填寫的,一般不會更改的數據,根據類型歸類,并同一類型的typeCode相同,同一類型有包含不同的valueId,即對應不同的valeName,可以理解為歸類typeCode和valueId的對應表,可以根據需要查出對應type的對應value)
1 數據字典
1.1 什么是數據字典
將如下這些具有相同類型的配置項,配置到系統的數據字典表中,方便系統維護,由超級管理員統一在后臺進行數據字典維護,如果用戶需求要增加變更配置項,只需要修改數據字典表記錄即可,不需要修改代碼。
1.2 數據字典需求
相同類型的配置項:(例如:醫院類型、藥品類型)
在系統中創建一個張記錄數據字典名稱類型 數據字典類型表記錄數據類型(例如用戶狀態)
創建一張表記錄數據字典明細:(例如用戶狀態為正常 暫停)
數據字典明細表
將上邊變化靈活的配置項叫做:“普通配置項”
將上邊固定的配置項(每個配置頂都有一個代碼):“業務代碼”
1.3 數據字典表結構
字典類型表DICTTYPE:
記錄數據字典類型
字典明細表DICTINFO:
記錄數據字典明細
字典明表中如何存儲普通配置項和業務代碼。
普通配置項存儲:
普通配置項名稱存儲在DICTINFO表中info字段
普通配置項對應的類型id存儲在DICTINFO表中TYPECODE
查詢普通配置頂:
業務代碼存儲:
業務代碼對應的名稱存儲在DICTINFO表中info字段
業務代碼對應的類型id存儲在DICTINFO表中TYPECODE
業務代碼存儲在DICTINFO表中DICTCODE(是和普通配置頂的區別)
業務代碼查詢:
1.4 數據字典使用
1、在頁面上的下拉框中顯示業務代碼或普通配置
比如:在系統用戶查詢頁面,查詢條件就是用戶類型,用戶類型不能在jsp上硬編碼,需要在action方法中取出用戶類型所有配置項,在jsp頁面動態遍歷。
2、在查詢業務表需要關聯查詢出業務代碼對應的名稱
在查詢業務表時,根據業務代碼,關聯查詢出代碼對應的名稱。
關聯查詢字典明細時指定業務代碼和類型id
3、在查詢業務表需要關聯查詢出普通配置項所對應的名稱
關聯查詢字典明細時指定明細表的主鍵
1.5 小結
普通配置項:對業務數據進行簡單的歸類,這些歸類受用戶要求變化較靈活,將這些配置項作普通配置項配置數據字典表。
業務代碼:系統運行所必須的,在系統設計時定義的固定代碼,這些代碼可能需要在程序代碼進行硬編碼。
1.6 數據字典在系統中應用
1.6.1 用戶查詢頁面用戶類型下拉框
用戶類型:屬于業務代碼
獲取用戶類型下所有明細:
從數據字典明細表查詢,根據typecode查詢
Action:
修改用戶查詢頁面方法,調用systemConfigService查詢用戶類型信息,將用戶類型列表信息傳入頁面。
// 用戶查詢頁面
@RequestMapping("/queryuser")
public String queryuser(Modelmodel) throwsException {
// 將頁面所需的數據取出傳入頁面
List<Dictinfo>groupList =systemConfigService.findDictinfoByType("s01");
model.addAttribute("groupList",groupList);
return "/base/user/queryuser";
}
頁面:
將用戶類型下拉框值,改成遍歷groupList列表。
<TD class="left">用戶類型:</TD>
<td><select name="sysuserCustom.groupid">
<option value="">請選擇</option>
<!-- <option value="1">衛生局</option>
<optionvalue="2">衛生院</option>
<optionvalue="3">衛生室</option>
<optionvalue="4">供貨商</option>
<optionvalue="0">系統管理員</option> -->
<c:forEach items='${groupList}' var="dictinfo">
<option value="${dictinfo.dictcode}">${dictinfo.info}</option>
</c:forEach>
</select>
</TD>
1.6.2 用戶查詢列表中用戶類型列
Dao:
修改用戶查詢列表mapper,添加一列需要關聯用戶類型的代碼查詢代碼對應的名稱。
頁面:
修改datagrid的列定義,
{
field : 'groupname',//對應json中的key
title : '用戶類型',
width : 120,
/* formatter : function(value, row,index) {//通過此方法格式化顯示內容,value表示從json中取出該單元格的值,row表示這一行的數據,是一個對象,index:行的序號
if(value =='1'){
return "衛生局";
}else if(value =='2'){
return "衛生院";
}else if(value =='3'){
return "衛生室";
}else if(value =='4'){
return "供貨商";
}else if(value =='0'){
return "系統管理員";
}
} */
}
普通配置項下拉框
查詢出普通配置項列表,
頁面中下拉框遍歷list(option的value是${dictinfo.id})
<c:forEach items="${list}" var="dictinfo">
<option value="${dictinfo.id }">${dictinfo.info}</option>
</c:forEach>
————————————————
版權聲明:本文為CSDN博主「越來越好ing」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42476601/article/details/84261992
- 空白目錄1
- RBAC
- RBAC權限模型[完整]
- 你知道權限管理的RBAC模型嗎?
- rbac 一個用戶對應多個賬號_如何設計一個強大的權限系統
- Postman 快速使用(設置環境變量)
- postman的使用方法詳解!最全面的教程
- Postman常用的幾個功能
- ThinkPHP項目總結
- thinkphp5 遞歸查詢所有子代,查詢上級,并且獲取層級
- PHP原生項目之留言板
- 智慧校園
- PHP如何實現訂單的延時處理詳解
- VUE
- const {data:res} = await login(this.loginForm)
- Vue中的async和await的使用
- PHP實現消息推送(定時輪詢)
- tp5 計算兩個日期之間相差的天數
- 使用jquery的ajax方法獲取下拉列表值
- jQuery實現select下拉框選中數據觸發事件
- SetFocus 方法
- 快來了解下TP6中的超級函數app()!
- PHP socket 服務器框架 workerman
- 程序員如何才能成為獨立開發者?
- PHP 錯誤處理
- php面向對象類中的$this,static,final,const,self及雙冒號 :: 這幾個關鍵字使用方法。
- 小白教你玩轉php的閉包
- 關于TP6項目搭建的坑(多應用模式)
- ThinkPHP6.0 與5.0的差別及坑點
- axios在vue項目中的使用實例詳解
- php中的類、對象、方法是指什么
- 聊一聊PHP的依賴注入(DI) 和 控制反轉(IoC)
- 深入理解控制反轉(IoC)和依賴注入(DI)
- Private,Public,Protected
- ThinkPHP5(目錄,路徑,模式設置,命名空間)
- 在 ThinkPHP6 中使用 Workerman
- 介紹thinkphp lock鎖的使用和例子
- php中_initialize()函數與 __construct()函數的區別說明
- api接口數據-驗證-整理
- api接口數據-驗證-整理【續】
- TP6容易踩得坑【原創】
- TP6的日志怎么能記錄詳細的日志?
- 是否需要模型分層
- PHP面試題 全網最硬核面試題來了 2021年學習面試跳槽必備(一)
- MySQL單表數據量過千萬,采坑優化記錄,完美解決方案
- MySql表分區(根據時間timestamp)
- MySQL大表優化方案
- 閑言碎語
- 數據庫外鍵的使用
- 深入理解thinkphp、laravel等框架中容器概念
- vue做前端,thinkphp6做后臺,項目部署
- 簡單MVC架構的PHP留言本
- TP5里面extend和vendor的區別
- 在mysql數據庫中制作千萬級測試表
- MySQL千萬級的大表要怎么優化
- ThinkPHP關聯模型操作實例分析
- lcobucci/jwt —— 一個輕松生成jwt token的插件
- RESTful API 設計指南
- MySQL如何為表字段添加索引
- ThinkPHP6.0快速開發手冊(案例版)
- tp5 靜態方法和普通方法的區別
- 數據字典功能
- mysql中的數據庫ID主鍵的設置問題
- 基于角色的權限控制(django內置auth體系)
- RBAC系統經典五張表
- 什么是接口文檔,如何寫接口,有什么規范?
- thinkphp5.0自定義驗證器