關於數據庫設計是否需要加入(建立)外鍵
從面向對象設計的角度來看,應該取消掉外鍵約束,因為數據庫的作業就是高效的存取數據。而不是表達業務邏輯關系。
建立外鍵的好處:
1、由於數據庫保證數據完整性,比程序保證完整性更可靠,多應用時,由程序來保證數據完整性變得困難
2、外鍵約束使得數據庫的ER圖可讀性變強,有助於業務邏輯設計
不建立外鍵的好處:
1、可以用觸發器或應用程序保證數據的完整性
2、開發變得簡單,維護數據時不用考慮外鍵約束
3、性能高,大數據量插入操作時不用考慮維護外鍵
總結:
不建立外鍵約束,關系由程序控制。另外還需要刪除現有的外鍵關系
我自己覺得完整性和一致性肯定是需要保證的,不然會出問題,也會影響效率,需要看你項目又多大。
小型項目就使用數據庫本身的,效率追求不高,也沒必要花時間自己建立約束,時間代價比較大。
較大型項目可能數據約束本身效率不夠好,滿足不了大項目對效率的要求,又有人力物力去支持建立自己的高效約束。
還有較大項目初期,想早點上線,效率要求沒有那麽大,沒時間去建立高效率約束,那麽就用數據庫本身的約束,項目初期要求穩定一些比較好。
關於數據庫設計是否需要加入(建立)外鍵
相關推薦
關於數據庫設計是否需要加入(建立)外鍵
建立 操作 項目 外鍵約束 總結 外鍵 困難 數據量 好處 從面向對象設計的角度來看,應該取消掉外鍵約束,因為數據庫的作業就是高效的存取數據。而不是表達業務邏輯關系。 建立外鍵的好處: 1、由於數據庫保證數據完整性,比程序保證完整性更可靠,多應用時,由程序來保證數據完整性變
數據庫設計之數據庫,數據表和字段等的命名總結
數據庫設計 英文單詞 數據表 下劃線 命名 數據庫命名規則:根據項目的實際意思來命名。 數據表命名規則:1.數據表的命名大部分都是以名詞的復數形式並且都為小寫;2.盡量使用前綴"table_";3.如果數據表的表名是由多個單詞組成,則盡量用下劃線連接起來;但是不要超過30個字符,一旦超過3
VB.NET版機房收費系統—數據庫設計
階段 數據類型 多人 不能 can log lai tex asi 之前第一遍機房收費的時候,用的數據庫是別人的。認知也僅僅能建立在別人的基礎上,等自考中《數據庫系統原理》這本書學完了之後,再去看曾經的數據庫,發現數據庫真的還須要進一步的優化。以下是我設計數據庫的
MySQL數據庫設計常犯的錯以及對性能的影響
成本 strong 操作 主從 相關 解析 依賴 做的 這樣的 1.過分的反範式化為表建立太多的列 我們在設計數據庫的結構時,比較容易犯的第一個錯誤就是對表進行了過分的反範式化的設計,這就容易造成了表中的列過多,雖然說Mysql允許為一個表建立很多的列,但是由於Mysq
SQL筆記 --- 數據庫設計步驟(轉)
索引 獨立 mem 數據庫應用 cat ati art 個學生 left 目錄 總體設計過程需求分析概念結構設計邏輯結構設計數據庫物理設計數據庫實施數據庫運行和維護總體設計過程數據庫設計步驟:設計描述:數據庫設計不同階段形成的數據庫各級模式:數據庫設計的特點:需求分析分析和
數據庫設計--數據的垂直拆分
pad 最小 由於 ria ont reads mic bytes 信息 假設表字段太多。假設表中有些字段比較大。即便是你僅僅查有限的幾個字段,在做表關聯和全表掃的時候,由於掃描的數據塊多。性能方面還是會不理想。由於oracle掃描的時候是依照塊為單位掃描,
MVC排球計分(二)——需求分析與數據庫設計
logs 用例圖 中國隊 eight 需求 back 過程 style .cn 需求分析和數據庫的設計是很重要的一個環節,這個環節會直接影響項目的開發過程和質量。 這裏做的排球計分程序是一個例子,而且其業務極為簡單,因此,這裏並不是真正的需求分 析和數據庫設計,而是將排球計
需求分析與數據庫設計(二)
-s size spa blog png 設計 需求分析 技術 詳細 需求分析: 作為一名觀眾, 我希望知道詳細的隊伍比分變化和隊伍得分信息, 以便於了解比賽信息和運動員的精彩得分 用例圖: 數據庫設計: 用mvc中自帶的 數據庫SQL Server
ASP.NET MVC 排球計分程序 (三)需求分析與數據庫設計
arch 情況 img 需求 全場 ima 功能 每次 str 需求分析: 軟件名稱:排球計分程序 1、 需要鍵入比賽人員的的姓名,需要根據場上的比賽結果及時做出操作,記分員可以在記錯的情況下撤銷上一部操作。比賽結束,記分員應能查詢到每個隊伍的進球情況,以及攔網、擊球等的
20170626_Oracle_數據庫設計
規劃 小數 標識符 空間 com 第一個 而不是 acl 原子 數據庫設計的定義:規劃數據庫中數據對象以及之間關系的過程。 為什麽進行數據庫設計? 空間 完整性 程序開發 數據庫設計前提知識: 範式: 1NF:第一範式
6.7-數據庫設計,三大範式
上線 cnblogs 範式 spa 依賴 軟件開發 數據庫設計 描述 最小 一、數據庫設計 軟件開發: 需求分析 概要設計 詳細設計 代碼編寫 測試 上線部署
15套java互聯網架構師、高並發、集群、負載均衡、高可用、數據庫設計、緩存、性能優化、大型分布式 項目實戰視頻教程
二階 並發 支持 線程並發 important http 系統架構 四十 mongodb入門 * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架構師、集群、高可用、高可擴
數據庫設計(理解篇)
國家 span 特性 定義 余數 給定 數據模型 用戶數 數據共享 1. 原始單據與實體之間的關系(原始單據可以理解為整個錄入界面的數據,這裏的實體可以理解為基本表) 可以是一對一、一對多、多對多的關系。 在一般情況下,它們是一對一的關系:即一張原始單據對應
關於數據庫設計三大範式
3-9 個數 logs 訂單 根據 添加 原子 mage 分解 為了建立冗余較小、結構合理的數據庫,設計數據庫時必須遵循一定的規則。在關系型數據庫中這種規則就稱為範式。範式是符合某一種設計要求的總結。要想設計一個結構合理的關系型數據庫,必須滿足一定的範式。 在實際開
高性能可擴展MySQL數據庫設計及架構優化 電商項目_1
電商一 數據庫設計規範1 命名規範 所有數據庫對象名稱必須用小寫字母並下劃線分割對象名稱禁止使用MySQL保留關鍵字命名要做到見名識義,不超過32字節臨時表必須tmp前綴 日期後綴備份庫表bak前綴 日期後綴所有存儲相同數據的列名和類型必須一致2 數據庫基本設計規範所有表必須用innodb引擎數據庫和表字符集
.NET—數據庫設計
post 轉換 con dsm 基本 指令 pop gb2312 數據庫的操作 .NET視頻中講到了數據庫設計,整個聽下來,給我的感覺就是挺亂的。每一部分都聽得懂,可是好像又聯系不到一起的感覺。後來,總結了DBS才發現,事實上,東西都是一樣的,僅僅只是。打亂了順
[收集] 各式各樣的 無限級分類 的數據庫設計方案
where 數據庫 位數 sel 其中 三級 mat sco tiny 第一種方案: 表為兩張,一張分類表,一張信息表。 表1: `ID` int(10), `cID` tinyint(3) , `title` varchar(255), 表2:`cID` tinyint(
項目開發規範,數據庫設計規範
好的 變量 static date 規範 fff 識字 eas 表示 1.命名規範 定義這個規範的目的是讓項目中全部的文檔都看起來像一個人寫的,添加可讀性。降低項目組中由於換人而帶來的損失。(這些規範並非一定要絕對遵守,可是一定要讓程序有良好的可讀性) 1.1
棋牌遊戲服務器架構: 詳細設計(三) 數據庫設計
ice 影響 相關 地址 line person esc 站點 one 主要有3類Database: ServerInfoDB,UserInfoDB和GameDB。 ServerInfoDB主要存儲的是遊戲列表的信息,UserInfoDB存儲玩家的全局
用戶、角色、權限數據庫設計
style str ole 管理 table char per varchar prim 權限管理 權限管理,主要是人員和權限之間的關系,但是如果讓人員直接和權限打交道,那麽權限的賦值、權限的撤銷以及權限的變動會非常的麻煩,這樣引入了,角色,給角色賦權限,然後給用戶分配角色