【數據庫系統概論】數據庫設計

7.1 數據庫設計概述

定義

數據庫設計是指對于一個給定的應用環境,構造(設計) 優化的 數據庫模式、內模式和外模式,并據此建立數據庫及其 應用系統 ,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括 信息管理要求 數據操作要求 信息管理要求 :在數據庫中應該存儲和管理哪些數據對象 。
數據操作要求 :對數據對象需要進行哪些操作,如查詢、增、 刪、改、統計等操作。

數據庫設計的目標

為用戶和各種應用系統提供 信息基礎設施和高效的運行環 。其中,高效的運行環境指數據庫數據的 高存取效率 、數據庫存儲空間的 高利用率 和數據庫系統運行維護的 高效率

數據庫設計分6個階段
需求分析
概念結構設計
邏輯結構設計
物理結構設計
數據庫實施
數據庫運行和維護
需求分析和概念設計 獨立于任何數據庫
管理系統
邏輯設計和物理設計 與選用的數據庫管
理系統密切相

7.2 需求分析

需求分析就是分析用戶的要求
是設計數據庫的起點
結果是否準確地反映了用戶的實際要求,將直接影響到后面各
個階段的設計,并影響到設計結果是否合理和實用
需求分析的任務
詳細調查現實世界要處理的對象(組織、部門、企業等)
充分了解原系統(手工系統或計算機系統)工作概況
明確用戶的各種需求
在此基礎上確定新系統的功能
新系統必須充分考慮今后可能的擴充和改變
調查的重點是“數據”和“處理”,獲得用戶對數據庫的要求
(1)信息要求
(2)處理要求
(3)安全性與完整性要求
確定用戶最終需求的難點
? 用戶缺少計算機知識,不能準確地表達自己的需求,他們所提出的需求往往不
斷地變化。
? 設計人員缺少用戶的專業知識,不易理解用戶的真正需求,甚至誤解用戶的需
解決方法
設計人員必須不斷深入地與用戶進行交流,才能逐步確定用戶的實際需求

7.3 概念結構設計

