資料庫設計法

来源:http://www.cnblogs.com/weiguangyi/archive/2016/01/05/5103026.html
-Advertisement-
Play Games

01.簡述資料庫完整性及其作用?解析:數據的準確性,保證數據中數據的準確性。 02.基本操作語句(DML DDL DCL)有哪些?語法是?DML(data manipulation language):自動提交的資料庫操作語言它們是SELECT、UPDATE、INSERT、DELETE,就象它的名....


 

  01.簡述資料庫完整性及其作用?

解析:數據的準確性,保證數據中數據的準確性。

  02.基本操作語句(DML DDL DCL)有哪些?語法是?

DML(data manipulation language):自動提交的資料庫操作語言
它們是SELECT、UPDATE、INSERT、DELETE,就象它的名字一樣

DDL(data definition language):自動提交的資料庫定義語言
主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定義或改變表(TABLE)的結構,數據類型,表之間的鏈接和約束等初始化工作上,他們大多在建立表時使用

DCL(Data Control Language):
是資料庫控制功能。是用來設置或更改資料庫用戶或角色許可權的語句,包括(grant,deny,revoke等)語句。在預設狀態下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人員才有權力執行DCL

DQL:資料庫查詢語言,關鍵字:select

Insert、update、delete、select

這裡以student表為例:

Insert into student(name,age) values(‘張三’,18)

Update student set name=’ 李四’ where id=1

Delete from student where id=2

見到update和delete,必須有where

Select * from student where id=1

  03.常用的聚合函數有哪些?

Avg():求平均值

Sum():求和

Max();求最大值

Min():求最小值

Count():求總的記錄數,count(1)和count(*)等價,一般認為count(1)效率高。

  04.表聯接分為哪幾種類型?

內連接,外連接和交叉聯接(資料庫原理)

三、 資料庫

1. 為什麼要設計資料庫?

首先,良好的資料庫設計:

01. 可以節省數據的存儲空間

02. 能夠保證數據的完整性

03. 方便進行資料庫應用系統的開發

糟糕的資料庫設計:

01. 數據冗餘、存儲空間浪費

02. 記憶體空間浪費

03. 數據更新和插入的異常

由此,我們得出一個結論,當資料庫比較複雜時,我們需要設計資料庫

2. 軟體項目開發周期中資料庫設計

wpsC9F4.tmp

從上圖我們可以看出,軟體開發中設計資料庫的步驟:

首先,我們要從現實世界的需求構建出一個模型,這種模型通過E——R圖的方式反映,如果確定E——R滿足了客戶的需求,那麼我們需要將E-R圖規範化,構建出資料庫模型圖,當然在這個圖表中要反映出各個數據對象之間的關係,最後我們根據資料庫模型圖構建出符合我們需求的資料庫。

     需求分析階段:分析客戶的業務和數據處理需求

概要設計階段:設計資料庫的E-R模型圖,確認需求信息的正確和完整

詳細設計階段:應用三大範式審核資料庫結構

代碼編寫階段:物理實現資料庫,編碼實現應用

軟體測試階段:……

安裝部署:……

3. 設計資料庫的步驟

01. 收集信息

與該系統有關的人員進行交流,座談,充分瞭解用戶需求,理解資料庫需要完成的任務。

02. 標識實體(Entity)

標識資料庫要管理的關鍵對象或者實體,實體一般都是名詞

03. 標識每個實體的屬性

04. 標識實體之間的關係

4.E—R圖

wpsCA04.tmp

映射基數:

主要分為以下幾類:

一對一:一輛車只能對應一個車位

一對多:一個客房可以入住多個客人

多對一:多個客人可以入住一個客房

多對多:一本書可以被多個人接,一個人也可以借多本書

        或者是一個老師可以教多個班級,一個班級可以被多個老師教

一個關係的屬性名的集合稱為關係模式

Rdbms:

relational database management system 關係型資料庫管理系統

01. 僅有好的RDBMS並不足以避免數據冗餘,必須在數據的設計中創建好的表結構

02. Dr  E.F.codd,一個IBM研究員。最初定義了規範化的三個級別,範式是具有最小冗餘的表結構

03. 這些範式是:

第一範式(1ST NF—First  Normal   Form)

第一範式的目標是確保每列的原子性

如果沒列都是不可再分的最小單元(也稱為最小的原子單元),則滿足第一範式(1nf)

第二範式(2nd NF—Second  Normal  Form)

如果一個關係滿足1NF,並且除了主鍵以外的其他列,都依賴於該主鍵,則滿足第二範式(2NF),第二範式要求每個表只描述一件事情。

第三範式(3rd NF—Third  Normal  Form)

如果一個關係滿足2NF,並且除了主鍵以外的其他列都不傳遞依賴於主鍵列,則滿足第三範式(3NF)

今天總算理解清楚了一點,:

第二範式是其他列都要依賴於主鍵列,但是沒有說明是直接依賴還是間接依賴。也就是直接依賴和間接依賴均可以。但是第三範式明確指出只能是直接依賴。

