create table if not exists CreditCard
(
id int auto_increment
primary key,
ownerFullName varchar(16) not null,
number varchar(16) not null,
pin varchar(4) not null,
expirationDate date not null
)
collate = utf8_unicode_ci;
create table if not exists Faculty
(
id int auto_increment
primary key,
name varchar(255) not null
)
collate = utf8_unicode_ci;
create table if not exists Course
(
id int auto_increment
primary key,
faculty_id int null,
required_id int null,
name varchar(255) not null,
constraint FK_11326A8F680CAB68
foreign key (faculty_id) references Faculty (id),
constraint FK_11326A8FDD3DFC3F
foreign key (required_id) references Course (id)
)
collate = utf8_unicode_ci;
create index IDX_11326A8F680CAB68
on Course (faculty_id);
create index IDX_11326A8FDD3DFC3F
on Course (required_id);
create table if not exists Person
(
id int auto_increment
primary key,
firstName varchar(255) not null,
lastName varchar(255) not null,
birthDate datetime null,
email varchar(200) not null
)
collate = utf8_unicode_ci;
create table if not exists Assistant
(
id int auto_increment
primary key,
details_id int not null,
constraint UNIQ_4068FE72BB1A0722
unique (details_id),
constraint FK_4068FE72BB1A0722
foreign key (details_id) references Person (id)
)
collate = utf8_unicode_ci;
create table if not exists Student
(
id int auto_increment
primary key,
details_id int not null,
username varchar(255) not null,
password varchar(255) not null,
creditCard_id int null,
constraint UNIQ_789E96AF4D74A55E
unique (creditCard_id),
constraint UNIQ_789E96AFBB1A0722
unique (details_id),
constraint FK_789E96AF4D74A55E
foreign key (creditCard_id) references CreditCard (id),
constraint FK_789E96AFBB1A0722
foreign key (details_id) references Person (id)
)
collate = utf8_unicode_ci;
create table if not exists Inscription
(
id int auto_increment
primary key,
student_id int not null,
createdAt datetime not null,
constraint FK_D80C7901CB944F1A
foreign key (student_id) references Student (id)
)
collate = utf8_unicode_ci;
create index IDX_D80C7901CB944F1A
on Inscription (student_id);
create table if not exists Teacher
(
id int auto_increment
primary key,
details_id int not null,
constraint UNIQ_7F4B9F49BB1A0722
unique (details_id),
constraint FK_7F4B9F49BB1A0722
foreign key (details_id) references Person (id)
)
collate = utf8_unicode_ci;
create table if not exists Session
(
id int auto_increment
primary key,
course_id int not null,
teacher_id int not null,
assistant_id int null,
academicYear int not null,
firstLesson date not null,
lastLesson date not null,
code varchar(8) not null,
constraint FK_1FF9EC4841807E1D
foreign key (teacher_id) references Teacher (id),
constraint FK_1FF9EC48591CC992
foreign key (course_id) references Course (id),
constraint FK_1FF9EC48E05387EF
foreign key (assistant_id) references Assistant (id)
)
collate = utf8_unicode_ci;
create index IDX_1FF9EC4841807E1D
on Session (teacher_id);
create index IDX_1FF9EC48591CC992
on Session (course_id);
create index IDX_1FF9EC48E05387EF
on Session (assistant_id);
create table if not exists inscription_session
(
inscription_id int not null,
session_id int not null,
primary key (inscription_id, session_id),
constraint FK_F99523385DAC5993
foreign key (inscription_id) references Inscription (id)
on delete cascade,
constraint FK_F9952338613FECDF
foreign key (session_id) references Session (id)
on delete cascade
)
collate = utf8_unicode_ci;
create index IDX_F99523385DAC5993
on inscription_session (inscription_id);
create index IDX_F9952338613FECDF
on inscription_session (session_id);
create view introductory_courses as
select *
from Course
where (required_id is null);
create view students_with_no_card as
select *
from Student
where (creditCard_id is null);
|