概念模型的工具: E-R模型
實體之間的聯系
兩個實體型之間的聯系:
①一對一聯系(1∶1)
②一對多聯系(1∶ n
③多對多聯系( m n
聯系的度: 參與聯系的實體型的數目
2個實體型之間的聯系度為2,也稱為二元聯系;
3個實體型之間的聯系度為3,稱為三元聯系;
N個實體型之間的聯系度為N,也稱為N元聯系
E-R圖 提供了表示實體型、屬性和聯系的方法
實體型:用 矩形 表示,矩形框內寫明實體名。
屬性:用 橢圓形 表示,并用無向邊將其與相應的實體型連接起來。
聯系:用 菱形 表示,菱形框內寫明聯系名,并用無向邊分別與有關實體型連接起來,同時在無向邊旁標上聯系的類型(1∶1, 1∶n m n )。
聯系可以具有屬性
為了簡化E-R圖的處置,現實世界的事物能作為屬性對待的,盡量
作為屬性對待。
兩條準則:
(1) 作為屬性,不能再具有需要描述的性質。 屬性必須是不可分
的數據項,不能包含其他屬性。
(2) 屬性不能與其他實體具有聯系,即E-R圖中所表示的聯系是
實體之間的聯系
E-R圖的集成一般需要分兩步
合并。 解決各分E-R圖之間的沖突,將分E-R圖合并起來生
成初步E-R圖。
修改和重構。 消除不必要的冗余,生成基本E-R圖。
(1)合并E-R圖,生成初步E-R圖
各個局部應用所面向的問題不同,各個子系統的E-R圖之間
必定會存在許多不一致的地方,稱之為 沖突
子系統E-R圖之間的沖突主要有三類:
①屬性沖突
②命名沖突
③結構沖突
(2)消除不必要的冗余,設計基本E-R圖
所謂 冗余的數據 是指可由 基本數據 導出的數據,冗余的聯系是指
可由其他聯系導出的聯系。
消除冗余主要 采用分析方法 ,即以數據字典和數據流圖為依據,
根據數據字典中關于數據項之間邏輯關系的說明來消除冗余。
規范化理論 來消除冗余
①確定分E-R圖實體之間的數據依賴。
實體之間一對一、一對多、多對多的聯系可以用實體碼之間的函數依
賴來表示。于是有函數依賴集F L
? E-R圖的集成
.3 概念結構設計
②求FL的最小覆蓋GL,差集為 D=FL-GL。
逐一考察D中的函數依賴,確定是否是冗余的聯系,若是,就把它去掉

7.4 邏輯結構設計

任務

把概念結構設計階段設計好的 基本E-R圖轉換為與選用數據庫管理
系統產品所支持的數據模型相符合的邏輯結構。
轉換內容:
E-R圖由實體型、實體的屬性和實體型之間的聯系三個要素組成
關系模型的邏輯結構是一組關系模式的集合
? 將E-R圖轉換為關系模型: 將實體型、實體的屬性和實體型之間的
聯系轉化為關系模式
實體集的轉換
1:1二元聯系的轉換
在某關系模式的屬性中加入另一個關系模式的碼和聯系本身的屬性
1:n二元聯系的轉換
可以轉換為一個獨立的關系模式。也可以與n端對應的關系模式S合并。即在關系模式S中加入聯 系本身的屬性和另一端實體的主碼,且該主碼作為S的外碼。
m:n二元聯系的轉換
轉換為一個新的關系模式S。把與該聯系相連的實體集的主碼以及聯系本身的屬性作為關系S的屬
性,各實體集的碼組合作為關系S的主碼或者主碼的一部分,且各實體集的主碼為關系S的外碼。
(4)三個或三個以上實體間的一個多元聯系轉換為一個關系模式。
關系的屬性:與該多元聯系相連的各實體的碼以及聯系本身的屬性
關系的碼:各實體碼的組合
(5)具有相同碼的關系模式可合并
減少系統中的關系個數
方法:
將其中一個關系模式的全部屬性加入到另一個關系模式中
然后去掉其中的同義屬性(可能同名也可能不同名)
適當調整屬性的次序

數據模型的優化: 數據庫邏輯設計的結果不是唯一的,得到初步數據
模型后,還應該適當地修改、調整數據模型的結構,以進一步提高數
據庫應用系統的性能。
關系數據模型的優化通常以 規范化理論 為指導。
(1)確定 數據依賴
? 按需求分析階段所得到的語義,分別寫出每個關系模式內部各屬性之間的
數據依賴以及不同關系模式屬性之間數據依賴。
(2)對于各個關系模式之間的數據依賴進行 極小化處理 ,消除冗余的聯系。
(3)按照 數據依賴的理論對關系模式 進行分析,考察是否存在部分函數依賴、
傳遞函數依賴、多值依賴等,確定各關系模式分別屬于第幾范式。
(4)按照需求分析階段得到的各種應用對數據處理的要求, 分析對于這樣的應
用環境這些模式是否合適 ,確定是否要對它們進行合并或分解。
7.4 邏輯結構設計
數據模型的優化方法
(5)對 關系模式進行必要分解 ,提高數據操作效率和存儲空間的利用率。
? 常用分解方法: 水平分解、垂直分解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70513.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70513.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70513.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Element UI日期選擇器默認顯示1970年解決方案

目錄 問題背景 問題根源 1. 數據綁定類型錯誤 2. 初始化邏輯錯誤 解決方案 核心思路 步驟 1:正確初始化日期對象 步驟 2:處理數據交互 步驟 3:處理年份切換事件 完整代碼示例 注意事項 1. 時區問題 2. 格式化綁定值 常見問題 1. 為什…

kafka-保姆級配置說明(producer)

配置說明的最后一部分; ##指定kafka集群的列表,以“,”分割,格式:“host:port,host:port” ##此列表用于producer(consumer)初始化連接使用,server列表可以為kafka集群的子集 ##通過此servers列…

.NET周刊【2月第2期 2025-02-09】

國內文章 開箱即用的.NET MAUI組件庫 V-Control 發布了! https://www.cnblogs.com/jevonsflash/p/18701494 文章介紹了V-Control,一個適用于.NET MAUI的組件庫。作者計劃將其開源,強調.NET MAUI是生產力強的跨平臺移動開發工具。V-Control提供多種組件…

PHP2(WEB)

##解題思路 打開頁面什么線索都沒有,目錄掃描只是掃出來一個index.php,而源代碼沒有東西,且/robots.txt是不允許訪問的 于是一番查詢后發現,有個index.phps的文件路徑,里頭寫著一段php的邏輯,對url的id參數…

VisActor/VTable - 快速搭建表格

VTable源于VisActor體系,該體系是從字節跳動大量可視化場景沉淀而來,旨在提供面向敘事的智能可視化解決方案。VisActor包括渲染引擎、可視化語法、數據分析組件、圖表組件、表格組件、GIS組件、圖可視化組件、智能組件等多個模塊,以及周邊生態…

c++第一課(基礎c)

目錄 1.開場白 2.char(字符) 3.字符數組 4.ASCII碼 1.開場白 OK,咱們也是億(不是作者故意的)天沒見,話不多說,直接開始! 2.char(字符) 眾所不周知&…

2025年02月21日Github流行趨勢

項目名稱:source-sdk-2013 項目地址url:https://github.com/ValveSoftware/source-sdk-2013項目語言:C歷史star數:7343今日star數:929項目維護者:JoeLudwig, jorgenpt, narendraumate, sortie, alanedwarde…

【簡單】209.長度最小的子數組

題目描述 給定一個含有 n 個正整數的數組和一個正整數 target 。 找出該數組中滿足其總和大于等于 target 的長度最小的 子數組 [numsl, numsl1, …, numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數組,返回0。 示例 1: 輸入&am…

【STM32】內存管理

【STM32】內存管理 文章目錄 【STM32】內存管理1、內存管理簡介疑問:為啥不用標準的 C 庫自帶的內存管理算法?2、分塊式內存管理(掌握)分配方向分配原理釋放原理分塊內存管理 管理內存情況 3、內存管理使用(掌握&#…

Linux 命令大全完整版(14)

5. 文件管理命令 chgrp(change group) 功能說明&#xff1a;變更文件或目錄的所屬群組。語  法&#xff1a;chgrp [-cfhRv][–help][–version][所屬群組][文件或目錄…] 或 chgrp [-cfhRv][–help][–version][–reference<參考文件或目錄>][文件或目錄…]補充說明&…

[數據結構]順序表詳解

目錄 一.線性表 二.順序表 2.1概念及結構 1. 靜態順序表&#xff1a;使用定長數組存儲元素。 2. 動態順序表&#xff1a;使用動態開辟的數組存儲。 2.1按需申請 2.2 接口實現&#xff1a;增刪查改 SeqList.h: SeqList.c: test.c 一.線性表 線性表 &#xff08; line…

綫性與非綫性泛函分析與應用_2.賦范向量空間-母本

第2章 賦范向量空間 1.向量空間;哈默爾基;向量空間的維數 - 定義與性質 - 向量空間的定義:設\mathbb{K}為數域,集合X是\mathbb{K}上的向量空間,若在X上定義了加法(x,y)\in X\times X\to x + y\in X和數乘(\alpha,x)\in\mathbb{K}\times X\to\alpha x\in X兩種運算,且滿足…

2025年- G17-Lc91-409.最長回文-java版

1.題目描述 2.思路 思路1: 判斷一個字符串中的字母個數是否是偶數個。 遍歷字符串&#xff0c;檢查每個字符是否是字母&#xff08;可以通過 Character.isLetter() 來判斷&#xff09;。 累加字母的個數。 最后判斷字母的個數是否是偶數。 思路2: 這段 Java 代碼的作用是 統…

SpringBoot+Mybatis-Plus實現動態數據源

目錄 一、前言二、代碼實現1&#xff09;工程結構2&#xff09;相關依賴3&#xff09;數據源攔截切面4&#xff09;動態數據源切換5&#xff09;核心配置類6&#xff09;使用 三、原理分析1&#xff09;mapper接口注入流程2&#xff09;動態數據源切換執行流程 四、聲明式事務導…

玩轉 Java 與 Python 交互,JEP 庫來助力

文章目錄 玩轉 Java 與 Python 交互&#xff0c;JEP 庫來助力一、背景介紹二、JEP 庫是什么&#xff1f;三、如何安裝 JEP 庫&#xff1f;四、JEP 庫的簡單使用方法五、JEP 庫的實際應用場景場景 1&#xff1a;數據處理場景 2&#xff1a;機器學習場景 3&#xff1a;科學計算場…

Qt常用控件之日歷QCalendarWidget

日歷QCalendarWidget QCalendarWidget 是一個日歷控件。 QCalendarWidget屬性 屬性說明selectDate當前選中日期。minimumDate最小日期。maximumDate最大日期。firstDayOfWeek設置每周的第一天是周幾&#xff08;影響日歷的第一列是周幾&#xff09;。gridVisible是否顯示日歷…

三數之和:經典問題的多種優化策略

三數之和&#xff1a;經典問題的多種優化策略 大家好&#xff0c;我是Echo_Wish。今天我們來聊一個經典的算法問題——三數之和&#xff08;3Sum&#xff09;。它是許多面試和算法競賽中常見的問題之一&#xff0c;也常常考察我們對算法優化的理解和技巧。我們不僅要解決問題&…

Go 語言中的協程

概念 Go語言中的協程&#xff08;Goroutine&#xff09;是一種由Go運行時管理的輕量級線程。它是Go語言并發模型的核心&#xff0c;旨在通過簡單、易用的方式支持高并發的程序設計。 創建協程 協程的創建非常簡單&#xff0c;只需要使用go關鍵字&#xff0c;后面跟著一個函數…

JAVA最新版本詳細安裝教程(附安裝包)

目錄 文章自述 一、JAVA下載 二、JAVA安裝 1.首先在D盤創建【java/jdk-23】文件夾 2.把下載的壓縮包移動到【jdk-23】文件夾內&#xff0c;右鍵點擊【解壓到當前文件夾】 3.如圖解壓會有【jdk-23.0.1】文件 4.右鍵桌面此電腦&#xff0c;點擊【屬性】 5.下滑滾動條&…

基于javaweb的SpringBoot個人博客系統設計和實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論…