標籤:tab 技術分享 and 情況 學院 post mysq table school
E-R 圖 (實體關聯模型)
E-R圖也稱實體-聯絡圖(Entity Relationship Diagram),
提供了表示實體類型、屬性和聯絡的方法,用來描述現實世界的概念性模型。
它是描述現實世界關係概念性模型的有效方法。
是表示概念關聯式模式的一種方式。
用“矩形框”表示實體型,矩形框內寫明實體名稱;
用“橢圓圖框”表示實體的屬性,並用“實心線段”將其與相應關係的“實體型”串連起來;
用”菱形框“表示實體型之間的聯絡成因,在菱形框內寫明聯絡名,並用”實心線段“分別與有關實體型串連起來,同時
在”實心線段“旁標上聯絡的類型(1:1,1:n或m:n)。
外鍵約束
外鍵約束 foreign key,保持資料一致性,完整性實現一對一或一對多關聯性。(因為一個表只存一類資訊。用外鍵來做參照,
保證資料的一致性,可以減少資料冗餘)
外鍵約束的要求:
資料表的儲存引擎只能為InnoDB;
外鍵列和參照列資料類型一致;
外鍵必須關聯到鍵上面去,一般情況是關聯到,另一張表的主鍵.
建立外鍵約束:
建一個表a
再建一個表b,並給它外鍵約束:
建立外鍵約束的語句:constraint `外鍵名` foreign key(ab_id) references `a`(a_id);
foreign key(ab_id) references `a`(a_id); 預設給予外鍵名,不會重複。
刪除外鍵: alter table `b` drop foreign key dc_id;
增加外鍵:
注意這裡沒有指定外鍵名,我們可以查看它的名字:
一對多關聯性
舉例:學校中一個學院可以有很多的學生,而一個學生只屬於某一個學院(通常情況下),學院與學生之間的關係就是一對
多的關係,通過外部索引鍵關聯來實現這種關係。
建立一個學院表和一個學生表,學生表有一個非空欄位ss_id,將它關聯到學院的編號(school_id),即學生必須屬於某一個學
院。
給school表插入資料:
給student表插入資料:
如果插入資料時,ss_id 的值在school表的school_id值中沒有則會報錯;
一對一關聯性
舉例,學生表中有學號、姓名、學院,但學生還有些比如電話,家庭住址等比較私密的資訊,這些資訊不會放在學生表當
中,會建立一個學生的詳細資料表來存放。這時的學生表和學生的詳細資料表兩者的關係就是一對一的關係,因為一個學生只
有一條詳細資料。用外鍵加主鍵的方式來實現這種關係。
多對多關係:
舉例,學生要報名選修課,一個學生可以報名多門課程,一個課程有很多的學生報名,那麼學生表和課程表兩者就形成了多
對多關係。對於多對多關係,需要建立第三張關係表,關係表中通過外鍵加主鍵的形式實現這種關係。
先建立課程表:
再建立中間表student_course:
s_id對應於學生表的學生學號;c_id 對應於課程表的課程編號。
查詢中一些較為常見的函數
#求最大年齡 mysql> SELECT MAX(`age`) FROM `student_details`;
#求最小年齡:
#其他一些操作:
mysql資料庫,外鍵約束和表關係