MySQL是一個(gè)以客戶端/服務(wù)器模式運(yùn)作的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),支持多用戶而且可以在多個(gè)不同的平臺(tái)上運(yùn)行。數(shù)據(jù)庫中的表是一個(gè)至關(guān)重要的部分,其中一個(gè)特別重要的屬性就是外鍵。
外鍵是一種用于關(guān)聯(lián)兩個(gè)表的結(jié)構(gòu),它可以保證數(shù)據(jù)的完整性和一致性。在MySQL中,外鍵可以通過添加FOREIGN KEY約束來實(shí)現(xiàn)。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `order` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `product_name` varchar(30) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上述例子中,`user`表的`id`為主鍵,而在`order`表中,`user_id`為外鍵。在`order`表中設(shè)置`FOREIGN KEY`約束,可以保證其`user_id`字段的數(shù)據(jù)必須與`user`表中的`id`字段對(duì)應(yīng)。
當(dāng)執(zhí)行刪除操作時(shí),如果`user`表中有一條記錄被刪除,則與之相關(guān)的`order`表中的記錄也會(huì)被自動(dòng)刪除(設(shè)置了`ON DELETE CASCADE`參數(shù))。
因此,使用外鍵對(duì)于保證數(shù)據(jù)的完整性和一致性非常重要,在開發(fā)中必須認(rèn)真對(duì)待。