使用Java實現資料庫編程—01 第一章 資料庫的設計

来源:https://www.cnblogs.com/HQING/archive/2018/07/14/QINGG.html
-Advertisement-
Play Games

1、 資料庫設計:將資料庫中的數據實體及這些數據實體之間的關係進行規劃和結構化的過程; 良好的資料庫設計: 節省數據的存儲空間 能夠保證數據的完整性 方便進行資料庫應用系統的開發 糟糕的資料庫設計: 數據冗餘、存儲空間浪費 記憶體空間浪費 數據更新和插入的異常 2、 資料庫設計的步驟: 1、 需求分析 ...


 1、        資料庫設計:將資料庫中的數據實體及這些數據實體之間的關係進行規劃和結構化的過程;

  良好的資料庫設計:

       節省數據的存儲空間

       能夠保證數據的完整性

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

 糟糕的資料庫設計:

     數據冗餘、存儲空間浪費

     記憶體空間浪費

     數據更新和插入的異常

 2、        資料庫設計的步驟:

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

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

3、 詳細設計階段:將E-R圖轉換為多張表,進行邏輯設計,確認各表的主外鍵,並應用三大範式審核資料庫結構

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

5、軟體測試階段:……

6、  安裝部署:……

  3、        資料庫分析的步驟:

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

2、  標識實體Entity):標識資料庫要管理的關鍵對象或實體,實體一般是名詞,一個實體只描述一件事,不能出現含義相同的實體

3、  標識每個實體需要存儲的詳細信息;標識每個實體的屬性(Attribute),在進行實體屬性分解時,含義相同的成員信息不能重覆出現。

4、  標識實體之間的關係(Relationship):關係型資料庫有一項非常強大的功能,即它能夠關聯資料庫中各個項目的相關信息;

4、E-R圖:

符號

含義

 

實體(集),一般是名詞

 

屬性(集),一般是名詞

 

聯繫(集),一般是動詞

 

用來連接屬性和實體集,也用來連接實體集和聯繫集

(直線是可以有方向的(在末端有一個箭頭),用來表示聯繫集的映射基數)

               實體:現實世界中具有區分其他事物的特征或屬性並於其他事物有聯繫的事物;

            屬性:實體的特征;

              聯繫:兩個或多個實體之間的聯繫;

              映射基數:一對一,一對多,多對一,多對多;

              實體關係圖;

   5、關係資料庫模式:用二維表的形式表示實體和實體間聯繫的數據模型即關係模式;

                    關係資料庫模式是對關係數據結構的描述;

                                   ◆形式:R(U) 或 R(A,B) 

                                                  ★R 表示屬性集合,A,B分別表示U在中的屬性;

                                    ●E-R圖轉換為關係模式的步驟:

                                                 1. 把每個實體都轉化為關係模式R(U) 或 R(A,B)形式

                                                 2. 建立實體間聯繫的轉換;

  6、  數據規範化:

                           ●不合規範的表設計

                                         信息重覆

                                         更新異常

                                         插入異常(無法正確表示某些信息)

                                        刪除異常(丟失有效信息)

  7、使用三大範式規範資料庫表的設計:(Normal Formate)

                           ◆第一範式 (Normal Formate ,1NF):

            ★第一範式的目標是確保每列的原子性,如果每列都是不可再分的最小數據單元(也稱為最小的原子單元),則滿足第一範式(1NF);

                    ◆第二範式 (Normal Formate ,2NF):第二範式要求每個表只描述一件事情;

                              ★目標:確保表中的每列都和主鍵相關,如果一個關係滿足第一範式(2NF),並且除了主鍵以外的其他列全都依賴於該主鍵;

                   ◆第三範式 (Normal Formate ,3NF):

                               ★目標:確保每列都和主鍵直接相關聯,而不是間接相關聯,如果一個關係滿足2NF,並且除了主鍵以外的其他列都不傳遞依賴於主鍵列,列和列之間不存在相互依賴關係,則滿足第三範式(3NF);

  8、規範化和性能的關係

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

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

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

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

  9、  資料庫的完整性:資料庫完整性(Database Integrity)是指資料庫中數據在邏輯上的一致性、正確性、有效性和相容性。

       資料庫完整性由各種各樣的完整性約束來保證,因此可以說資料庫完整性設計就是資料庫完整性約束的設計。

      資料庫完整性約束可以通過DBMS或應用程式來實現,基於DBMS的完整性約束作為模式的一部分存入資料庫中。

      通過DBMS實現的資料庫完整性按照資料庫設計步驟進行設計,而由應用軟體實現的資料庫完整性則納入應用軟體設計(本文主要討論前者)。

