業務設計 邏輯設計及物理設計

2021-10-01 07:59:44 字數 1396 閱讀 4710

針對資料庫的邏輯設計主要是指正規化設計和反正規化設計,首先來看一下我們的正規化設計

1. 第一正規化

比如在使用者表user中,我們可以有姓名、性別、年齡…,這些都是單獨的列,不能夠把性別和年齡組合一起當成乙個列。如下:

姓名性別-年齡…張三

男-18

2. 第二正規化

比如我們訂單表中,我們一張訂單中可能有多個商品,我們將訂單id和商品id放在一起,如下:

訂單id

…商品id

20191207

…1a0001

20191207

…1a0002

因為訂單id和商品id是沒有直接關聯的,這裡我們應該將其分開,然後再新建一張中間表,主要儲存訂單和商品的對應關係表。

3. 第三正規化

比如我們在訂單中,乙個訂單可能有購買人即客戶,但是我們儲存了客戶的id,不能又儲存客戶的其他資訊,如姓名、手機號等,如下:

訂單id

…客戶id

客戶姓名

0191207

…001

張三因為乙個訂單肯定有乙個客戶,她和客戶id和客戶姓名都是有對應關係的,但是我們的客戶id和客戶姓名肯定也是對應的,這是我們想要改變乙個訂單的客戶,不僅需要改變其id,還需改變其姓名,這裡我們就應該刪除客戶姓名列。

但是我們在日常工作中,肯定也見到了很多很多和我們上述正規化也不相符的地方,因為我們如果嚴格意義上完全按照我們的正規化設計資料庫的表結構,我們會發現在我們想要查詢一些資料時,我們有時往往需要關聯n多張表,比如很多的中間關係對於的表等等,大量的表關聯就會非常非常影響查詢的效能。

所以就又有了反正規化設計,什麼叫反正規化化設計,如下:

比如我們有時就可以不用中間表來儲存其對應關係,我們可以直接將一張表的id直接作為另一張表的一列,我們也可以在表中冗餘一部分的常用資料,來避免頻繁的表關聯等情況。

正規化化設計優缺點:

優點:

缺點:

反正規化化設計優缺點

優點:

缺點:

定義資料庫、表及字段的命名規範

選擇合適的儲存引擎

在 mysql邏輯架構及儲存引擎 中我們介紹了好幾種儲存引擎,其實最常用的就是myisam和innodb,一般我們也只是在這兩種之間選擇,在選擇時,我們應該清楚業務的需求以及這兩種引擎的優缺點。

為表中的字段選擇合適的資料型別

當乙個列可以選擇多種資料型別時,我們可以按照以下的幾點進行考慮:

優先考慮數字型別

其次是日期、時間型別

最後是字元型別

對於相同級別的資料型別,應該優先選擇占用空間小的資料型別

業務邏輯設計

1.action設計 shfwpgdzlbdmanager.copy mannager裡面的相應方法 shfwpgdzlbd.getbdtpid 傳入的引數從哪獲取,型別應和mannager的方法需要的引數型別相同 2.manager設計 設計之前宣告物件 private shfwpgdzlbdda...

Trafodion表物理設計與邏輯設計問答

1 問題 primary key 與 clustering key區別?解答 primary key是為了保證記錄唯一性而設計 特殊應用中不希望按照主鍵進行排序儲存,則需要指定clustering key 單獨指定聚簇鍵使用store by語句 區別 建立表的時候指定primary key,那麼cl...

概念設計 邏輯設計 物理設計 的簡單說明

從專案中總結出來的如何寫說明書的部分.可能有人認為這個比較淺,實際上我只是說明乙個問題,就是這些說明書的概要書寫思想,因為每個公司的說明書都有自己的風格.什麼是概念設計說明書 概念設計說明書 是外部文件,是產品經理和專案經理從業務和使用者角度收集業務資訊 當前的應用環境等資訊,並從利用這些資訊獲取 ...