使用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
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...