資料庫設計指南 第四部分(保證資料的完整性)

2021-04-21 23:34:23 字數 2111 閱讀 7780

1. 用約束而非商務規則強制資料完整性

如果你按照商務規則來處理需求,那麼你應當檢查商務層次/使用者介面:如果商務規則以後發生變

化,那麼只需要進行更新即可。

假如需求源於維護資料完整性的需要,那麼在資料庫層面上需要施加限制條件。

如果你在資料層確實採用了約束,你要保證有辦法把更新不能通過約束檢查的原因採用使用者理解

的語言通知使用者介面。除非你 的字段命名很冗長,否則欄位名本身還不夠。

— lamont adams

只要有可能,請採用資料庫系統實現資料的完整性。這不但包括通過標準化實現的完整性而且還

包括資料的功能性。在寫資料的時候還可以增加觸發器來保證資料的正確性。不要依賴於商務層

保證資料完整性;它不能保證表之間(外來鍵)的完整性所以不能強加於其他完整性規則之上。

— peter ritchie

2. 分布式資料系統

對分布式系統而言,在你決定是否在各個站點複製所有資料還是把資料儲存在乙個地方之前應該

估計一下未來5 年或者10 年的資料量。當你把資料傳送到其他站點的時候,最好在資料庫字段

中設定一些標記。在目的站點收到你的資料之後更新你的標記。為了進行這種資料傳輸,請寫下

你自己的批處理或者排程程式以特定時間間隔執行而不要讓使用者在每天的工作後傳輸資料。本地

拷貝你的維護資料,比如計算常數和利息率等,設定版本號保證資料在每個站點都完全一致。

— suhair techrepublic

3. 強制指示完整性

沒有好辦法能在有害資料進入資料庫之後消除它,所以你應該在它進入資料庫之前將其剔除。激

活資料庫系統的指示完整性特性。這樣可以保持資料的清潔而能迫使開發人員投入更多的時間處

理錯誤條件。

— kol

4. 關係

如果兩個實體之間存在多對一關係,而且還有可能轉化為多對多關係,那麼你最好一開始就設定

成多對多關係。從現有的多對一關係轉變為多對多關係比一開始就是多對多關係要難得多。

— cs data architect

5. 採用檢視

為了在你的資料庫和你的應用程式**之間提供另一層抽象,你可以為你的應用程式建立專門的

檢視而不必非要應用程式直接訪問資料表。這樣做還等於在處理資料庫變更時給你提供了更多的

自由。— gay howe

6. 給資料保有和恢復制定計畫

考慮資料保有策略幷包含在設計過程中,預先設計你的資料恢復過程。採用可以發布給使用者/開發

以後萬一資料丟失可以重新處理更新。

— kol

7. 用儲存過程讓系統做重活

解決了許多麻煩來產生乙個具有高度完整性的資料庫解決方案之後,我所在的團隊決定封裝一些

關聯表的功能組,提供一整套常規的儲存過程來訪問各組以便加快速度和簡化客戶程式**的開

發。在此期間,我們發現3gl 編碼器設定了所有可能的錯誤條件,比如以下所示:

select cnt = count (*)

from

where =

if cnt = 0

begin

insert into

( [< primary key column>] )

values ( )

endelse

begin

end而乙個非3gl 編碼器是這樣做的:

insert into

( [< primary key column>] )

values

( )if @@error = 2627 -- literal error code for primary key constraint

begin

end第2 個程式簡單多了,而且事實上,利用了我們給資料庫的功能。雖然我個人不喜歡使用嵌入文

字(2627)。但是那樣可以很方便地用一點預先處理來代替。資料庫不只是乙個存放資料的地

方,它也是簡化編碼之地。

— a-smith

8. 使用查詢

控制資料完整性的最佳方式就是限制使用者的選擇。只要有可能都應該提供給使用者乙個清晰的價值

列表供其選擇。這樣將減少鍵入**的錯誤和誤解同時提供資料的一致性。某些公共資料特別適

合查詢:國家**、狀態**等。

— cs data architect

第四部分MongoDB資料庫和架構管理

第四部分 管理篇 資料匯出 資料匯入 資料備份 資料恢復 使用者安全與認證 資料匯出 資料匯入 作為dba 管理員 經常會碰到匯入匯出資料的需求 資料匯入 mongoexport 資料匯出 mongoimport mongoexport d test c collection o 匯出的檔名 引數說...

第四部分 將可重用的部分做成靜態庫

如果build成功,run起來以後,可以看到如下的執行結果 這個例子實際上和上一部分中的例子效果是一樣的。不同的是,本例中使用了靜態庫的方式來完成,這樣更可以看出程式在擴充套件意義上的實踐。那麼如何建立乙個靜態庫 static library 又如何在另乙個專案中引用這個庫?下面兩個小節就是分別回答...

NGINX應用效能優化指南(第四部分) 負載均衡

編者的話 本文是 nginx應用效能優化指南 系列文章的第四篇,主要介紹了如何從負載均衡方面實現nginx應用效能優化。nginx允許使用upstream指令配置後台。最值得注意的是會話持久化和負載均衡策略。在會話持久化方面,有三個有用的變數需要考慮 往返時間 用於會話持久化的 tcp cwnd 持...