目錄
規範的命名
表的規模
表的訪問
合適的資料型別
主鍵(primary key)
表的關聯
多表關聯查詢
外來鍵 (foreign key)
資料庫名: 全小寫,用下劃線連線 推薦為 company_project
表名: 全小寫,用下劃線連線 例如 user_role student_exam
列名 :第乙個單詞小寫,後面首字母大寫 displayname
乙個資料庫裡,通常有很多表,但每張表的特點是不一樣的。(規模、訪問頻率)
表的規模:該錶的最終的儲存規模
有的表只儲存幾百條記錄,而有的達到幾萬條
結論:只有儲存規模較大的表才值得精打細算
每個表的訪問頻率也是不一樣的有的表很少被訪問,有的表訪問頻繁
商品表,可能會被經常用於查詢
系統日誌表記錄了系統事件,很少被訪問
比如,對於整型來說有tinyint smallint int bigint
tinyint 比 int 可能有哪些好處?
-節省儲存空間 (如果表的規模很小,則忽略)
-加快傳輸效率 (如果mysql同機部署,則忽略)
-加快資料備份的速度 (如果資料備份不常發生,則忽略)
主鍵的作用:快速定位,保證唯一性
設計時要注意兩點:
1 每乙個表都應設立主鍵
2 主鍵字段一般用整數或短字串
索引
(1) 索引裡儲存生日和行指標 (2) 索引裡按順序儲存
alter table `ysj_school`.`student` add index (`id`);
在建立索引時,可以額外指定型別
-普通索引 :預設的索引型別
-唯一索引 unique:索引裡的值不允許重複 (常用)
-主索引 primary:主鍵也是一種索引
-全文索引 fulltext :為長文字建立的索引
索引不應無節制的新增
主鍵本質上也是一種索引
表 student 和 exam 存在關聯性
關聯查詢:
select `name` ,`chinese`, `english`,`math`
from exam, student
where exam.`id` = student.`id`;
2.(常用,新增表的別名,規範寫法)
select a.name ,b.chinese, b.english, b.math
from exam a, student b
where a.`id` = b.`id`;
-內連線 inner join
示例:
select *
from student a inner join exam b
on a.id = b.id
where a.***=0
其中,on表示連線條件
-外連線
左外連線 left outer join
示例:
select *
from student a left outer join exam b
on a.id = b.id
where a.***=0
示例:
右外連線 right outer join
select *
from student a right outer join exam b
on a.id = b.id
where a.***=0
示例:
a left join b ( a是左表 )
a right join b ( b 是左表 )
外來鍵,作為一種約束條件,用於維護資料的完整性。(不讓使用者亂刪、錯改) 建立外來鍵使資料庫完善.
在外鍵約束時,設定刪除選項 (cascade)
資料庫設計 設計資料庫之前
1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...
資料庫設計 設計資料庫之前
1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...
資料庫設計 設計資料庫之前
1.考察現有環境 在設計乙個新資料庫時,你不但應該仔細研究業務需求而且還要考察現有的系統。大多數資料庫 專案都不是從頭開始建立的 通常,機構內總會存在用來滿足特定需求的現有系統 可能沒有實 現自動計算 顯然,現有系統並不完美,否則你就不必再建立新系統了。但是對舊系統的研究 可以讓你發現一些可能會忽略...