如果出現間接依賴的情況,要單獨獨立出來一張表.

5,規範化和性能的關係

為滿足某種商業目標,資料庫性能比規範化資料庫更重要

  具體策略和方法:

01. 通過在給定的表中添加額外欄位,以大量減少需要從中搜索信息所需的時間

02. 通過在給定的表中插入計算列(比如成績總分),以方便查詢

        在數據規範化同時,要綜合考慮資料庫的性能。

  05.設計資料庫步驟

第一步:需求分析(收集信息)

第二步:繪製E-R圖 (標示實體 ,找到實體的屬性 , 標註實體間的關係)

第三步:將E-R圖轉換成資料庫模型圖

第四步:將資料庫模型圖轉換成數據表

  06.如何繪製E-R圖

  矩形;實體

  橢圓形:屬性

  菱形:關係

  07.如何繪製資料庫模型圖

PowerDesigner :選擇PhysicalModel

如有有人不小心關掉了Platter,對工具欄點擊右鍵,勾選Platter即可。

當我們將資料庫模型圖設計完畢後,可以通過菜單中的database下的

Generate Database來生成對應的sql

  08.三大範式規範資料庫設計

第一範式:保證每列的原子性,不可再被拆分

第二範式:在滿足第一範式的基礎上,一張表只能描述一件事情

第三範式:在滿足第二範式的基礎上,除了主鍵列之外其他列都要直接依賴於主鍵

要在規範化和性能之間取一個平衡

四、 課程總結

01. 在需求分析階段,設計資料庫的一般步驟是什麼?

收集信息

標識實體

標識每個實體的屬性

標識實體之間的關係

02. 在概要設計階段和詳細設計階段,設計資料庫的步驟是什麼?

繪製E——R圖

將E—R圖轉化為資料庫模型圖

應用三大範式規範化表設計

03. 為了設計結構良好的資料庫,需要遵守一些專門的規則,稱為資料庫的設計範式,分別是什麼?

三大範式的例子:

wpsCA15.tmp     

                

        挺辛苦的,好好看吧!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 經常有這樣的需求,我們在Windows下載的軟體包,如何上傳到遠程Linux主機上?還有如何從Linux主機下載軟體包到Windows下;之前我的做法現在看來好笨好繁瑣,不過也達到了目的,笨人有本方法嘛;我是怎麼操作的:1、打開一臺本地Linux虛擬機,使用mount 掛載Windows的共用文件夾...
  • Having--對分組信息進行過濾,因為分組之後的信息和原來的表信息沒有關係了,Having可以用的之後,出現在Group子句中的列,還有聚合函數 SELECT s_Age ,COUNT(s_ID)FROM dbo.Student GROUP BY s_Age--正確的 SELECT s_Age ,...
  • Group By:對數據進行分組,分組之後的數據就是“分組信息”,和原來表的信息,就沒有聯繫了,分組之後,可以取到分組數據,就是根據什麼欄位分組,就能取到欄位的名字了。還能使用聚合函數。Group By和Order By都是要放在Where語句之後,Group By和Order By都是對篩選後的數...
  • Innotop是一款十分強大的MySQL監控工具,用perl所寫,通過文本模式展示MysQL伺服器和Innodb的運行狀況。安裝innotop下載地址:https://github.com/innotop/innotopGithub上提供兩種版本,一種是開發版(innotop-master),一種是...
  • 1.資料庫設計的步驟第一步:需求分析(收集信息)第二步:繪製 E-R 圖 (標示實體 ,找到實體的屬性第三步:將 E-R 圖轉換成資料庫模型圖第四步:將資料庫模型圖轉換成數據表2.如何繪製 E-R 圖矩形:實體橢圓形:屬性菱形:關係3.如何繪製資料庫模型圖PowerDesigner :選擇 Phys...
  • 外鍵的使用大家都不陌生,是我們用於保持數據引用完整性的作用~辣今天我就分享一下外鍵的一些限制。1、外鍵引用的是需要其它表的主鍵,或者候選鍵。(這個比較好理解,就不寫代碼了╮(╯_╰)╭)2、外鍵創建之後並不會自動創建索引,這個是有開發人員自己考慮在外鍵上建相關索引是否能獲取到查詢效率上的提升3、預設...
  • 好吧,我確實不知道該怎麼起這個標題,整了一個“分佈”,感覺還有點高檔,其實沒啥技術含量,看完你就知道了。情況是這樣,剛剛接到一個臨時任務,需要讓幾個營業點的銷售數據【變】少一點,就是在ERP的相關報表中,查詢出來的數據要在指定區間,說白了就是那什麼~你懂的,某些同行應該對這種任務很熟悉了,而有些同行...
  • update aset a.StepCode=b.StepCode,a.StepName=b.StepName,a.allowtime=b.allowtime,a.ActionTypeID=b.ActionTypeID,a.YesStep=b.YesStep,a.NoStep=b.NoStep,a....
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...