UNIVERSITY OF WEST ATTICA
SCHOOL OF ENGINEERING
DEPARTMENT OF COMPUTER ENGINEERING AND INFORMATICS
Databases I
Vasileios Evangelos Athanasiou
Student ID: 19390005
Supervisor: Anastasios Tsolakidis, Assistant Professor
Athens, June 2023
The objective of this task is to strengthen practical skills in SQL querying, focusing on data classification, aggregation, and relational joins using a structured personnel database.
| Section | Folder / File | Description |
|---|---|---|
| 1 | assign/ |
Assignment material |
| 1.1 | assign/assignment_03.pdf |
Assignment description (English) |
| 1.2 | assign/εργασία_03.pdf |
Assignment description (Greek) |
| 2 | docs/ |
Theoretical documentation |
| 2.1 | docs/Classification-Join-Tables.pdf |
Table classification and JOIN operations (English) |
| 2.2 | docs/Ταξινόμηση-Join-Συνδέσεις.pdf |
Table classification and JOIN operations (Greek) |
| 3 | README.md |
Repository overview and instructions |
The project utilizes a database named new_personnel, which consists of four primary tables:
-
DEPT
Stores department information, including department number, name, and location. -
EMP
Contains employee records such as job titles, hire dates, salaries, commissions, and manager IDs. -
PROJ
Holds project codes and project descriptions. -
ASSIGN
A junction table linking employees to projects, including the time spent on each project.
The assignment covers a wide range of essential SQL functionalities:
- Use of
ORDER BYto organize employee lists based on:- Commission
- Job position
- Salary
- Application of
GROUP BYandHAVINGto:- Calculate average salaries per department
- Filter results based on employee count conditions
- Calculation of employee service years using:
DATEDIFFFORMAT
- Reference date used: 2020-04-15
-
Equi-Joins
Linking employees to their respective departments and projects. -
Self-Joins
Joining theEMPtable to itself to identify employee–manager relationships. -
Multiple Joins
ConnectingEMP,ASSIGN, andPROJtables to identify employees working more than 50 hours on specific projects.
As an example, the self-join operation that maps employees to their managers produces the following structure:
| Department | Manager | Employee |
|---|---|---|
| ACCOUNTING | ELMASRI | CODD |
| ACCOUNTING | ELMASRI | DATE |
| ACCOUNTING | ELMASRI | ELMASRI |
| SALES | NAVATHE | NAVATHE |
This guide describes how to install, initialize, and verify the database environment required to execute the laboratory tasks.
You will need a Relational Database Management System (RDBMS) that supports SQL, such as MySQL or MariaDB.
Before using this project, ensure you have the following installed:
- MySQL (recommended)
- Compatible alternatives:
- MariaDB
- PostgreSQL (minor syntax adjustments may be required)
Any SQL client capable of executing .sql scripts:
- MySQL Workbench (recommended)
- phpMyAdmin
- DBeaver
- Command-line MySQL client
Make sure your SQL client is properly connected to your database server.
Open a terminal/command prompt and run:
git clone https://github.com/Data-Bases-1/Join.git- Open the repository URL in your browser
- Click Code → Download ZIP
- Extract the ZIP file to a local directory
First, remove any existing version of the database to avoid conflicts. Then create and select the new database.
DROP DATABASE IF EXISTS new_personnel;
CREATE DATABASE IF NOT EXISTS new_personnel;
USE new_personnel;Tables must be created in a specific order to satisfy Foreign Key constraints.
DEPTEMPPROJASSIGN
-
DEPTStores department information, including department number, name, and location.
-
EMPStores employee details and references the DEPT table through the DEPTNO foreign key.
-
PROJContains project codes and project descriptions.
-
ASSIGNA junction table that links employees to projects and records the time spent on each project.
Insert the sample data provided in the laboratory task to populate the database.
-
DepartmentsAdd department records with locations such as ATHENS and LONDON.
-
EmployeesInsert employee records including staff such as CODD, ELMASRI, and NAVATHE.
-
ProjectsDefine projects such as PAYROLL and PERSONNEL.
-
AssignmentsLink employees to projects with assigned time (e.g., Employee 10 assigned to Project 100 for 40 hours).
Use the following SQL commands to verify that the database schema and data have been created successfully:
SELECT * FROM DEPT;
SELECT * FROM EMP;
SELECT * FROM PROJ;
SELECT * FROM ASSIGN;- Navigate to the
docs/directory - Open the report corresponding to your preferred language:
- English:
Classification-Join-Tables.pdf - Greek:
Ταξινόμηση-Join-Συνδέσεις.pdf
- English:
