Base de données Employee (Firebird) : schéma, tables et exercices SQL
Employee est la base d'exemple fournie avec Firebird : employés, services, postes, projets, clients et ventes d'une petite entreprise. Sur SQLtest.online, vous l'interrogez directement dans le navigateur : vous résolvez des exercices corrigés automatiquement et exécutez vos propres requêtes dans le bac à sable, sans rien installer.
- 10 tables et 1 vue
- 42 employés
- 21 services
- 33 exercices SQL
Qu'est-ce que Employee
Employee est la base d'exemple classique de Firebird, héritée d'InterBase. Elle décrit une petite entreprise internationale : l'arbre des services, le personnel et l'historique des salaires, des projets avec leurs budgets et des ventes aux clients.
La base est petite, les résultats se vérifient donc à l'œil, mais ses relations sont intéressantes : une hiérarchie de services, une clé étrangère composite des employés vers les postes et des liens plusieurs-à-plusieurs entre employés et projets. C'est aussi l'occasion de pratiquer le dialecte SQL de Firebird.
Diagramme ER
Le diagramme montre les tables de Employee et les clés étrangères qui les relient. Cliquez pour l'ouvrir en taille réelle.
Contenu de la base
Les tables se répartissent en trois groupes.
Personnel
EMPLOYEE, DEPARTMENT (chaque service a un service parent), JOB et SALARY_HISTORY.
Projets
PROJECT, la table de liaison EMPLOYEE_PROJECT et les budgets annuels dans PROJ_DEPT_BUDGET.
Ventes
CUSTOMER, SALES (bons de commande) et COUNTRY avec les devises.
L'essentiel à retenir : un poste est identifié par trois colonnes à la fois (code, grade et pays), la jointure de EMPLOYEE avec JOB les utilise donc toutes les trois. La vue PHONE_LIST associe les employés aux téléphones de leur service.
Volume de données des tables :
| Table | Lignes | Contenu |
|---|---|---|
| EMPLOYEE | 42 | employés |
| DEPARTMENT | 21 | services |
| JOB | 31 | postes et fourchettes de salaire |
| SALARY_HISTORY | 49 | évolutions de salaire |
| PROJECT | 6 | projets |
| EMPLOYEE_PROJECT | 28 | employés ↔ projets |
| PROJ_DEPT_BUDGET | 24 | budgets de projet par service et par année |
| CUSTOMER | 15 | clients |
| SALES | 33 | bons de commande |
| COUNTRY | 16 | pays et devises |
Structure des tables
Cliquez sur une table pour voir ses colonnes, une ligne d'exemple et ses clés.
Liste des tables
- COUNTRYNom du pays
- CURRENCYDevise utilisée dans le pays
| COUNTRY | CURRENCY |
|---|---|
| USA | Dollar |
- JOB_CODECode du poste
- JOB_GRADENiveau du poste
- JOB_COUNTRYPays associé au poste
- JOB_TITLEIntitulé du poste
- MIN_SALARYSalaire minimum pour le poste
- MAX_SALARYSalaire maximum pour le poste
- JOB_REQUIREMENTExigences du poste
- LANGUAGE_REQExigences linguistiques
| JOB_CODE | JOB_GRADE | JOB_COUNTRY | JOB_TITLE | MIN_SALARY | MAX_SALARY | JOB_REQUIREMENT | LANGUAGE_REQ |
|---|---|---|---|---|---|---|---|
| CEO | 1 | USA | Chief Executive Officer | 130000.00 | 250000.00 | Pas d'exigences spécifiques. | [null] |
- FOREIGN KEY (JOB_COUNTRY) REFERENCES COUNTRY(COUNTRY)
- DEPT_NONuméro du département
- DEPARTMENTNom du département
- HEAD_DEPTDépartement parent (peut être null)
- MNGR_NONuméro du manager
- BUDGETBudget du département
- LOCATIONLocalisation du département
- PHONE_NONuméro de téléphone du département
| DEPT_NO | DEPARTMENT | HEAD_DEPT | MNGR_NO | BUDGET | LOCATION | PHONE_NO |
|---|---|---|---|---|---|---|
| 000 | Corporate Office | [null] | 105 | 1000000.00 | Monterey | (408) 555-1234 |
- FOREIGN KEY (HEAD_DEPT) REFERENCES DEPARTMENT(DEPT_NO)
- EMP_NONuméro de l'employé
- FIRST_NAMEPrénom de l'employé
- LAST_NAMENom de famille de l'employé
- PHONE_EXTPoste téléphonique de l'employé
- HIRE_DATEDate d'embauche de l'employé
- DEPT_NONuméro du département
- JOB_CODECode du poste de l'employé
- JOB_GRADENiveau du poste de l'employé
- JOB_COUNTRYPays associé au poste de l'employé
- SALARYSalaire de l'employé
- FULL_NAMENom complet de l'employé
| EMP_NO | FIRST_NAME | LAST_NAME | PHONE_EXT | HIRE_DATE | DEPT_NO | JOB_CODE | JOB_GRADE | JOB_COUNTRY | SALARY | FULL_NAME |
|---|---|---|---|---|---|---|---|---|---|---|
| 2 | Robert | Nelson | 250 | 1988-12-28 00:00:00 | 600 | VP | 2 | USA | 105900.00 | Nelson, Robert |
- FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT(DEPT_NO)
- FOREIGN KEY (JOB_CODE) REFERENCES JOB(JOB_CODE)
- PROJ_IDID du projet
- PROJ_NAMENom du projet
- PROJ_DESCDescription du projet
- TEAM_LEADERChef d'équipe pour le projet
- PRODUCTProduit associé au projet
| PROJ_ID | PROJ_NAME | PROJ_DESC | TEAM_LEADER | PRODUCT |
|---|---|---|---|---|
| VBASE | Video Database | Développement d'un système de gestion de base de données vidéo pour gérer la distribution vidéo à la demande. | 45 | software |
- FOREIGN KEY (TEAM_LEADER) REFERENCES EMPLOYEE(EMP_NO)
- EMP_NONuméro de l'employé
- PROJ_IDID du projet
| EMP_NO | PROJ_ID |
|---|---|
| 144 | DGPII |
- FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE(EMP_NO)
- FOREIGN KEY (PROJ_ID) REFERENCES PROJECT(PROJ_ID)
- FISCAL_YEARAnnée fiscale
- PROJ_IDID du projet
- DEPT_NONuméro du département
- QUART_HEAD_CNTEffectif trimestriel (peut être null)
- PROJECTED_BUDGETBudget prévisionnel pour l'année fiscale
| FISCAL_YEAR | PROJ_ID | DEPT_NO | QUART_HEAD_CNT | PROJECTED_BUDGET |
|---|---|---|---|---|
| 1994 | GUIDE | 100 | [null] | 200000.00 |
- FOREIGN KEY (PROJ_ID) REFERENCES PROJECT(PROJ_ID)
- FOREIGN KEY (DEPT_NO) REFERENCES DEPARTMENT(DEPT_NO)
- EMP_NONuméro de l'employé
- CHANGE_DATEDate du changement de salaire
- UPDATER_IDIdentifiant de la personne effectuant la mise à jour
- OLD_SALARYSalaire précédent
- PERCENT_CHANGEPourcentage de changement de salaire
- NEW_SALARYNouveau salaire après le changement
| EMP_NO | CHANGE_DATE | UPDATER_ID | OLD_SALARY | PERCENT_CHANGE | NEW_SALARY |
|---|---|---|---|---|---|
| 28 | 1992-12-15 00:00:00 | admin2 | 20000.00 | 10.000000 | 22000.000000 |
- FOREIGN KEY (EMP_NO) REFERENCES EMPLOYEE(EMP_NO)
- CUST_NONuméro du client
- CUSTOMERNom du client
- CONTACT_FIRSTPrénom de la personne de contact
- CONTACT_LASTNom de famille de la personne de contact
- PHONE_NONuméro de téléphone du client
- ADDRESS_LINE1 Adresse ligne 1
- ADDRESS_LINE2Adresse ligne 2 (peut être null)
- CITYVille du client
- STATE_PROVINCEÉtat ou province du client
- COUNTRYPays du client
- POSTAL_CODECode postal du client
- ON_HOLDStatut "en attente" (peut être null)
| CUST_NO | CUSTOMER | CONTACT_FIRST | CONTACT_LAST | PHONE_NO | ADDRESS_LINE1 | ADDRESS_LINE2 | CITY | STATE_PROVINCE | COUNTRY | POSTAL_CODE | ON_HOLD |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1001 | Signature Design | Dale J. | Little | (619) 530-2710 | 15500 Pacific Heights Blvd. | [null] | San Diego | CA | USA | 92121 | [null] |
- FOREIGN KEY (COUNTRY) REFERENCES COUNTRY(COUNTRY)
- PO_NUMBERNuméro du bon de commande
- CUST_NONuméro du client associé à la commande
- SALES_REPNuméro du représentant commercial
- ORDER_STATUSStatut de la commande
- ORDER_DATEDate de la commande
- SHIP_DATEDate d'expédition
- DATE_NEEDEDDate limite souhaitée (peut être null)
- PAIDStatut de paiement
- QTY_ORDEREDQuantité commandée
- TOTAL_VALUEValeur totale de la commande
- DISCOUNTRemise appliquée
- ITEM_TYPEType d'article dans la commande
- AGEDValeur d'ancienneté
| PO_NUMBER | CUST_NO | SALES_REP | ORDER_STATUS | ORDER_DATE | SHIP_DATE | DATE_NEEDED | PAID | QTY_ORDERED | TOTAL_VALUE | DISCOUNT | ITEM_TYPE | AGED |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| V91E0210 | 1004 | 11 | shipped | 1991-03-04 00:00:00 | 1991-03-05 00:00:00 | [null] | y | 10 | 5000.00 | 0.100000 | hardware | 1.000000000 |
- FOREIGN KEY (CUST_NO) REFERENCES CUSTOMER(CUST_NO)
- FOREIGN KEY (SALES_REP) REFERENCES EMPLOYEE(EMP_NO)
Voici la liste des vues de cette base de données :
- EMP_NONuméro de l'employé
- FIRST_NAMEPrénom de l'employé
- LAST_NAMENom de famille de l'employé
- PHONE_EXTPoste téléphonique de l'employé
- LOCATIONEmplacement du département
- PHONE_NONuméro de téléphone du département
| EMP_NO | FIRST_NAME | LAST_NAME | PHONE_EXT | LOCATION | PHONE_NO |
|---|---|---|---|---|---|
| 2 | Robert | Nelson | 250 | Monterey | (408) 555-1234 |
Exemples de requêtes
Ces requêtes montrent comment les données sont reliées. Copiez-en une et exécutez-la dans le bac à sable.
Un employé, son service et son poste : une jointure sur une clé composite de trois colonnes.
SELECT FIRST 3 e.FIRST_NAME, e.LAST_NAME, d.DEPARTMENT, j.JOB_TITLE
FROM EMPLOYEE e
JOIN DEPARTMENT d ON d.DEPT_NO = e.DEPT_NO
JOIN JOB j ON j.JOB_CODE = e.JOB_CODE
AND j.JOB_GRADE = e.JOB_GRADE
AND j.JOB_COUNTRY = e.JOB_COUNTRY
ORDER BY e.EMP_NO;
| FIRST_NAME | LAST_NAME | DEPARTMENT | JOB_TITLE |
|---|---|---|---|
| Robert | Nelson | Engineering | Vice President |
| Bruce | Young | Software Development | Engineer |
| Kim | Lambert | Field Office: East Coast | Engineer |
Commandes et clients : Firebird limite les lignes avec FIRST n.
SELECT FIRST 3 s.PO_NUMBER, c.CUSTOMER, s.ORDER_DATE, s.TOTAL_VALUE
FROM SALES s
JOIN CUSTOMER c ON c.CUST_NO = s.CUST_NO
ORDER BY s.ORDER_DATE;
| PO_NUMBER | CUSTOMER | ORDER_DATE | TOTAL_VALUE |
|---|---|---|---|
| V91E0210 | Central Bank | 1991-03-04 00:00:00 | 5000.00 |
| V92J1003 | MPM Corporation | 1992-07-26 00:00:00 | 2985.00 |
| V92E0340 | Central Bank | 1992-10-15 00:00:00 | 70000.00 |
Exercices SQL par thème
La base Employee compte 33 exercices, des sélections simples jusqu'aux fonctions de fenêtrage et à la modification des données. Les solutions sont vérifiées automatiquement sur un vrai serveur Firebird. Le nombre à droite indique combien d'exercices compte le thème ; les points colorés montrent la plage de difficulté.
- Les bases du SQL 3
- Fonctions d'agrégation 3
- Fonctions de fenêtrage 2
- Requêtes analytiques 1
- Manipulation de données (DML) 1
Par où commencer
Les premiers exercices sur la base Employee :
- Afficher les départements
- Trouver les pays hors Dollar/Euro
- Liste des sous-départements (JOIN)
- Obtenir la liste des sous-départements
- Trouver les employés étrangers
- Trouver les employés par département
- Trouver le salaire de l'employé
- Employés avec salaires élevés
- Employés avec un salaire supérieur à la moyenne
- Trouver le département
Questions fréquentes
Faut-il installer Firebird pour utiliser Employee ?
Non. Les exercices et le bac à sable de SQLtest.online exécutent les requêtes sur nos serveurs : un navigateur suffit. Dans le bac à sable, Employee est disponible sous Firebird 4.0.
D'où vient la base Employee ?
Elle est fournie avec Firebird comme base d'exemple (employee.fdb) et remonte à InterBase, le prédécesseur de Firebird.
En quoi le SQL de Firebird est-il différent ?
La plupart du SQL standard fonctionne normalement. Premières différences rencontrées : FIRST n / SKIP n ou FETCH FIRST n ROWS ONLY pour limiter les lignes, et des noms d'objets en majuscules.