Phương pháp
Sử dụng SHOW CREATE TABLE ten_bang để xem định nghĩa bảng bao gồm foreign key constraints.
Ví dụ
Tạo bảng cha:
CREATE TABLE DemoTable1 (
Id INT NOT NULL PRIMARY KEY,
EmployeeName VARCHAR(100)
);
Tạo bảng con có FK tham chiếu:
CREATE TABLE DemoTable2 (
Id INT NOT NULL,
StreetName VARCHAR(100),
CityName VARCHAR(100),
CountryName VARCHAR(100),
PinCode INT,
EmployeeId INT,
PRIMARY KEY (Id),
FOREIGN KEY (Id) REFERENCES DemoTable1(Id)
);
Xem định nghĩa bảng con:
SHOW CREATE TABLE DemoTable2\G
Kết quả (định dạng dọc \G):
*************************** 1. row ***************************
Table: DemoTable2
Create Table: CREATE TABLE `demotable2` (
`Id` int(11) NOT NULL,
`StreetName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`CityName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`CountryName` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`PinCode` int(11) DEFAULT NULL,
`EmployeeId` int(11) DEFAULT NULL,
PRIMARY KEY (`Id`),
CONSTRAINT `demotable2_ibfk_1` FOREIGN KEY (`Id`) REFERENCES `demotable1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Phân tích kết quả
CONSTRAINT `demotable2_ibfk_1`: Tên constraint (auto-generated nếu không chỉ định).FOREIGN KEY (`Id`): Cột trong bảng hiện tại.REFERENCES `demotable1` (`id`): Bảng và cột tham chiếu.ENGINE=InnoDB: FK chỉ hoạt động trên InnoDB.
Các cách khác xem FK
-- 1. INFORMATION_SCHEMA (programmatic)
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'DemoTable2' AND REFERENCED_TABLE_NAME IS NOT NULL;
-- 2. SHOW TABLE STATUS (chỉ thấy comment)
SHOW TABLE STATUS LIKE 'DemoTable2';
-- 3. MySQL Workbench / phpMyAdmin: GUI trực quan
Best Practice
- Đặt tên constraint tường minh:
CONSTRAINT fk_demo2_demo1 FOREIGN KEY (Id) REFERENCES DemoTable1(Id). - Luôn dùng InnoDB cho bảng có FK.
- Index trên cột FK (MySQL tự tạo nếu chưa có).