Dieser Artikel beschreibt den MySQL-Joint-Index anhand von Beispielen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Benutzer-ID der Mitarbeitertabelle
Abteilungstabelle Abteilung
Tabelle der Mitarbeiterabteilung
Bedingung: Ein Mitarbeiter kann mehreren Abteilungen entsprechen
Frage: Wie richte ich die Datenbank so ein, dass Benutzer-ID und Abteilungs-ID nicht wiederholt hinzugefügt werden können?
uuid userid deptid
111
212
311 (Dies kann nicht hinzugefügt werden)
DROP TABLE IF EXISTS `dept`; CREATE TABLE `dept` ( `id` int(11) NOT NULL AUTO_INCREMENT, `deptname` char(32) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of dept -- ---------------------------- INSERT INTO `dept` VALUES ('1', '1'); INSERT INTO `dept` VALUES ('2', '2');
DROP TABLE IF EXISTS `employee`; CREATE TABLE `employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of employee -- ---------------------------- INSERT INTO `employee` VALUES ('1', '11');
DROP TABLE IF EXISTS `employee_dept`; CREATE TABLE `employee_dept` ( `id` int(11) NOT NULL, `employeeid` int(11) NOT NULL, `deptid` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `bb` (`deptid`), KEY `myindex` (`employeeid`,`deptid`), CONSTRAINT `aa` FOREIGN KEY (`employeeid`) REFERENCES `employee` (`id`), CONSTRAINT `bb` FOREIGN KEY (`deptid`) REFERENCES `dept` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of employee_dept -- ---------------------------- INSERT INTO `employee_dept` VALUES ('1', '1', '1'); INSERT INTO `employee_dept` VALUES ('2', '1', '2');
Hinweis: Erstellen Sie einen gemeinsamen Index und erstellen Sie den Index „myindex“ für Employee_dept (employeeid,deptid);
Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die speziellen Themen dieser Website ansehen: „Zusammenfassung der MySQL-Indexoperationsfähigkeiten“, „Umfassende Sammlung der MySQL-Protokolloperationsfähigkeiten“, „Zusammenfassung der MySQL-Transaktionsoperationsfähigkeiten“, „Umfassende Sammlung von MySQL-Kenntnissen für gespeicherte Prozeduren“, „Zusammenfassung der Techniken zum Sperren von MySQL-Datenbanken“ und „Zusammenfassung häufig verwendeter MySQL-Funktionen“
Ich hoffe, dass dieser Artikel für alle bei der MySQL-Datenbankplanung hilfreich sein wird.