簡單來說,就是資料儲存的倉庫,本質上其實是乙個檔案系統,檔案是他的組成部分,主要功能就是通過sql對檔案的crud操作.需求分析:分析需求,將專案中所需要的事務抽取成物件.比如:①員工:員工編號,姓名,年齡,所屬部門…②部門:部門編號,部門名稱,成立時間..常用的資料庫:mysql,oracle, sql server
邏輯設計階段:用e-r圖畫出物件模型,以及物件之間的關係
物理設計階段: 為所設計的資料庫選擇合適的儲存結構和訪問路徑;實際上就是將前面幾步分析好的物件轉化成例項化的資料庫和表.正規化就是規範,就是關係型資料庫設計表時遵循的三個規範.要滿足第二正規化,必須先滿足第一正規化,要滿足第三正規化,必須先滿足第二正規化
第一正規化(1nf)是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。列資料的不可分割.
第二正規化(2nf)要求資料庫表中的每個例項或行必須可以被唯一地區分。為實現區分通常需要為表加上乙個列,以儲存各個例項的唯一標識.(主鍵)
第三正規化(3nf)要求乙個資料庫表中不包含已在其它表中已包含的非主關鍵字資訊。(外來鍵)
反三正規化:有時候為了效率,可以設定重複或者可推導出的字段.比如:訂單(總價),訂單項(單價)
create
table
`tb_user` (
`id`
int(11) not
null auto_increment,
`name`
varchar(20) default
null,
`money`
double
default
null,
primary
key (`id`)
) engine=innodb auto_increment=3
default charset=utf8;
運維優化階段:**在進行壓力測試時,如果有問題,再對資料庫進行優化
悲觀鎖: 對資料被外界(包括本系統當前的其他事務,以及來自外部系統的事務處理)修改持保守態度(悲觀),因此,在整個資料處理過程中,將資料處於鎖定狀態。說簡單點,就是資料庫將能夠對資料造成安全問題的所有條件全部阻擋在門外.
讀鎖/共享鎖:(準備一把大家都有鑰匙的鎖)大家都能查詢資料庫,但是只有持有鎖的人才能修改資料.
start
transaction
select name from tb_user lock
in share mode
update tb_user set name="張三丰"
commit;
寫鎖/排他鎖:保證只有乙個人能訪問,安全.
start
transaction
select name from tb_user for
update
commit;
樂觀鎖假設認為資料一般情況下不會造成衝突,所以在資料進行提交更新的時候,才會正式對資料的衝突與否進行檢測,如果發現衝突了,則讓返回使用者錯誤的資訊,讓使用者決定如何去做。簡單來說,就像是老美對危險**不管不問,只有發生事件時才會去過問一樣.
1.原子性(atomicity):表示事務內不可分割,要麼都成功,要麼都失敗
2.一致性(consistency):要麼都成功,要麼都失敗.失敗了,要對前面的操作進行回滾
3.隔離性(isolation):乙個事務開啟了,不能受其它事務的影響
4.永續性(durability):持續性,表示事務開始了,就不能終止.事務提交後,將資料序列化到資料庫
myisam:不支援事務,表鎖。適合於更改少,查詢多的表,比如說商品分類表 innodb:支援事務,行鎖,是mysql 5.5之後官方推薦及預設,適合經常更改資料的表,比如說訂單表功 能
myisam
memory
innodb
archive
儲存限制
256tb
ram64tb
none
支援事物
nono
yesno
支援全文索引
yesno
nono
支援數索引
yesyes
yesno
支援雜湊索引
noyes
nono
支援資料快取
non/a
yesno
支援外來鍵
nono
yesno
關於索引的東西太多,我在這裡不做詳談,只是簡單說一下
資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。• 非聚集索引:data與index是分開的,比如字典中的目錄與內容。myisam下的b+tree就是非聚集索引。
• 聚集索引:data與index是一起的,比如字典中的頁碼。innodb下的b+tree就是聚集索引。
索引失效簡單例子:
• -- index(age)
• select * from
user
order
by age;索引生效
-- 最左匹配
• --index(name,age)
• select * from
user
order
by age;索引失效
• select * from
user
where age = 18
and name = 『lily』;索引失效
•
• -- index(age,name)
• select * from
user
where age > 18
and name = 『lily』;索引生效一半
大家可以自行去檢視一下相應的api文件
b-tree索引等等。
資料庫的簡單了解
什麼是資料庫 關係型資料庫sql structeured query language 資料表 table 結構化的資料框架 1.資料庫設計的6個階段 需求分析 分析客戶的需求,包括資料,功能和效能需求 概念結構的設計 主要採用e r模型進行設計,包括畫e r圖 邏輯結構的設計 通過將b r圖轉換成...
XUtils對資料庫的簡單操作
本文主要講對資料庫的操作 一 新增依賴 compile org.xutils xutils 3.3.40 public class extends 實現單例 任何乙個頁面都可以拿到這個類的資料和物件 private public return instance override public voi...
python對資料庫的簡單操作
python連線資料庫 import mysqldb database db mysqldb.connect host localhost user root password mima db 資料庫名字 等價於 db mysqldb.connect database db就代表資料庫一些操作 查詢...