10、資料庫完整性的作用:

                    1.資料庫完整性約束能夠防止合法用戶使用資料庫時向資料庫中添加不合語義的數據。

        2.利用基於DBMS的完整性控制機制來實現業務規則,易於定義,容易理解,而且可以降低應用程式的複雜性,提高應用程式的運行效率。同時,基於DBMS的完整性控制機制是集中管理的,因此比應用程式更容易實現資料庫的完整性。

      3.合理的資料庫完整性設計,能夠同時兼顧資料庫的完整性和系統的效能。比如裝載大量數據時,只要在裝載之前臨時使基於DBMS的資料庫完整性約束失效,此後再使其生效,就能保證既不影響數據裝載的效率又能保證資料庫的完整性。

      4.在應用軟體的功能測試中,完善的資料庫完整性有助於儘早發現應用軟體的錯誤。


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

-Advertisement-
Play Games
更多相關文章
  • MySQL5.7下麵,誤操作導致的drop table db1.tb1; 的恢復方法: 0、停業務數據寫入。【iptables封禁】 1、從備份伺服器上拉取最新的一個全備文件,恢復到一個臨時的伺服器上,解壓並啟動mysqld。 2、在這台新的slave上執行如下命令: 2.1 先配置好複製關係, c ...
  • 資料庫崩潰恢復表結構的方法 如果資料庫發生崩潰,無法登陸資料庫,想要快速恢復表結構的話有一個很方便的方法。 通過mysqlfrm工具就可以快速解析.frm文件,找到create table 語句。 安裝mysqlfrm 安裝mysqlfrm的話,需要兩個安裝包。mysql-utilities和mys ...
  • 分散式文件系統概述 相對於傳統的本地文件系統而言,分散式文件系統(Distribute File System)是一種通過網路實現文件在多台主機上進行分散式存儲的文件系統。分散式文件系統的設計一般採用“客戶/服務機”模式,客戶端以特定的通信協議通過網路與伺服器建立連接,提出文件訪問請求,客戶端和服務 ...
  • 1.為什麼要重寫SQL語句 ProxySQL在收到前端發送來的SQL語句後,可以根據已定製的規則去匹配它,匹配到了還可以去重寫這個語句,然後再路由到後端去。 什麼時候需要重寫SQL語句? 對於下麵這種簡單的讀、寫分離,當然用不上重寫SQL語句。 這樣的讀寫分離,實現起來非常簡單。如下: 但是,複雜一 ...
  • 前言 本文是個人學習SQL Server 資料庫時的以往筆記的整理,內容主要是對資料庫的基本增刪改查的SQL語句操作和約束,視圖,存儲過程,觸發器的基本瞭解。 註:內容比較基礎,適合入門者對SQL Server 資料庫的瞭解!!! 正文 1.子查詢 --把一個查詢結果作為另外一個查詢的查詢源 sel ...
  • show dbs 查看有哪些資料庫創建資料庫 : use db_test插入集合user : db.createCollection("user")插入文檔 : db.user.insert({"name":"zhangsan","age":20}) db.admin.insert({"user": ...
  • 前言 本文是個人學習SQL Server 資料庫時的以往筆記的整理,內容主要是對資料庫的基本增刪改查的SQL語句操作和約束,視圖,存儲過程,觸發器的基本瞭解。 註:內容比較基礎,適合入門者對SQL Server 資料庫的瞭解!!! 正文 1.主鍵: 主鍵的作用:保證表中的每條數據的唯一性 特點: 主 ...
  • 1、 MySQL: ● MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB公司開發,目前屬於Oracle公司。 MySQL最流行的關係型資料庫管理系統,在Web應用方面MySQL是最好的RDBMS(Relational Database Management System,關係資料庫管理系 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...