Maison > base de données > tutoriel mysql > Exemples détaillés de problèmes de conception de bases de données MySQL

Exemples détaillés de problèmes de conception de bases de données MySQL

零到壹度
Libérer: 2018-03-30 13:41:17
original
2480 Les gens l'ont consulté

Cet article partage principalement avec vous un article sur les problèmes de conception de la base de données MySQL. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

Question 1 : Conception d'une base de données hiérarchique

Description de la question : Il existe actuellement environ 100 000 éléments de données, enregistrant les employés d'un service. Sous la plupart des départements se trouve une structure hiérarchique avec de nombreux sous-départements. Par exemple, la partie A de premier niveau, les départements de deuxième niveau A', B', C', les départements de troisième niveau A", B", C". Comment concevoir une base de données ? Nous devons compter toutes les personnes sous la partie A' de deuxième niveau
Analyse :
Une conception de base de données hiérarchique est utilisée ici

CREATE TABLE DEPARTMENT(
    DEP_ID INT UNSIGNED AUTO_INCREMENT,
    DEP_NAME VARCHAR(10) NOT NULL,
    PARENT_ID INT,    
    PRIMARY KEY(DEP_ID)
)CHARSET=utf8;
Copier après la connexion

Exemples détaillés de problèmes de conception de bases de données MySQL
Insérer des données

单个插入
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);
Copier après la connexion
dep_iddep_nameparent_id
1ANULL
2B1
3C1
4D2
5E2
6F3
7G3

Exemples détaillés de problèmes de conception de bases de données MySQL
Affichez la hiérarchie. La jointure gauche est utilisée ici. En fonction du dep_id de ce niveau, recherchez son parent_id, puis connectez-le via la jointure gauche pour obtenir le département actuel et son département parent. .>

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';
Copier après la connexion
Après avoir stocké les informations hiérarchiques du département, nous commençons à concevoir un tableau du personnel du département

Créer le tableau et stocker les informations du personnel du départementExemples détaillés de problèmes de conception de bases de données MySQL

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;
Copier après la connexion
Insérer les données de test pertinentes

Exemples détaillés de problèmes de conception de bases de données MySQL

INSERT INTO people VALUES(1,'hgy',4,'D'),(2,'abc',5,'E'),(3,'def',6,'F'),
        (4,'ddd',2,'B'),(5,'eee',2,'B');
Copier après la connexion
Trouver la personne dont le département secondaire est B et répertorier les informations de son département supérieur

显示Exemples détaillés de problèmes de conception de bases de données MySQL

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';
Copier après la connexion
Trouver le nombre total de personnes dans le département de deuxième niveau comme B

Exemples détaillés de problèmes de conception de bases de données MySQL

Il faut considérer que certaines personnes sont dans le département de deuxième niveau (il peut n'y avoir pas de troisième- département de niveau et pas de département de quatrième niveau), certaines personnes sont dans des départements de premier niveau et d'autres dans des départements de quatrième niveau (il y a des départements de premier niveau, des départements de deuxième niveau, des départements de troisième niveau et des départements de quatrième niveau )
select count(*) as total
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';
Copier après la connexion
idnamedepartment_iddepartname
1hgy4D
2abc5E
3def6F
4ddd2B
5eee2B


Deuxième question : Statistiques simples Exemples détaillés de problèmes de conception de bases de données MySQL

Description du titre : Il existe maintenant un groupe de notes d'élèves. Trouvez les élèves avec un score total supérieur à 200 dans. quatre matières, et organisez-les dans l'ordre inverse >

Trier selon le score total des quatre matières
CREATE TABLE STUDENT(
    ID INT UNSIGNED AUTO_INCREMENT,
    SCORE1 INT NOT NULL,
    SCORE2 INT NOT NULL,
    SCORE3 INT NOT NULL,
    SCORE4 INT NOT NULL,    
    PRIMARY KEY(ID)
)CHARSET=utf8;
Copier après la connexion

Exemples détaillés de problèmes de conception de bases de données MySQL

INSERT INTO STUDENT VALUES(1,100,98,10,4),(2,100,9,10,4),(3,70,0,180,40),(4,10,98,1,4),(5,30,7,10,4),(6,8,88,1,43);
Copier après la connexion
Voici. un point de connaissance qui ne peut pas être trié directement par alias

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal