Помощь в написании студенческих работ
Антистрессовый сервис

Физическая модель данных

РефератПомощь в написанииУзнать стоимостьмоей работы

CONSTRAINT FOREIGN KEY () REFERENCES. Students] () ON DELETE SET NULL. CONSTRAINT FOREIGN KEY () REFERENCES. Students] () ON DELETE CASCADE,. CONSTRAINT FOREIGN KEY () REFERENCES. Groups] () ON DELETE SET NULL. ПреподавательГруппаДисциплина. Рис. 3 Физическая модель данных. CONSTRAINT FOREIGN KEY () REFERENCES. Teachers] (),. CONSTRAINT FOREIGN KEY () REFERENCES. Subjects] (),. CONSTRAINT FOREIGN… Читать ещё >

Физическая модель данных (реферат, курсовая, диплом, контрольная)

Это модель данных которая описанна с помощью средств конкретной СУБД. В нашем случае это MS SQL Server 2016.

Физическая модель данных.

Рис. 3 Физическая модель данных

Пояснение:

Добавлена таблица ApplicationsForRegistration. Она служит для того что бы студент подавал заявку на регистрацию.

Скрипты создания таблиц

Группа.

CREATE TABLE [dbo]. Groups] (.

[Id] INT IDENTITY (1, 1) NOT NULL,.

[Number] INT NOT NULL,.

[YearOfAdmission] INT NOT NULL,.

[Faculty] NVARCHAR (128) NOT NULL,.

[Degree] NVARCHAR (128) NOT NULL,.

[FormOfStudy] NVARCHAR (128) NOT NULL,.

[MonitorId] INT NULL,.

CONSTRAINT [PK_Groups] PRIMARY KEY CLUSTERED ([Id] ASC),.

CONSTRAINT [FK_dbo_Groups_dbo_Students_MonitorId] FOREIGN KEY ([MonitorId]) REFERENCES [dbo]. Students] ([Id]) ON DELETE SET NULL.

);

GO.

CREATE NONCLUSTERED INDEX [IX_FK_dbo_Groups_dbo_Students_MonitorId].

ON [dbo]. Groups]([MonitorId] ASC);

MonitorId — Id старосты группы.

Внешний ключ на таблицу Student для старосты группы. При удалении этой таблицы Student то вместо неё ставиться null. Так как MonitorId не обязательное поле таблицы.

Используется некластеризованный индекс у внешнего ключа для увеличения скорости запросов.

Студент.

CREATE TABLE [dbo]. Students] (.

[Id] INT IDENTITY (1, 1) NOT NULL,.

[Number] NVARCHAR (128) NOT NULL,.

[FullName] NVARCHAR (128) NOT NULL,.

[YearOfBirth] INT NOT NULL,.

[GroupId] INT NULL,.

[Photo] VARBINARY (MAX) NULL,.

[UserName] NVARCHAR (256) NULL,.

[Email] NVARCHAR (128) NULL,.

CONSTRAINT [PK_Students] PRIMARY KEY CLUSTERED ([Id] ASC),.

CONSTRAINT [FK_dbo_Students_dbo_Groups_GroupId] FOREIGN KEY ([GroupId]) REFERENCES [dbo]. Groups] ([Id]) ON DELETE SET NULL.

);

GO.

CREATE NONCLUSTERED INDEX [IX_FK_dbo_Students_dbo_Groups_GroupId].

ON [dbo]. Students]([GroupId] ASC);

Таблица Student ссылается на таблицу Group через поле GroupId, для того что бы студент был привязан ко одной из групп.

Поле UserName используется для того что связываться с аккаунтом (если он есть).

Используется некластеризованный индекс у внешнего ключа для увеличения скорости запросов.

Преподаватель.

CREATE TABLE [dbo]. Teachers] (.

[Id] INT IDENTITY (1, 1) NOT NULL,.

[FullName] NVARCHAR (128) NOT NULL,.

[Departament] NVARCHAR (128) NOT NULL,.

[UserName] NVARCHAR (128) NULL,.

CONSTRAINT [PK_Teachers] PRIMARY KEY CLUSTERED ([Id] ASC).

);

Поле UserName используется для того что связываться с аккаунтом (если он есть).

Дисциплина.

CREATE TABLE [dbo]. Subjects] (.

[Id] INT IDENTITY (1, 1) NOT NULL,.

[Name] NVARCHAR (128) NOT NULL,.

[Departament] NVARCHAR (128) NOT NULL,.

CONSTRAINT [PK_Subjects] PRIMARY KEY CLUSTERED ([Id] ASC).

);

Семестр.

CREATE TABLE [dbo]. Semester] (.

[Id] INT IDENTITY (1, 1) NOT NULL,.

[BeginningDate] DATE NOT NULL,.

[EndDate] DATE NOT NULL,.

[Number] NVARCHAR (128) NOT NULL,.

[Year] NVARCHAR (128) NOT NULL,.

PRIMARY KEY CLUSTERED ([Id] ASC).

);

Таблица с оценками.

