Heim >Datenbank >MySQL-Tutorial >Detaillierte Beispiele für Probleme beim MySQL-Datenbankdesign
Dieser Artikel stellt hauptsächlich einen Artikel über die Designprobleme der MySQL-Datenbank dar. Er hat einen guten Referenzwert und ich hoffe, dass er für alle hilfreich sein wird. Folgen wir dem Herausgeber und schauen wir uns das an. Ich hoffe, es kann allen helfen.
Fragenbeschreibung: Derzeit gibt es etwa 100.000 Daten, die Mitarbeiter einer Abteilung erfassen. Den meisten Abteilungen liegt eine hierarchische Struktur mit vielen Unterabteilungen zugrunde. Zum Beispiel der Teil A der ersten Ebene, die Abteilungen A', B', C' der zweiten Ebene und die Abteilungen A", B", C" der dritten Ebene. Um die Datenbank zu entwerfen, müssen wir alle zählen die Personen unter der zweiten Ebene Teil A‘
CREATE TABLE DEPARTMENT( DEP_ID INT UNSIGNED AUTO_INCREMENT, DEP_NAME VARCHAR(10) NOT NULL, PARENT_ID INT, PRIMARY KEY(DEP_ID) )CHARSET=utf8;Hier wird die Hierarchie angezeigt. Suchen Sie anhand des
dieser Ebene nach ihrem und stellen Sie dann eine Verbindung über den linken Join her, um die aktuelle Abteilung zu erhalten und seiner übergeordneten Abteilung. >
单个插入 INSERT INTO DEPARTMENT (DEP_NAME, PARENT_ID) VALUES ('A',NULL); 或者批量插入 INSERT INTO department VALUES(1,'A',NULL),(2,'B',1),(3,'C',1), (4,'D',2),(5,'E',2),(6,'F',3),(7,'G',3);Erstellen Sie die Tabelle und speichern Sie die Informationen des Abteilungspersonals
dep_id | dep_name | parent_id |
---|---|---|
1 | A | NULL |
2 | B | 1 |
3 | C | 1 |
4 | D | 2 |
5 | E | 2 |
6 | F | 3 |
7 | G | 3 |
dep_id
Geben Sie relevante Testdaten ein parent_id
select d1.dep_name as level1, d2.dep_name as level2, d3.dep_name as level3, d4.dep_name as level4 from department as d1 left join department as d2 on d2.parent_id = d1.dep_id left join department as d3 on d3.parent_id = d2.dep_id left join department as d4 on d4.parent_id = d3.dep_id where d1.dep_name='A';
Suchen Sie die Person, deren sekundäre Abteilung B ist, und listen Sie die Informationen zu ihrer übergeordneten Abteilung auf
create table people( id INT UNSIGNED AUTO_INCREMENT, name varchar(10) not null, dep_id INT UNSIGNED, departname varchar(10), FOREIGN KEY (dep_id) REFERENCES department(dep_id), primary key(id) )charset=utf8;
Ermitteln Sie die Gesamtzahl der Personen in der Abteilung der zweiten Ebene als B
INSERT INTO people VALUES(1,'hgy',4,'D'),(2,'abc',5,'E'),(3,'def',6,'F'), (4,'ddd',2,'B'),(5,'eee',2,'B');Es sollte berücksichtigt werden, dass sich einige Personen in der Abteilung der zweiten Ebene befinden (dort möglicherweise). Seien Sie keine Abteilung der dritten Ebene und keine Abteilung der vierten Ebene), einige Leute sind in Abteilungen der ersten Ebene und andere in Abteilungen der vierten Ebene (es gibt Abteilungen der ersten Ebene, Abteilungen der zweiten Ebene, Abteilungen der dritten Ebene usw.). Abteilungen der vierten Ebene)
select p.id, p.name, d1.dep_name as level1, d2.dep_name as level2, d3.dep_name as level3 from people as p left join department as d1 on d1.dep_id = p.dep_id left join department as d2 on d2.dep_id = d1.parent_id left join department as d3 on d3.dep_id = d2.parent_id where d1.dep_name='B' or d2.dep_name='B' or d3.dep_name='B';
Titelbeschreibung: Es gibt jetzt eine Gruppe von Schülern mit einer Gesamtpunktzahl von mehr als 200 in vier Fächern und ordne sie in umgekehrter Reihenfolge an 🎜>Hier ist ein Wissenspunkt, der nicht direkt nach Aliasen sortiert werden kann
Das obige ist der detaillierte Inhalt vonDetaillierte Beispiele für Probleme beim MySQL-Datenbankdesign. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!