廖雪峰SQL教程讀書筆記(二) 關係模型

2021-09-07 03:39:31 字數 1751 閱讀 3070

關係模型的本質就是若干儲存資料的二維表,表的每一行稱為記錄(record),記錄是乙個邏輯意義上的資料;每一列稱為字段(column),同乙個表的每一行記錄都有相同的若干字段。

字段定義了資料型別,及是否允許為null,null表示字段資料不存在但並不是0或空『』。

關係表中,兩條記錄不能重複。不是指兩條記錄不完全相同,而是指能夠通過某個字段唯一區分出不同的記錄,此欄位就是主鍵。

主鍵是關係表中唯一定位記錄的,記錄插入到表中後,主鍵最好不要再修改。

舉例,比如身份證號似乎就是乙個不錯的主鍵,但是身份證號作為一種業務場景,如果身份證號公升位了,作為主鍵,不得不修改的時候,就會對業務產生嚴重影響。

所以,身份證號、手機號、郵箱位址這些看上去可以唯一的字段,均不可用作主鍵。

主鍵不應該允許null。

主鍵最好是完全與業務無關的字段,此欄位一般命名為id。常見的有:

自增整數型別:資料庫在插入資料時自動為每一條記錄分配乙個自增整數。(int自增型別上限約21億,bigint自增型別上限922億億條記錄)

全域性唯一guid型別:使用一種全域性唯一的字串作為主鍵,類似3hajgd-8942df-9sdfda-egea9-sdgaesdgew8。guid演算法通過閘道器mac位址、時間戳、隨機數保證人以計算機在任意時間生成的字串都是不同的,大部分程式語言都內建了guid演算法。

外來鍵:在students表中,通過class_id的字段,可以把資料與另一張表關聯起來,這種列稱為外來鍵。外來鍵並不是通過列名實現的,而是通過定義外來鍵約束實現的。

# 外來鍵並不是通過列名實現的,而是通過定義外來鍵約束實現的

alter table student # 指定外來鍵所在**

add constraint fk_class_id # 約束外來鍵,名稱隨意

foreign key (class_id)

# 指定class_id作為外來鍵

references classes(id)

# 指定此外鍵將關聯到classes表的id列(也就是classes表的主鍵)

# 刪除外來鍵

alter table students

drop foreign key fk_class_id # 刪除約束,並不刪除列

外來鍵會降低資料庫效能,大部分網際網路應用程式為了速度並不設定外來鍵約束,而是僅靠應用程式自身來保證邏輯的正確性。此時,class_id只是乙個普通的列,通過邏輯關係實現外來鍵的功能。

外來鍵實現一對多。通過乙個中間表,將兩個一對多放在一起可以實現多對多。

一對一本質是將乙個表拆分成兩個,便於資料處理。

索引是關聯式資料庫中對某一列或多列的值進行與排序的資料結構。實現資料庫不必掃瞄整個表,直接定位到符合條件的記錄,從而加快查詢速度。但是會導致更新記錄的速度降低。索引列的值離散性越強,價值越大。

唯一索引具有業務含義的、看似唯一的列(身份證號碼)不適合做主鍵,但是適合做唯一索引。

alter table students

add index idx_name_score(name,score)

# 增加索引

add unique index uni_name(name)

# 新增唯一索引

add constraint uni_name unique (name)

# 只對某列新增唯一約束而不建立唯一索引,此時name列沒有索引,但是具有唯一性保證。

...

2019-01-04 13:56:28寫於山東

廖雪峰SQL教程讀書筆記(四) 修改資料

關係型資料庫的基本操作就是增刪改查,即crud create retreive update delete。分別對應select insert update delete語句。insert插入記錄 insert into 表名 欄位1,欄位2,values 值1,值2,語法 insert into ...

簡明python教程讀書筆記(二)之為重要檔案備份

一 可行性分析 一般從經濟 技術 社會 人四個方向分析。二 需求分析 需求分析就是需要實現哪些功能,這個很明了 檔案備份 幾個問題 我們的備份位置?什麼時間備份?備份哪些檔案?怎麼樣儲存備份 檔案型別 備份檔案的名稱?需要通俗明了,一般是以當前時間命名 三 實施過程 方案一 usr lib env ...

讀書筆記 Python演算法教程第二章(1)

import time def apd num value 10 5 start time.perf counter for i in range 0,value i num.reverse end time.perf counter cost end start return cost def i...