Navicat 部落格

永遠不應該在資料庫中儲存的三類資料 2024 年 1 月 19 日,由 Robert Gravelle 撰寫

在數位時代,資料庫在管理和組織各種應用程式和系統的資訊方面扮演著重要的角色。如要保護寶貴資料,企業和開發人員必須謹慎選擇儲存在資料庫中的資訊類型。儘管資料庫旨在高效處理資料,但某些類型的資訊是絕對不應該儲存在資料庫中。在本文中,我們將探討你應該避免儲存在資料庫中的三類資料,以維護資料的完整性、安全性和符合性。

1. 重複和多餘的資料

在資料庫中儲存重複或多餘的資料乍看之下似乎無害,但長遠而言它可能會引發一連串問題。重複的資料不僅會浪費儲存空間,而且還會引起不一致和錯誤的風險。當資訊在多個記錄之間重複出現時,更新其中一個可能會被忽略,並導致其他資料的不一致,進而損害資料的準確性。

為了解決這個問題,設計資料庫時應該根據正規化原則。正規化涉及資料的組織,將重複和相依性降至最低,確保每個資訊只儲存在一個位置。這樣做不僅能最佳化儲存空間,還增強了資料的一致性和完整性。

2. 信用卡資訊

在線上交易和電子商務方面,保護財務資訊至關重要。在資料庫中儲存信用卡資訊存在重大風險,並引發對違反支付卡產業資料安全標準(PCI DSS)等行業標準的嚴重擔憂。PCI DSS概述了處理和保護信用卡資料以防止欺詐和保護消費者的嚴格準則。

企業不應直接儲存信用卡資訊,而應利用安全的支付網關。支付網關促進了客戶、商家和金融機構之間信用卡資訊的安全傳輸。這不僅降低了資料外洩的風險,還確保符合行業法規。

3. 敏感個人識別資訊(PII)

在沒有適當保護措施的情況下將敏感的個人資訊(例如社會安全號碼、護照詳細資料或駕駛執照號碼)儲存在資料庫中會導致災難性的後果。PII 是身份盜竊的主要目標,如果落入不法之徒的手中,可能會被用於詐騙活動。即使加密了資料庫,風險仍然很高,因為解密金鑰很可能會遭到破解。

為了降低這種風險,建議採用標記化(tokenization)或假名化(pseudonymization)技術來處理 PII。標記化技術是將敏感資以唯一的標記取代,使原始資訊變得不可閱讀。而假名化技術是使用可逆演算法取代或加密敏感識別碼,以確保資料受到保護,同時能確保授權使用者可使用資料。

例外情況和注意事項

雖然某些值可能是由其他欄位衍生出來的,但出於效能原因可能會有例外情況。如果你擁有數百萬筆記錄,從資料庫中取得實際值通常優勝於要每次在記錄之間循環並動態計算答案。考慮到這一點,以下是你可能希望在資料庫中儲存的幾個欄位:

零售價格

商品的零售價通常是成本加稅款計算出來的。然而,這個看似簡單的概念在基本價格變動或新的銷售稅生效時會變得復雜。在資料庫中儲存計算出來的價格需要附上一個「生效日期」。這樣可以得知價格的時間性,確保即使影響價格的因素隨著時間變化,記錄依然準確。

年齡

當你擁有某人的生日和今天的日期時,儲存年齡資訊似乎是不必要的。然而,考慮到年齡隨時間變化,儲存記錄的「生效日期」和儲存時的「當時年齡」可以避免繁瑣的計算。這種方法確保與年齡相關的資訊能保持準確,並提供了個別人士在特定時間點的年齡快照。

如果你需要儲存計算欄位,你可以在 Navicat 16 中快速建立一個插入觸發器。

navicat-trigger (53K)

總結

了解在資料庫中應該包含哪些資料,與了解應該排除哪些資料一樣重要。透過避免儲存重複和多餘的資料、敏感的個人資訊以及一些更適合動態計算的資訊,你不僅可以最佳化儲存空間,還可以增強資料的一致性、完整性和安全性。

Navicat 文章
頻道記錄
分享
部落格封存檔