Ответ на Задание 1:
Отношением является таблица Student. Атрибутами являются ее столбцы: StudentID, FullName, BirthDate, Email, GroupName. Кортежами являются отдельные строки таблицы, каждая из которых описывает одного студента.

В качестве первичного ключа целесообразно использовать StudentID, поскольку идентификатор должен однозначно определять каждого студента и не повторяться для разных записей.

 

Ответ Задание 2:

CREATE TABLE StudentGroup (

    GroupID INT PRIMARY KEY,

    GroupName VARCHAR(50) NOT NULL

);

 

CREATE TABLE Student (

    StudentID INT PRIMARY KEY,

    FullName VARCHAR(100) NOT NULL,

    Email VARCHAR(100),

    GroupID INT,

    FOREIGN KEY (GroupID) REFERENCES StudentGroup(GroupID)

);

GroupID является первичным ключом таблицы StudentGroup, а StudentID — первичным ключом таблицы Student.

Поле GroupID в таблице Student является внешним ключом и ссылается на GroupID таблицы StudentGroup.

Таким образом реализуется связь «один ко многим» (1:N): одна группа может содержать много студентов, но каждый студент относится к одной группе.

 

Ответ на Задание 3:
Между студентами и дисциплинами существует связь «многие ко многим» (M:N).

Напрямую такую связь в реляционной базе данных обычно реализуют с помощью промежуточной таблицы.

CREATE TABLE Student (

    StudentID INT PRIMARY KEY,

    FullName VARCHAR(100) NOT NULL

);

 

CREATE TABLE Course (

    CourseID INT PRIMARY KEY,

    CourseName VARCHAR(100) NOT NULL

);

 

CREATE TABLE Enrollment (

    StudentID INT,

    CourseID INT,

    EnrollmentDate DATE,

    PRIMARY KEY (StudentID, CourseID),

    FOREIGN KEY (StudentID) REFERENCES Student(StudentID),

    FOREIGN KEY (CourseID) REFERENCES Course(CourseID)

);

Таблица Enrollment является связующей таблицей. Пара StudentID и CourseID образует составной первичный ключ.

Например, если студент с StudentID = 15 зарегистрирован на трех дисциплинах, в таблице Enrollment будут находиться три записи с его идентификатором.

Такая структура позволяет хранить дополнительные характеристики самой связи, например EnrollmentDate, итоговую оценку или статус прохождения дисциплины.