
Validators
Field’s content |
Field’s name |
Type, length |
Note |
ID |
validator_id |
N |
PK |
Name |
model_name |
C(25) |
Mandatory field |
Date of technocal inspection |
date_tech_inspec |
D |
Mandatory field |
Ready for use |
rdy_for_use |
C(3) |
Mandatory field |
Transport |
transport_id |
N |
Foreign key |
TranspCond
Field’s content |
Field’s name |
Type, length |
Note |
ID |
transpcond_id |
N |
PK |
Transport |
transport_id |
N |
FK |
Conductor |
conductor_id |
N |
FK |
TranspDrive
Field’s content |
Field’s name |
Type, length |
Note |
ID |
transpdrive_id |
N |
PK |
Transport |
transport_id |
N |
FK |
Drivers |
driver_id |
N |
FK |
StopRoute
Field’s content |
Field’s name |
Type, length |
Note |
ID |
stoproute_id |
N |
PK |
Routes |
route_id |
N |
FK |
Stops |
stop_id |
N |
FK |
transport |
transport_id |
N |
FK |
Normalization:
•1NF:
Order to lead to the first normal form :
I deleted repetitions of Driver in Transport by creating a new entity Driver.
• 2NF:
I deleted all the partial dependence and did order to now I have a table there is not partially dependent entities. Now my table is fully consistent with the second normal form. Ideleted many-to-many between “Transport” and “Conductor”, and create new entities “TranspCond”.
I did delete many-to-many between “Route” and “Stop”, and create new entities “StopRoute”.
• 3NF:
To lead to the third normal form, I deleted all the transitive dependencies.
For example I had Autopark attributes in Transport entity.
I created a new Autopark entity.
4. Physical design
Create our entities using PostgreSQL as a code. Set all the attributes for each entity, so we can set additional restrictions, such that the column name is not equal to zero (not null), etc. Give to each attribute data type ( Int, varhar, time, date, etc). Sets the maximum length for string lines.
create table Autopark(
Autopark_id integer primary key,
Autopark_name varchar(25) Not Null
);
create table Driver(
Driver_id integer primary key,
Driver_Name varchar(50),
Driver_Surname varchar(50),
Date_birth date,
Class_driving varchar(25),
Exp varchar(25),
Salary integer not null,
Address varchar(25),
Telephone_number varchar(30),
E_mail varchar(25)
);
create table Conductor(
Conductor_id integer primary key,
Conductor_Name varchar(50),
Conductor_Surname varchar(50),
Date_birth date,
Salary integer not null,
Address varchar(25),
Telephone_number varchar(30),
E_mail varchar(25)
);
create table Route(
Route_id integer primary key,
Start_point varchar(25),
Final_point varchar(25),
Interval_length integer
);
create table Stop(
Stop_id integer primary key,
Stops_name varchar(25)
);
create table Breakage(
Breakage_id integer primary key,
Breakage_date date,
Breakage_discription varchar(50)
);
create table Transport(
Transport_id integer primary key,
Model_name varchar(25) not null,
Type varchar(25),
Mileage integer,
Date_tech_inspec date,
Ready_for_use varchar(25),
Number_seats integer not null,
Total_capacity integer not null,
Have_validator varchar(25),
Autopark_id integer,
Route_id integer,
foreign key (Route_id) references Route(Route_id),
foreign key (autopark_id) references Autopark(autopark_id)
);
create table Validator(
Validator_id integer primary key,
Model_name varchar(50),
Date_tech_inspec date,
Ready_for_use varchar(25),
Transport_id integer,
foreign key(Transport_id) references Transport(Transport_id)
);
create table TranspCond(
Transpcond_id integer,
Transport_id integer,
Conductor_id integer,
foreign key(Transport_id) references Transport(Transport_id),
foreign key(Conductor_id) references Conductor(Conductor_id)
);
create table TranspDrive(
Transpdrive_id integer,
Transport_id integer,
Driver_id integer,
foreign key(Transport_id) references Transport(Transport_id),
foreign key(Driver_id) references Driver(Driver_id)
);
create table StopRoute(
Stoproute_id integer,
Transport_id integer,
Route_id integer,
Stop_id integer,
foreign key(Transport_id) references Transport(Transport_id),
foreign key(Route_id) references Route(Route_id),
foreign key(Stop_id) references Stop(Stop_id)
);