Heim  >  Artikel  >  Datenbank  >  Detaillierte Beispiele für Probleme beim MySQL-Datenbankdesign

Detaillierte Beispiele für Probleme beim MySQL-Datenbankdesign

零到壹度
零到壹度Original
2018-03-30 13:41:172447Durchsuche

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.

Frage 1: Hierarchisches Datenbankdesign

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 Detaillierte Beispiele für Probleme beim MySQL-Datenbankdesign und stellen Sie dann eine Verbindung über den linken Join her, um die aktuelle Abteilung zu erhalten und seiner übergeordneten Abteilung. >

Nachdem wir die hierarchischen Informationen der Abteilung gespeichert haben, beginnen wir mit dem Entwurf einer Tabelle des Abteilungspersonals
单个插入
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

Detaillierte Beispiele für Probleme beim MySQL-Datenbankdesign
dep_idGeben 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';

Detaillierte Beispiele für Probleme beim MySQL-DatenbankdesignSuchen 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 BDetaillierte Beispiele für Probleme beim MySQL-Datenbankdesign

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)

显示Detaillierte Beispiele für Probleme beim MySQL-Datenbankdesign

Zweite Frage: Einfache Statistik
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 Detaillierte Beispiele für Probleme beim MySQL-Datenbankdesign

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn