mysql實體 mysql實體關係

2021-10-17 21:52:05 字數 1492 閱讀 9154

實體關係

表設計1:1

兩個實體表內,存在相同的主鍵字段

如果記錄的主鍵值等於另乙個關係表內記錄的主鍵值,則兩條記錄的對應為一一對應

優化上稱為垂直分割

1:n乙個實體對應多個其他實體(乙個班級對應多個學生)

設計:在多的那段增加乙個字段,用於指向該實體所屬的另外實體的標識

m:n多對多

設計典型的利用乙個中間表表示實體之間的對應關係。中間表的每一條記錄表示乙個關係。

可以分析:乙個m:n可拆解為 1:m  1:n來實現

外來鍵 foreign key

概念:如果乙個實體(student)的某個字段(student:class_id)指向(引用)另乙個實體(class)的主鍵(class:class_id)

就稱student實體的class_id是這兩個實體關聯的外來鍵。

被指向的實體稱為主實體(主表),也叫父實體(父表)

負責指向的實體稱為從實體(從表),也叫子實體(子表)

一般在哪個表裡定義外來鍵 這個表就是子表

作用:約束處於關係內的實體

增加子表記錄時,是否有與之對應的父表記錄。刪除和更新主表記錄時,從表應該如何處理與之相關的記錄。

定義乙個外來鍵

在從表上增加乙個外來鍵字段,指向主表的主鍵  使用關鍵字 foreign key

foreign key (外來鍵字段) references 主表名 (關聯字段) [主表記錄刪除時動作][主表記錄更新時記錄]

建完錶後插入

在子表增加記錄時,父表中必須有與之對應的記錄存在

設定級聯操作

在主表資料發生改變時,與之關聯的從表資料該如何變化

主表更新

主表刪除

使用關鍵字on update,on delete來標識

允許的級聯操作:

cascade:關聯操作如果主表被刪除,那麼從表也會執行相關的操作

set null : 設定為null表示從表不指向任何主表記錄

restrict :拒絕主表的相關操作

修改外來鍵:先刪除再新建外來鍵,通過修改表來完成。

alter table student drop foreign key (class_id) 有問題

刪除外來鍵需要通過指定外鍵名達到目的

可以通過建立外來鍵時指定名稱或者使用mysql預設生成的名稱

新建外來鍵:

alter table student add foreign key (class_id) references class (class_id)

on delete set null

注意關聯的字段必須型別一致

在class_id定義時要能為null

on update指的是只有主表的主鍵發生變化,才能對從表產生影響。

現在表中資料預設都是restrict show 裡預設不顯示

php實際專案中只有關聯,不設定外來鍵,刪除或更新時通過sql語句疊加操作

有名無實,在支援外來鍵的儲存引擎表中才能使用(只有innodb)

mysql實體指的是 資料庫中,實體是指 。

單選題 若要求在文字框中輸入文字時達到密碼 的顯示效果,則應設定的屬性是 單選題 以下程式段執行後,訊息框的輸出結果是 a sqr 5 b sqr 4 c a b msgbox c 2 單選題 可以設定為索引的字段是 單選題 自動方式建立的報表包括 內容。單選題 在下列資料型別中,可以設定 字段大小...

MySQL實體類轉SQL指令碼

attributeusage attributetargets.property,allowmultiple false,inherited false 用於給擴充套件類的屬性增加特性標識 如果實體類屬性有此標識,則不參與指令碼運算 public class i tendfieldattribute...

EFCore 實現連線MySQL並建立實體類

所需檔案版本 1 pomelo.entityframeworkcore.mysql 2.2.0 2 microsoft.entityframeworkcore.tools 2.2.0 3 pomelo.entityframeworkcore.mysql 2.2.0 注意 高版本不相容 netcore...