Skip to content
Snippets Groups Projects
Commit 53ebb37b authored by PavelBegunkov's avatar PavelBegunkov
Browse files

Grades

parent 0a89a58c
Branches
Tags
No related merge requests found
......@@ -20,7 +20,17 @@ SET time_zone = "+00:00";
-- База данных: `Sample2`
--
--
-- Дамп данных таблицы `grades`
--
INSERT INTO `grades` (`ID`, `Grade`, `Degree`) VALUES
(1, 1, 'bachelor'),
(2, 2, 'bachelor'),
(3, 3, 'bachelor'),
(4, 4, 'bachelor'),
(5, 5, 'specialist'),
(6, 1, 'master'),
(7, 2, 'master');
--
-- Дамп данных таблицы `job_positions`
......@@ -129,7 +139,7 @@ INSERT INTO `specializations` (`ID`, `Name`, `Abbr`, `FacultyID`) VALUES
-- Дамп данных таблицы `study_groups`
--
INSERT INTO `study_groups` (`ID`, `Grade`, `GroupNum`, `SpecializationID`, `Name`) VALUES
INSERT INTO `study_groups` (`ID`, `GradeID`, `GroupNum`, `SpecializationID`, `Name`) VALUES
(1, 1, 1, 1, NULL),
(2, 1, 2, 1, NULL),
(3, 1, 3, 2, NULL),
......@@ -171,7 +181,7 @@ INSERT INTO `teachers` (`ID`, `LastName`, `FirstName`, `SecondName`, `JobPositio
-- Дамп данных таблицы `disciplines`
--
INSERT INTO `disciplines` (`ID`, `Grade`, `SubjectID`, `AuthorID`, `ExamType`, `SemesterID`, `PracticeCount`, `LectionCount`, `FacultyID`) VALUES
INSERT INTO `disciplines` (`ID`, `GradeID`, `SubjectID`, `AuthorID`, `ExamType`, `SemesterID`, `PracticeCount`, `LectionCount`, `FacultyID`) VALUES
(1, 1, 1, 1, 'exam', 1, 0, 36, 1),
(2, 1, 5, 2, 'exam', 1, 18, 36, 1),
(3, 1, 2, 1, 'credit', 1, 18, 0, 1),
......
......@@ -244,7 +244,7 @@ END //
DROP PROCEDURE IF EXISTS GetStudyGroups//
CREATE PROCEDURE `GetStudyGroups` ( IN `Grade` INT,
CREATE PROCEDURE `GetStudyGroups` ( IN `GradeID` INT,
IN `FacultyID` INT
)
NO SQL
......@@ -257,14 +257,14 @@ BEGIN
specializations.FacultyID AS 'FacultyID'
FROM `study_groups`
INNER JOIN `specializations` ON specializations.ID = study_groups.SpecializationID
WHERE ( Grade = 0 OR study_groups.Grade = Grade ) AND
WHERE ( GradeID = 0 OR study_groups.GradeID = GradeID ) AND
specializations.FacultyID = FacultyID
ORDER BY specializations.ID ASC, study_groups.Grade ASC, study_groups.GroupNum ASC;
ORDER BY specializations.ID ASC, grades.ID ASC, study_groups.GroupNum ASC;
END //
DROP PROCEDURE IF EXISTS GetStudyGroupsOrdByGroups//
CREATE PROCEDURE `GetStudyGroupsOrdByGroups` ( IN `Grade` INT,
CREATE PROCEDURE `GetStudyGroupsOrdByGroups` ( IN `GradeID` INT,
IN `FacultyID` INT
)
NO SQL
......@@ -277,7 +277,7 @@ BEGIN
specializations.FacultyID AS 'FacultyID'
FROM `study_groups`
INNER JOIN `specializations` ON specializations.ID = study_groups.SpecializationID
WHERE study_groups.Grade = Grade AND
WHERE study_groups.GradeID = GradeID AND
specializations.FacultyID = FacultyID
ORDER BY study_groups.GroupNum ASC;
END //
......@@ -293,11 +293,14 @@ BEGIN
students.FirstName AS 'StudentFirst',
students.SecondName AS 'StudentSecond',
students.AccountID AS 'StudentAccID',
study_groups.ID AS 'GroupID',
study_groups.Grade AS 'GroupGrade',
study_groups.GroupNum AS 'GroupNum'
study_groups.ID AS 'GroupID',
grades.ID AS 'GradeID',
grades.Grade AS 'GroupGrade',
grades.Degree AS 'GroupDegree',
study_groups.GroupNum AS 'GroupNum'
FROM `students`
INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID
INNER JOIN `grades` ON study_groups.GradeID = grades.ID
WHERE students.StudyGroupID = StudyGroupID
ORDER BY students.LastName ASC, students.FirstName ASC, students.SecondName ASC;
......@@ -315,10 +318,13 @@ BEGIN
students.SecondName AS 'StudentSecond',
students.AccountID AS 'StudentAccID',
study_groups.ID AS 'GroupID',
study_groups.Grade AS 'GroupGrade',
grades.ID AS 'GradeID',
grades.Grade AS 'GroupGrade',
grades.Degree AS 'GroupDegree',
study_groups.GroupNum AS 'GroupNum'
FROM `students`
INNER JOIN `study_groups` ON study_groups.ID = students.StudyGroupID
INNER JOIN `grades` ON study_groups.GradeID = grades.ID
INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID
WHERE specializations.FacultyID = FacultyID
ORDER BY students.LastName ASC, students.FirstName ASC, students.SecondName ASC;
......@@ -388,7 +394,9 @@ CREATE PROCEDURE `GetGroupsForDiscipline` ( IN `DisciplineID` INT )
BEGIN
SELECT disciplines_groups.ID AS 'DiscGroupID',
study_groups.ID AS 'GroupID',
study_groups.Grade AS 'GroupGrade',
grades.ID AS 'GradeID',
grades.Grade AS 'GroupGrade',
grades.Degree AS 'GroupDegree',
study_groups.GroupNum AS 'GroupNum',
study_groups.Name AS 'GroupName',
specializations.ID AS 'SpecID',
......@@ -397,15 +405,16 @@ BEGIN
FROM `disciplines_groups`
INNER JOIN `study_groups` ON study_groups.ID = disciplines_groups.StudyGroupID
INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID
INNER JOIN `grades` ON study_groups.GradeID = grades.ID
WHERE disciplines_groups.DisciplineID = DisciplineID
ORDER BY study_groups.Grade ASC, study_groups.GroupNum ASC;
ORDER BY grades.ID ASC, study_groups.GroupNum ASC;
END //
DROP PROCEDURE IF EXISTS GetStudentsByGrade//
CREATE PROCEDURE `GetStudentsByGrade` ( IN `Grade` INT,
CREATE PROCEDURE `GetStudentsByGrade` ( IN `GradeID` INT,
IN `FacultyID` INT )
NO SQL
BEGIN
......@@ -415,13 +424,15 @@ BEGIN
students.SecondName AS 'StudentSecond',
students.AccountID AS 'StudentAccID',
study_groups.ID AS 'GroupID',
study_groups.Grade AS 'GroupGrade',
grades.ID AS 'GradeID',
grades.Grade AS 'GroupGrade',
grades.Degree AS 'GroupDegree',
study_groups.GroupNum AS 'GroupNum',
disciplines_students.Type AS 'Type'
FROM `students`
INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID
INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID
WHERE study_groups.Grade = Grade AND
WHERE study_groups.GradeID = GradeID AND
specializations.FacultyID = FacultyID
ORDER BY students.LastName ASC, students.FirstName ASC, students.SecondName ASC;
......@@ -514,7 +525,9 @@ BEGIN
students.FirstName AS 'First',
students.SecondName AS 'Second',
study_groups.ID AS 'GroupID',
study_groups.Grade AS 'StudentGrade',
grades.ID AS 'GradeID',
grades.Grade AS 'StudentGrade',
grades.Degree AS 'StudentDegree',
study_groups.GroupNum AS 'GroupNum',
study_groups.Name AS 'GroupName',
specializations.ID AS 'SpecID',
......@@ -735,7 +748,7 @@ DROP FUNCTION IF EXISTS CreateStudent//
CREATE FUNCTION `CreateStudent`( `Last` VARCHAR(30) CHARSET utf8,
`First` VARCHAR(30) CHARSET utf8,
`Second` VARCHAR(30) CHARSET utf8,
`Grade` INT,
`GradeID` INT,
`GroupN` INT,
`FacultyID` INT,
`Code` VARCHAR(40) CHARSET utf8
......@@ -748,7 +761,7 @@ BEGIN
INTO StudyGroupID
FROM `study_groups`
INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID
WHERE study_groups.Grade = Grade AND
WHERE study_groups.GradeID = GradeID AND
study_groups.GroupNum = GroupN AND
specializations.FacultyID = FacultyID
LIMIT 1;
......@@ -963,7 +976,7 @@ END //
DROP PROCEDURE IF EXISTS SearchStudents//
CREATE PROCEDURE `SearchStudents` ( IN `Grade` INT,
CREATE PROCEDURE `SearchStudents` ( IN `GradeID` INT,
IN `GroupN` INT,
IN `FacultyID` INT,
IN `Last` VARCHAR(30) CHARSET utf8,
......@@ -976,18 +989,21 @@ BEGIN
students.LastName AS 'StudentLast',
students.FirstName AS 'StudentFirst',
students.SecondName AS 'StudentSecond',
study_groups.Grade AS 'GroupGrade',
grades.ID AS 'GradeID',
grades.Grade AS 'GroupGrade',
grades.Degree AS 'GroupDegree',
study_groups.GroupNum AS 'GroupNum'
FROM `students`
INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID
INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID
WHERE ( Grade = 0 OR study_groups.Grade = Grade) AND
INNER JOIN `grades` ON study_groups.GradeID = GradeID
WHERE ( GradeID = 0 OR study_groups.GradeID = GradeID) AND
( GroupN = 0 OR study_groups.GroupNum = GroupN) AND
( FacultyID = 0 OR specializations.FacultyID = FacultyID) AND
( students.LastName LIKE CONCAT(Last,"%") ) AND
( students.FirstName LIKE CONCAT(First,"%") ) AND
( students.SecondName LIKE CONCAT(Second,"%") )
ORDER BY study_groups.Grade ASC, study_groups.GroupNum ASC;
ORDER BY grades.ID ASC, study_groups.GroupNum ASC;
END //
......@@ -997,7 +1013,7 @@ END //
DROP PROCEDURE IF EXISTS SearchStudentsNew//
CREATE PROCEDURE `SearchStudentsNew` ( IN `Grade` INT,
CREATE PROCEDURE `SearchStudentsNew` ( IN `GradeID` INT,
IN `GroupN` INT,
IN `FacultyID` INT,
IN `Last` VARCHAR(30) CHARSET utf8,
......@@ -1011,16 +1027,19 @@ BEGIN
students.LastName AS 'StudentLast',
students.FirstName AS 'StudentFirst',
students.SecondName AS 'StudentSecond',
study_groups.Grade AS 'GroupGrade',
grades.ID AS 'GradeID',
grades.Grade AS 'GroupGrade',
grades.Degree AS 'GroupDegree',
study_groups.GroupNum AS 'GroupNum'
FROM `students`
INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID
INNER JOIN `specializations` ON study_groups.SpecializationID = specializations.ID
INNER JOIN `grades` ON study_groups.GradeID = GradeID
LEFT JOIN `disciplines_students` ON students.ID = disciplines_students.StudentID AND
DisciplineID = disciplines_students.DisciplineID
LEFT JOIN `disciplines_groups` ON disciplines_groups.StudyGroupID = study_groups.ID AND
DisciplineID = disciplines_groups.DisciplineID
WHERE ( Grade = 0 OR study_groups.Grade = Grade) AND
WHERE ( GradeID = 0 OR study_groups.GradeID = GradeID) AND
( GroupN = 0 OR study_groups.GroupNum = GroupN) AND
( FacultyID = 0 OR specializations.FacultyID = FacultyID) AND
( students.LastName LIKE CONCAT(Last,"%") ) AND
......@@ -1030,19 +1049,19 @@ BEGIN
( disciplines_groups.ID IS NULL AND disciplines_students.Type IS NULL )
)
ORDER BY study_groups.Grade ASC, study_groups.GroupNum ASC;
ORDER BY grades.ID ASC, study_groups.GroupNum ASC;
END //
DROP PROCEDURE IF EXISTS getStudentsNotAttendingDiscipline//
CREATE PROCEDURE `getStudentsNotAttendingDiscipline` ( IN `Grade` INT,
IN `StudyGroupID` INT,
IN `FacultyID` INT,
IN `Last` VARCHAR(30) CHARSET utf8,
IN `First` VARCHAR(30) CHARSET utf8,
IN `Second` VARCHAR(30) CHARSET utf8,
IN `DisciplineID` INT
CREATE PROCEDURE `getStudentsNotAttendingDiscipline` ( IN `GradeID` INT,
IN `StudyGroupID` INT,
IN `FacultyID` INT,
IN `Last` VARCHAR(30) CHARSET utf8,
IN `First` VARCHAR(30) CHARSET utf8,
IN `Second` VARCHAR(30) CHARSET utf8,
IN `DisciplineID` INT
)
NO SQL
BEGIN
......@@ -1051,7 +1070,9 @@ BEGIN
students.FirstName AS 'StudentFirst',
students.SecondName AS 'StudentSecond',
study_groups.ID AS 'GroupID',
study_groups.Grade AS 'GroupGrade',
grades.ID AS 'GradeID',
grades.Grade AS 'GroupGrade',
grades.Degree AS 'GroupDegree',
study_groups.GroupNum AS 'GroupNum'
FROM `students`
INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID
......@@ -1060,7 +1081,7 @@ BEGIN
DisciplineID = disciplines_students.DisciplineID
LEFT JOIN `disciplines_groups` ON disciplines_groups.StudyGroupID = study_groups.ID AND
DisciplineID = disciplines_groups.DisciplineID
WHERE ( Grade = 0 OR study_groups.Grade = Grade) AND
WHERE ( GradeID = 0 OR study_groups.GradeID = GradeID) AND
( StudyGroupID = 0 OR study_groups.ID = StudyGroupID) AND
( FacultyID = 0 OR specializations.FacultyID = FacultyID) AND
( students.LastName LIKE CONCAT(Last,"%") ) AND
......@@ -1070,7 +1091,7 @@ BEGIN
( disciplines_groups.ID IS NULL AND disciplines_students.Type IS NULL )
)
ORDER BY study_groups.Grade ASC, study_groups.GroupNum ASC;
ORDER BY grades.ID ASC, study_groups.GroupNum ASC;
END //
......@@ -1109,7 +1130,9 @@ CREATE PROCEDURE `GetDisciplineInfoByID`( IN `DiscID` INT )
BEGIN
-- TODO: Inline InternalCheckRate
SELECT disciplines.AuthorID,
disciplines.Grade AS 'DisciplineGrade',
disciplines.GradeID AS 'DisciplineGradeID',
grades.Grade AS 'DisciplineGrade',
grades.Degree AS 'DisciplineDegree',
disciplines.ExamType,
disciplines.LectionCount,
disciplines.PracticeCount,
......@@ -1125,7 +1148,8 @@ BEGIN
INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID
INNER JOIN `faculties` ON faculties.ID = disciplines.FacultyID
INNER JOIN `teachers` ON disciplines.AuthorID = teachers.ID
INNER JOIN `departments` ON departments.ID = teachers.DepartmentID
INNER JOIN `departments` ON departments.ID = teachers.DepartmentID
INNER JOIN `grades` ON grades.ID = disciplines.GradeID
WHERE disciplines.ID = DiscID;
END //
......@@ -1188,13 +1212,17 @@ BEGIN
SELECT DISTINCT disciplines.ID AS 'DisciplineID',
disciplines.ExamType AS 'DisciplineType',
disciplines.Grade AS 'DisciplineGrade',
disciplines.GradeID AS 'DisciplineGradeID',
grades.Grade AS 'DisciplineGrade',
grades.Degree AS 'DisciplineDegree',
subjects.ID AS 'SubjectID',
subjects.Name AS 'SubjectName',
disciplines_teachers.ID AS 'DisciplineTeacherID',
study_groups.ID AS 'StudyGroupID',
study_groups.GroupNum AS 'StudyGroupNum',
study_groups.Grade AS 'StudyGroupGrade',
grades2.ID AS 'StudyGroupGradeID',
grades2.Grade AS 'StudyGroupGrade',
grades2.Degree AS 'StudyGroupDegree',
study_groups.Name AS 'StudyGroupName',
(TeacherID = disciplines.AuthorID) AS 'isAuthor',
(modules.ID IS NOT NULL) AS 'isMapCreated'
......@@ -1202,13 +1230,15 @@ BEGIN
FROM `disciplines_groups`
RIGHT JOIN `disciplines` ON disciplines_groups.DisciplineID = disciplines.ID OR
disciplines_groups.DisciplineID IS NULL
INNER JOIN `grades` ON grades.ID = disciplines.GradeID
INNER JOIN `disciplines_teachers` ON disciplines.ID = disciplines_teachers.DisciplineID AND
disciplines_teachers.TeacherID = TeacherID
INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID
LEFT JOIN `study_groups` ON study_groups.ID = disciplines_groups.StudyGroupID
LEFT JOIN `modules` ON disciplines.ID = modules.DisciplineID
LEFT JOIN `grades` grades2 ON grades2.ID = study_groups.GradeID
WHERE disciplines.SemesterID = semID
ORDER BY disciplines.Grade ASC,
ORDER BY grades.ID ASC,
subjects.Name ASC,
study_groups.GroupNum ASC;
END //
......@@ -1238,18 +1268,21 @@ BEGIN
students.FirstName,
students.SecondName,
study_groups.ID AS 'GroupID',
study_groups.Grade,
grades.ID AS 'GradeID',
grades.Grade,
grades.Degree AS 'Degree',
study_groups.GroupNum,
disciplines_students.Type AS 'Type'
FROM `students`
INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID
INNER JOIN `grades` ON grades.ID = study_groups.GradeID
LEFT JOIN `disciplines_groups` ON DisciplineID = disciplines_groups.DisciplineID AND
study_groups.ID = disciplines_groups.StudyGroupID
LEFT JOIN `disciplines_students` ON DisciplineID = disciplines_students.DisciplineID AND
students.ID = disciplines_students.StudentID
WHERE disciplines_groups.StudyGroupID IS NOT NULL OR
disciplines_students.StudentID IS NOT NULL
ORDER BY study_groups.Grade ASC, study_groups.GroupNum ASC, students.LastName ASC, students.FirstName ASC, students.SecondName ASC;
ORDER BY grades.ID ASC, study_groups.GroupNum ASC, students.LastName ASC, students.FirstName ASC, students.SecondName ASC;
ELSE
SELECT NULL AS 'StudentID',
......@@ -1502,11 +1535,14 @@ BEGIN
students.LastName,
students.FirstName,
students.SecondName,
study_groups.Grade,
grades.ID AS 'GradeID',
grades.Grade,
grades.Degree AS 'Degree',
study_groups.GroupNum,
(disciplines_students.Type IS NOT NULL OR disciplines_students.Type = 'attach') AS 'isAttached'
FROM `students`
INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID
INNER JOIN `grades` ON grades.ID = study_groups.GradeID
LEFT JOIN `disciplines_groups` ON DisciplineID = disciplines_groups.DisciplineID AND
study_groups.ID = disciplines_groups.StudyGroupID
LEFT JOIN `disciplines_students` ON DisciplineID = disciplines_students.DisciplineID AND
......@@ -1515,7 +1551,7 @@ BEGIN
( ( disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach' ) AND
disciplines_groups.StudyGroupID IS NOT NULL
)
ORDER BY study_groups.Grade ASC, study_groups.GroupNum ASC, students.LastName ASC, students.FirstName ASC, students.SecondName ASC;
ORDER BY grades.ID ASC, study_groups.GroupNum ASC, students.LastName ASC, students.FirstName ASC, students.SecondName ASC;
ELSE
SELECT NULL AS 'StudentID',
NULL AS 'LastName',
......@@ -1608,7 +1644,7 @@ END //
DROP FUNCTION IF EXISTS AddDiscipline//
CREATE FUNCTION `AddDiscipline` ( `TeacherID` INT,
`Grade` INT,
`GradeID` INT,
`SubjectID` INT,
`ExamType` VARCHAR(30),
`LectionCount` INT,
......@@ -1620,10 +1656,16 @@ BEGIN
DECLARE semID, checker INT;
SET semID = GetCurSemesterID();
IF NOT (Grade > 0) THEN
SELECT grades.ID
INTO checker
FROM `grades`
WHERE grades.ID = GradeID
LIMIT 1;
IF NOT (checker > 0) THEN
RETURN -1;
END IF;
SET checker = -1;
SELECT faculties.ID
INTO checker
FROM `faculties`
......@@ -1646,14 +1688,14 @@ BEGIN
INSERT INTO `disciplines` ( disciplines.AuthorID,
disciplines.Grade,
disciplines.GradeID,
disciplines.SubjectID,
disciplines.ExamType,
disciplines.LectionCount,
disciplines.PracticeCount,
disciplines.SemesterID,
disciplines.FacultyID )
VALUES ( TeacherID, Grade, SubjectID, ExamType, LectionCount, PracticeCount, semID, FacultyID );
VALUES ( TeacherID, GradeID, SubjectID, ExamType, LectionCount, PracticeCount, semID, FacultyID );
-- RETURN ( SELECT disciplines.ID
-- FROM `disciplines`
......@@ -1719,18 +1761,22 @@ END //
DROP FUNCTION IF EXISTS ChangeDisciplineGrade//
CREATE FUNCTION `ChangeDisciplineGrade` ( `TeacherID` INT,
`DisciplineID` INT,
`Grade` INT
`GradeID` INT
) RETURNS int(11)
NO SQL
BEGIN
DECLARE checker INT;
-- TODO: Grade
IF NOT (Grade > 0) THEN
SELECT grades.ID
INTO checker
FROM `grades`
WHERE grades.ID = GradeID
LIMIT 1;
IF NOT (checker > 0) THEN
RETURN -1;
END IF;
END IF;
SET checker = -1;
SELECT disciplines.ID
INTO checker
FROM `disciplines`
......@@ -1746,13 +1792,13 @@ BEGIN
RETURN -1;
END IF;
SELECT disciplines.Grade
SELECT disciplines.GradeID
INTO checker
FROM `disciplines`
WHERE disciplines.ID = DisciplineID
LIMIT 1;
IF checker != Grade THEN
IF checker != GradeID THEN
DELETE FROM `disciplines_groups`
WHERE disciplines_groups.DisciplineID = DisciplineID;
......@@ -1762,7 +1808,7 @@ BEGIN
UPDATE `disciplines`
SET disciplines.Grade = Grade
SET disciplines.GradeID = GradeID
WHERE disciplines.ID = DisciplineID;
RETURN 0;
......
......@@ -78,7 +78,7 @@ CREATE TABLE IF NOT EXISTS `departments` (
CREATE TABLE IF NOT EXISTS `disciplines` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Grade` int(11) NOT NULL,
`GradeID` int(11) NOT NULL,
`SubjectID` int(11) NOT NULL,
`AuthorID` int(11) NOT NULL,
`ExamType` enum('exam','credit') NOT NULL,
......@@ -87,6 +87,7 @@ CREATE TABLE IF NOT EXISTS `disciplines` (
`LectionCount` int(11) NOT NULL DEFAULT '0',
`FacultyID` int(11) NOT NULL,
PRIMARY KEY (`ID`),
KEY `GradeID` (`GradeID`),
KEY `SubjectID` (`SubjectID`),
KEY `TeacherID` (`AuthorID`),
KEY `SemesterID` (`SemesterID`),
......@@ -309,12 +310,13 @@ CREATE TABLE IF NOT EXISTS `students` (
CREATE TABLE IF NOT EXISTS `study_groups` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Grade` int(11) NOT NULL,
`GradeID` int(11) NOT NULL,
`GroupNum` int(11) NOT NULL,
`SpecializationID` int(11) NOT NULL,
`Name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Grade` (`Grade`,`GroupNum`,`SpecializationID`),
UNIQUE KEY `GradeID_2` (`GradeID`,`GroupNum`,`SpecializationID`),
KEY `GradeID` (`GradeID`),
KEY `SpecializtionID` (`SpecializationID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
......@@ -351,6 +353,24 @@ CREATE TABLE IF NOT EXISTS `submodules` (
KEY `ModuleID` (`ModuleID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `grades`
--
CREATE TABLE IF NOT EXISTS `grades` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Grade` int(11) NOT NULL,
`Degree` enum('bachelor','master','specialist') NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Grade_2` (`Grade`,`Degree`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
......@@ -443,7 +463,8 @@ ALTER TABLE `disciplines`
ADD CONSTRAINT `disciplines_ibfk_2` FOREIGN KEY (`SubjectID`) REFERENCES `subjects` (`ID`),
ADD CONSTRAINT `disciplines_ibfk_4` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`),
ADD CONSTRAINT `disciplines_ibfk_5` FOREIGN KEY (`AuthorID`) REFERENCES `teachers` (`ID`),
ADD CONSTRAINT `disciplines_ibfk_6` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`);
ADD CONSTRAINT `disciplines_ibfk_6` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`),
ADD CONSTRAINT `disciplines_ibfk_7` FOREIGN KEY (`GradeID`) REFERENCES `grades` (`ID`);
--
-- Ограничения внешнего ключа таблицы `disciplines_groups`
......@@ -510,7 +531,8 @@ ALTER TABLE `students`
-- Ограничения внешнего ключа таблицы `study_groups`
--
ALTER TABLE `study_groups`
ADD CONSTRAINT `study_groups_ibfk_4` FOREIGN KEY (`SpecializationID`) REFERENCES `specializations` (`ID`);
ADD CONSTRAINT `study_groups_ibfk_4` FOREIGN KEY (`SpecializationID`) REFERENCES `specializations` (`ID`),
ADD CONSTRAINT `study_groups_ibfk_5` FOREIGN KEY (`GradeID`) REFERENCES `grades` (`ID`);
--
-- Ограничения внешнего ключа таблицы `submodules`
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment