更新時間:2022-07-25 10:16:17 來源:動力節(jié)點(diǎn) 瀏覽905次
在Java教程中大家會學(xué)到很多知識,設(shè)計(jì)原則就是其中一部分,那么,數(shù)據(jù)庫相關(guān)設(shè)計(jì)原則有哪些?動力節(jié)點(diǎn)小編來為大家解答。
在分布式系統(tǒng)的 SQL 數(shù)據(jù)庫中,外鍵可能會成為障礙。我們需要以特定順序?qū)ν怄I保存的記錄應(yīng)用更改。請注意,并非所有 SQL 引擎都允許延遲一致性。允許在事務(wù)中進(jìn)行不一致的更改不符合 SQL 標(biāo)準(zhǔn)。
一些開發(fā)人員通過使用可為空的外鍵來消除這種障礙。
此外,如果我們沒有很好地考慮我們的查詢,使用外鍵可能會導(dǎo)致死鎖!通過刪除外鍵,我們減少了死鎖的機(jī)會。
如果沒有外鍵,我們可以依靠正確使用的事務(wù)、隔離級別以及創(chuàng)建將數(shù)據(jù)庫從一個正確狀態(tài)移動到另一個正確狀態(tài)的正確查詢。
SQL 數(shù)據(jù)庫允許用戶定義外鍵的級聯(lián)行為,以控制當(dāng)有人更新或刪除父表中的行時會發(fā)生什么。
即使可以使用沒有外鍵的級聯(lián),它也不會這樣做,因?yàn)榧壜?lián)隱藏了用于更新和刪除的業(yè)務(wù)邏輯。
可以說,人類在時間方面面臨的最大問題是時區(qū)。時區(qū)總是感覺含蓄,并且取決于地理環(huán)境,不包括臭名昭著的夏令時。
您可以使用 UTC 保存時間戳,因?yàn)樗仟?dú)立于位置和夏令時的全球標(biāo)準(zhǔn)。是使用專用類型還是僅使用整數(shù)定義的紀(jì)元時間取決于您。最后,所有與時間相關(guān)的操作都必須導(dǎo)致整數(shù)比較。
建議您知道數(shù)據(jù)庫中每一行(文檔)的創(chuàng)建、更新或刪除時間。您可以使用它來審計(jì)數(shù)據(jù)庫和調(diào)試。此外,您可以使用這些時間戳進(jìn)行排序,尤其是對于沒有自然排序的實(shí)體。
誰是演員?演員,小編的意思是改變系統(tǒng)中數(shù)據(jù)的人或服務(wù)。一個人可以使用提供的 UI 更改數(shù)據(jù)。服務(wù)可以在調(diào)度程序定期調(diào)用時修改數(shù)據(jù)。
您可能希望在每次數(shù)據(jù)更改時保留有關(guān)參與者的信息,至少用于日志和審計(jì)目的。根據(jù)產(chǎn)品要求和可用資源,您需要確定報(bào)告系統(tǒng)的準(zhǔn)確性。
在處理特定實(shí)體的狀態(tài)或狀態(tài)時,您可能傾向于將它們作為字符串保存在各自的數(shù)據(jù)庫字段中。它可以讓數(shù)據(jù)庫管理員輕松檢查這些值。另一個論點(diǎn)是您總是可以購買更多的磁盤空間。
事實(shí)可能介于兩者之間,因?yàn)樾【幷J(rèn)為使用Java整數(shù)類型需要精確規(guī)劃、節(jié)省空間(包括索引空間)并允許更快的比較。此外,在惡意獲取數(shù)據(jù)庫數(shù)據(jù)的情況下,它會向攻擊者隱藏部分業(yè)務(wù)邏輯。也就是說,我認(rèn)為在產(chǎn)品的概念驗(yàn)證階段使用基于字符的字段是合理的。
小編相信您應(yīng)該使列名盡可能短。小編發(fā)現(xiàn)編寫和閱讀簡潔的 SQL 查詢更容易。如果您一直發(fā)送大量查詢(您可能也希望為此使用內(nèi)部存儲的過程),那么您可能會因?yàn)槊痔L而產(chǎn)生額外的流量。
在將列名放入每個寫入對象的 NoSQL 數(shù)據(jù)庫中,如果堅(jiān)持使用長字符串,可能會浪費(fèi)大量磁盤空間!
根據(jù)經(jīng)驗(yàn),您應(yīng)該始終知道保存特定值需要多少空間。
數(shù)據(jù)庫引擎使用字節(jié)數(shù)而不是字符數(shù)來限制文本字段的長度。使用 Unicode 字符串時可能會令人驚訝。此外,您應(yīng)該檢查文本列的編碼和排序規(guī)則——您可以在許多數(shù)據(jù)庫級別(整個數(shù)據(jù)庫、表或列)上應(yīng)用這些屬性。
對于實(shí)數(shù),通常有三種可用類型:
以 2 為底的浮點(diǎn)單精度類型,
浮點(diǎn)雙精度類型(使用與之前相同的基數(shù)),
使用以 10 為底的固定精度。
存儲實(shí)數(shù)可能是一個挑戰(zhàn),因?yàn)楹蠖丝赡懿恢С峙c數(shù)據(jù)庫相同的精度標(biāo)準(zhǔn)。
使用整數(shù)時,我們需要在字段級別分配足夠的字節(jié)。我們應(yīng)該決定是否支持簽名或未簽名數(shù)據(jù)。同樣,您的后端可能不支持與數(shù)據(jù)庫相同的整數(shù)標(biāo)準(zhǔn)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743