實體關係
表設計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...