CREATE TABLE [dbo]. TableOfGrades] (.

[Id] INT IDENTITY (1, 1) NOT NULL,.

[TeachersGroupsSubjectId] INT NOT NULL,.

[TypeOfKnowledgeControl] NVARCHAR (128) NOT NULL,.

[SemesterId] INT NOT NULL,.

CONSTRAINT [PK_TableOfGrades] PRIMARY KEY CLUSTERED ([Id] ASC),.

CONSTRAINT [FK_dbo_TableOfGrades_dbo_TeachersGroupsSubjects_TeachersGroupsSubjectId] FOREIGN KEY ([TeachersGroupsSubjectId]) REFERENCES [dbo]. TeachersGroupsSubjects] ([Id]) ON DELETE CASCADE,.

CONSTRAINT [FK_dbo_TableOfGrades_dbo_Semester_SemesterId] FOREIGN KEY ([SemesterId]) REFERENCES [dbo]. Semester] ([Id]).

);

Таблица с оценками имеет внешний на таблицу ПреподавательГруппаДисциплина, для того что бы однозначно связать оценки с преподавателем, группой и дисциплиной.

Так же имеется внешний ключ на таблицу Семестр для того что бы связать оценки с определённым семестром.

При удалении связанной таблицы ПреподавательГруппаДисциплина, то Таблица оценок удаляется вслед за ней.

Таблицу Семестр нельзя удалить пока она связанна хотя бы с одной Таблица оценок.

Оценка.

CREATE TABLE [dbo]. TableEntry] (.

[Id] INT IDENTITY (1, 1) NOT NULL,.

[StudentId] INT NOT NULL,.

[Date] DATE NULL,.

[TableOfGradeId] INT NOT NULL,.

[Value] NVARCHAR (128) NULL,.

CONSTRAINT [PK_TableEntry] PRIMARY KEY CLUSTERED ([Id] ASC),.

CONSTRAINT [FK_dbo_TableEntry_dbo_Students_StudentId] FOREIGN KEY ([StudentId]) REFERENCES [dbo]. Students] ([Id]) ON DELETE CASCADE,.

CONSTRAINT [FK_dbo_TableEntry_dbo_TableOfGrades_TableOfGradeId] FOREIGN KEY ([TableOfGradeId]) REFERENCES [dbo]. TableOfGrades] ([Id]) ON DELETE CASCADE.

);

GO.

CREATE NONCLUSTERED INDEX [IX_FK_dbo_TableEntry_dbo_Students_StudentId].

ON [dbo]. TableEntry]([StudentId] ASC);

GO.

CREATE NONCLUSTERED INDEX [IX_FK_dbo_TableEntry_dbo_TableOfGrades_TableOfGradeId].

ON [dbo]. TableEntry]([TableOfGradeId] ASC);

Оценка имеет внешний ключ на Студента, чтобы связать оценку с определённым студентом. Так же имеется внешний ключ на Таблица оценок, для того что бы связать оценки с абстрактными данными хранящимися в Таблица оценок, такими данными как: преподаватель, дисциплина, группа, семестр.

При удалении связанного Студента или Таблицы оценок сама Оценка удаляется вслед за ними.

Используется некластеризованный индекс у внешних ключей для увеличения скорости запросов.

ПреподавательГруппаДисциплина.

CREATE TABLE [dbo]. TeachersGroupsSubjects] (.

[Id] INT IDENTITY (1, 1) NOT NULL,.

[GroupId] INT NOT NULL,.

[SubjectId] INT NOT NULL,.

[TeacherId] INT NOT NULL,.

CONSTRAINT [PK_TeachersGroupsSubjects] PRIMARY KEY CLUSTERED ([Id] ASC),.

CONSTRAINT [FK_dbo_TeachersGroupsSubjects_dbo_Subjects_SubjectId] FOREIGN KEY ([SubjectId]) REFERENCES [dbo]. Subjects] ([Id]),.

CONSTRAINT [FK_dbo_TeachersGroupsSubjects_dbo_Teachers_TeacherId] FOREIGN KEY ([TeacherId]) REFERENCES [dbo]. Teachers] ([Id]),.

CONSTRAINT [FK_dbo_TeachersGroupsSubjects_dbo_Groups_GroupId] FOREIGN KEY ([GroupId]) REFERENCES [dbo]. Groups] ([Id]).

);

GO.

CREATE NONCLUSTERED INDEX [IX_FK_dbo_TeachersGroupsSubjects_dbo_Groups_GroupId].

ON [dbo]. TeachersGroupsSubjects]([GroupId] ASC);

GO.

CREATE NONCLUSTERED INDEX [IX_FK_dbo_TeachersGroupsSubjects_dbo_Subjects_SubjectId].

ON [dbo]. TeachersGroupsSubjects]([SubjectId] ASC);

GO.

CREATE NONCLUSTERED INDEX [IX_FK_dbo_TeachersGroupsSubjects_dbo_Teachers_TeacherId].

ON [dbo]. TeachersGroupsSubjects]([TeacherId] ASC);

ПреподавательГруппаДисциплина имеет внешние ключи на Группу, Дисциплину и Преподавателя так-как смысл самой таблицы ПреподавательГруппаДисциплина для того что абстрагировать эту связь 3-х таблиц от Таблицы с оценками.

При удалении одной из связанных таблиц ПреподавательГруппаДисциплина тоже удаляется.

Показать весь текст
Заполнить форму текущей работой