Skip to content
Snippets Groups Projects
Commit 85a70d16 authored by Владислав Яковлев's avatar Владислав Яковлев Committed by Artem Konenko
Browse files

#172 Delete old db files

parent f3d5a0cc
Branches
Tags
No related merge requests found
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Ограничения внешнего ключа сохраненных таблиц
--
--
-- Ограничения внешнего ключа таблицы `semesters`
--
ALTER TABLE semesters
ADD CONSTRAINT semesters_ibfk_1 FOREIGN KEY (`Year`) REFERENCES `years` (`Num`);
--
-- Ограничения внешнего ключа таблицы `accounts`
--
ALTER TABLE `accounts`
ADD CONSTRAINT `accounts_ibfk_1` FOREIGN KEY (`UserRoleID`) REFERENCES `user_roles` (`ID`);
--
-- Ограничения внешнего ключа таблицы `departments`
--
ALTER TABLE `departments`
ADD CONSTRAINT `departments_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`);
--
-- Ограничения внешнего ключа таблицы `disciplines`
--
ALTER TABLE `disciplines`
ADD CONSTRAINT `disciplines_ibfk_1` FOREIGN KEY (`SubjectID`) REFERENCES `subjects` (`ID`),
ADD CONSTRAINT `disciplines_ibfk_2` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`),
ADD CONSTRAINT `disciplines_ibfk_3` FOREIGN KEY (`AuthorID`) REFERENCES `teachers` (`ID`),
ADD CONSTRAINT `disciplines_ibfk_4` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`),
ADD CONSTRAINT `disciplines_ibfk_5` FOREIGN KEY (`GradeID`) REFERENCES `grades` (`ID`),
ADD CONSTRAINT `disciplines_ibfk_6` FOREIGN KEY (`CompoundDiscID`) REFERENCES `compound_disciplines` (`ID`);
--
-- Ограничения внешнего ключа таблицы `disciplines_groups`
--
ALTER TABLE `disciplines_groups`
ADD CONSTRAINT `disciplines_groups_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`),
ADD CONSTRAINT `disciplines_groups_ibfk_2` FOREIGN KEY (`GroupID`) REFERENCES `study_groups` (`ID`);
--
-- Ограничения внешнего ключа таблицы `disciplines_students`
--
ALTER TABLE `disciplines_students`
ADD CONSTRAINT `disciplines_students_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`),
ADD CONSTRAINT `disciplines_students_ibfk_2` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`);
--
-- Ограничения внешнего ключа таблицы `disciplines_teachers`
--
ALTER TABLE `disciplines_teachers`
ADD CONSTRAINT `disciplines_teachers_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`),
ADD CONSTRAINT `disciplines_teachers_ibfk_2` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`);
--
-- Ограничения внешнего ключа таблицы `recovery_tokens`
--
ALTER TABLE `recovery_tokens`
ADD CONSTRAINT `recovery_tokens_ibfk_1` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`);
--
-- Ограничения внешнего ключа таблицы `modules`
--
ALTER TABLE `modules`
ADD CONSTRAINT `modules_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`);
--
-- Ограничения внешнего ключа таблицы `rating_table`
--
ALTER TABLE `rating_table`
ADD CONSTRAINT `rating_table_ibfk_1` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`),
ADD CONSTRAINT `rating_table_ibfk_2` FOREIGN KEY (`SubmoduleID`) REFERENCES `submodules` (`ID`),
ADD CONSTRAINT `rating_table_ibfk_3` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`);
--
-- Ограничения внешнего ключа таблицы `specializations`
--
ALTER TABLE `specializations`
ADD CONSTRAINT `specializations_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`);
--
-- Ограничения внешнего ключа таблицы `students`
--
ALTER TABLE `students`
ADD CONSTRAINT `students_ibfk_2` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`);
--
-- Ограничения внешнего ключа таблицы `study_groups`
--
ALTER TABLE `study_groups`
ADD CONSTRAINT `study_groups_ibfk_2` FOREIGN KEY (`GradeID`) REFERENCES `grades` (`ID`),
ADD CONSTRAINT study_groups_ibfk_3 FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`);
--
-- Ограничения внешнего ключа таблицы `groups_years`
--
ALTER TABLE groups_years
ADD CONSTRAINT groups_years_ibfk_1 FOREIGN KEY (`GroupID`) REFERENCES `study_groups`(`ID`),
ADD CONSTRAINT groups_years_ibfk_2 FOREIGN KEY (`Year`) REFERENCES `years`(`Num`),
ADD CONSTRAINT groups_years_ibfk_3 FOREIGN KEY (`SpecializationID`) REFERENCES `specializations`(`ID`);
--
-- Ограничения внешнего ключа таблицы `submodules`
--
ALTER TABLE `submodules`
ADD CONSTRAINT `submodules_ibfk_1` FOREIGN KEY (`ModuleID`) REFERENCES `modules` (`ID`);
--
-- Ограничения внешнего ключа таблицы `teachers`
--
ALTER TABLE `teachers`
ADD CONSTRAINT `teachers_ibfk_1` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`),
ADD CONSTRAINT `teachers_ibfk_2` FOREIGN KEY (`DepartmentID`) REFERENCES `departments` (`ID`),
ADD CONSTRAINT `teachers_ibfk_3` FOREIGN KEY (`JobPositionID`) REFERENCES `job_positions` (`ID`);
--
-- Ограничения внешнего ключа таблицы `subjects_faculties`
--
ALTER TABLE `subjects_faculties`
ADD CONSTRAINT `subjects_faculties_ibfk_1` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`),
ADD CONSTRAINT `subjects_faculties_ibfk_2` FOREIGN KEY (`SubjectID`) REFERENCES `subjects` (`ID`);
--
-- Ограничения внешнего ключа таблицы `students_groups`
--
ALTER TABLE `students_groups`
ADD CONSTRAINT `students_groups_ibfk_1` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`),
ADD CONSTRAINT `students_groups_ibfk_2` FOREIGN KEY (`GroupID`) REFERENCES `study_groups` (`ID`),
ADD CONSTRAINT `students_groups_ibfk_3` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`);
--
-- Ограничения внешнего ключа таблицы `exam_period_options`
--
ALTER TABLE `exam_period_options`
ADD CONSTRAINT `exam_period_options_ibfk_2` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`),
ADD CONSTRAINT `exam_period_options_ibfk_1` FOREIGN KEY (`SubmoduleID`) REFERENCES `submodules` (`ID`);
--
-- Ограничения внешнего ключа таблицы `compound_disciplines`
--
ALTER TABLE `compound_disciplines`
ADD CONSTRAINT `compound_disciplines_ibfk_1` FOREIGN KEY (`SpecializationID`) REFERENCES `specializations` (`ID`),
ADD CONSTRAINT `compound_disciplines_ibfk_2` FOREIGN KEY (`GradeID`) REFERENCES `grades` (`ID`);
--
-- Ограничения внешнего ключа таблицы `auth_tokens`
--
ALTER TABLE `auth_tokens`
ADD CONSTRAINT `auth_tokens_ibfk_1` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`);
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Ограничения внешнего ключа таблицы `logs_rating`
--
ALTER TABLE `logs_rating`
ADD CONSTRAINT `logs_rating_ibfk_1` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`),
ADD CONSTRAINT `logs_rating_ibfk_2` FOREIGN KEY (`SubmoduleID`) REFERENCES `submodules` (`ID`),
ADD CONSTRAINT `logs_rating_ibfk_3` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`);
--
-- Ограничения внешнего ключа таблицы `logs_signin`
--
ALTER TABLE `logs_signin`
ADD CONSTRAINT `logs_signin_ibfk_1` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`);
--
-- Ограничения внешнего ключа таблицы `logs_binds_students`
--
ALTER TABLE `logs_binds_students`
ADD CONSTRAINT `logs_binds_students_ibfk_3` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`),
ADD CONSTRAINT `logs_binds_students_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`),
ADD CONSTRAINT `logs_binds_students_ibfk_2` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`);
--
-- Ограничения внешнего ключа таблицы `logs_binds_groups`
--
ALTER TABLE `logs_binds_groups`
ADD CONSTRAINT `logs_binds_groups_ibfk_3` FOREIGN KEY (`GroupID`) REFERENCES `study_groups` (`ID`),
ADD CONSTRAINT `logs_binds_groups_ibfk_1` FOREIGN KEY (`DisciplineID`) REFERENCES `disciplines` (`ID`),
ADD CONSTRAINT `logs_binds_groups_ibfk_2` FOREIGN KEY (`TeacherID`) REFERENCES `teachers` (`ID`);
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Дамп данных таблицы `user_roles`
--
-- 1 - common
-- 2 - student
-- 4 - teacher
-- 8 - admin
-- 16 - deans
-- 32 - curator
INSERT INTO `user_roles` (`ID`, `Type`, `RoleName`, `Mark`) VALUES
(1, 'student', 'Студент', 3),
(2, 'teacher', 'Преподаватель', 5),
(3, 'teacher', 'Преподаватель-Администратор', 31),
(4, 'teacher', 'Работник деканата', 21),
(5, 'teacher', 'Преподаватель-Куратор', 37);
ALTER TABLE `requests` ADD HasImage BOOLEAN NOT NULL DEFAULT FALSE;
ALTER TABLE `requests` MODIFY `Description` text CHARACTER SET utf8 NULL DEFAULT NULL;
delete from `study_groups` WHERE GradeID in (
select id from grades where Degree not in ('bachelor', 'specialist', 'master')
);
delete from grades where Degree not in ('bachelor', 'specialist', 'master');
-- recalculate CurRate in discipline table
update disciplines
inner join (
select modules.DisciplineID, SUM(submodules.MaxRate) as rate
from submodules
inner join modules on submodules.ModuleID = modules.ID
where submodules.isUsed and (modules.Type = 'regular' or (modules.Type = 'exam' and modules.OrderNum = 1))
group by modules.DisciplineID
) as t on disciplines.ID = t.DisciplineID
set disciplines.CurRate = t.rate;
This diff is collapsed.
This diff is collapsed.
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
delimiter //
-- tr - abbr trigger
-- i - insert
-- u - update
-- d - delete
drop trigger if exists tr_i_submodule//
create trigger tr_i_submodule
before insert on submodules for each row
begin
declare vDisciplineID int default 0;
declare vAccumType, vChangeMax boolean default false;
declare vModuleType enum('regular','exam', 'bonus', 'extra') default 'extra';
-- todo: check repeated bonus
select modules.Type into vModuleType
from modules
where modules.ID = new.ModuleID
limit 1;
-- todo: in operator
if (vModuleType <=> 'regular' or vModuleType <=> 'exam') then begin
set vAccumType = (not vModuleType <=> 'exam');
-- todo: extract foo
set vDisciplineID = (
select disciplines.ID
from modules
inner join disciplines on disciplines.ID = modules.DisciplineID
where modules.ID = new.ModuleID
limit 1
);
set vChangeMax = vAccumType || new.OrderNum <=> 1;
update disciplines
set disciplines.CurRate = disciplines.CurRate + if(new.isUsed, new.MaxRate, 0),
disciplines.MaxRate = disciplines.MaxRate + if(vChangeMax, new.MaxRate, 0)
where disciplines.ID = vDisciplineID
limit 1;
end; end if;
end//
drop trigger if exists tr_d_submodule//
create trigger tr_d_submodule
before delete on submodules for each row
begin
declare vDisciplineID int default 0;
declare vAccumType, vChangeMax boolean default false;
declare vModuleType enum('regular','exam', 'bonus', 'extra') default 'extra';
-- todo: check repeated bonus
select modules.Type into vModuleType
from modules
where modules.ID = old.ModuleID
limit 1;
if (vModuleType <=> 'regular' or vModuleType <=> 'exam') then begin
set vAccumType = (not vModuleType <=> 'exam');
-- todo: extract foo
set vDisciplineID = (
select disciplines.ID
from modules
inner join disciplines on disciplines.ID = modules.DisciplineID
where modules.ID = old.ModuleID
limit 1
);
set vChangeMax = vAccumType || old.OrderNum <=> 1;
update disciplines
set disciplines.CurRate = disciplines.CurRate - if(old.isUsed, old.MaxRate, 0),
disciplines.MaxRate = disciplines.MaxRate - if(vChangeMax, old.MaxRate, 0)
where disciplines.ID = vDisciplineID
limit 1;
end; end if;
end//
drop trigger if exists tr_u_submodule//
create trigger tr_u_submodule
before update on submodules for each row
begin
declare vDisciplineID int default 0;
declare vAccumType, vChangeMaxOld, vChangeMaxNew boolean default false;
declare vModuleType enum('regular','exam', 'bonus', 'extra') default 'extra';
if old.ModuleID != new.ModuleID then
signal sqlstate '45000';
end if;
-- todo: check repeated bonus
select modules.Type into vModuleType
from modules
where modules.ID = new.ModuleID
limit 1;
if (vModuleType <=> 'regular' or vModuleType <=> 'exam') then begin
set vAccumType = (not vModuleType <=> 'exam');
-- todo: extract foo
set vDisciplineID = (
select disciplines.ID
from modules
inner join disciplines on disciplines.ID = modules.DisciplineID
where modules.ID = old.ModuleID
limit 1
);
set vChangeMaxOld = vAccumType || old.OrderNum <=> 1;
set vChangeMaxNew = vAccumType || new.OrderNum <=> 1;
update disciplines
set disciplines.CurRate = disciplines.CurRate
- if(old.isUsed, old.MaxRate, 0)
+ if(new.isUsed, new.MaxRate, 0),
disciplines.MaxRate = disciplines.MaxRate
- if(vChangeMaxOld, old.MaxRate, 0)
+ if(vChangeMaxNew, new.MaxRate, 0)
where disciplines.ID = vDisciplineID
limit 1;
end; end if;
end//
delimiter ;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
DROP VIEW IF EXISTS view_disciplines_teachers;
DROP VIEW IF EXISTS `view_disciplines_students`;
DROP VIEW IF EXISTS `view_rating_result`;
DROP VIEW IF EXISTS view_disciplines_results;
-- todo: remove max year crutch - add return (year, groupID, ...), use view_groups
CREATE OR REPLACE VIEW `view_groups_reduced` AS
SELECT study_groups.ID AS 'GroupID',
study_groups.GroupNum AS 'GroupNum',
groups_years.Name AS 'GroupName',
grades.ID AS 'GradeID',
grades.Num AS 'GradeNum',
grades.Degree AS 'Degree',
specializations.ID AS 'SpecID',
specializations.Name AS 'SpecName',
specializations.Abbr AS 'SpecAbbr',
specializations.Code AS 'SpecCode',
faculties.ID AS 'FacultyID',
faculties.Name AS 'FacultyName',
faculties.Abbr AS 'FacultyAbbr'
FROM groups_years
LEFT JOIN groups_years as t ON groups_years.GroupID = t.GroupID AND groups_years.Year < t.Year
INNER JOIN study_groups ON groups_years.GroupID = study_groups.ID
INNER JOIN `specializations` ON groups_years.SpecializationID = specializations.ID
INNER JOIN `grades` ON study_groups.GradeID = grades.ID
INNER JOIN `faculties` ON faculties.ID = specializations.FacultyID
WHERE t.GroupID IS NULL;
CREATE OR REPLACE VIEW `view_groups` AS
SELECT study_groups.ID AS 'GroupID',
study_groups.GroupNum AS 'GroupNum',
groups_years.Name AS 'GroupName',
grades.ID AS 'GradeID',
grades.Num AS 'GradeNum',
grades.Degree AS 'Degree',
specializations.ID AS 'SpecID',
specializations.Name AS 'SpecName',
specializations.Abbr AS 'SpecAbbr',
specializations.Code AS 'SpecCode',
faculties.ID AS 'FacultyID',
faculties.Name AS 'FacultyName',
faculties.Abbr AS 'FacultyAbbr',
groups_years.Year
FROM groups_years
INNER JOIN study_groups ON groups_years.GroupID = study_groups.ID
INNER JOIN `specializations` ON groups_years.SpecializationID = specializations.ID
INNER JOIN `grades` ON study_groups.GradeID = grades.ID
INNER JOIN `faculties` ON faculties.ID = specializations.FacultyID;
CREATE OR REPLACE VIEW `view_teachers` AS
SELECT teachers.ID AS 'TeacherID',
teachers.LastName,
teachers.FirstName,
teachers.SecondName,
teachers.AccountID,
job_positions.ID AS 'JobPositionID',
job_positions.Name AS 'JobPositionName',
departments.ID AS 'DepID',
departments.Name AS 'DepName',
faculties.ID AS 'FacultyID',
faculties.Name AS 'FacultyName',
faculties.Abbr AS 'FacultyAbbr'
FROM `teachers`
INNER JOIN `departments` ON departments.ID = teachers.DepartmentID
INNER JOIN `faculties` ON departments.FacultyID = faculties.ID
INNER JOIN `job_positions` ON job_positions.ID = teachers.JobPositionID;
CREATE OR REPLACE VIEW `view_students` AS
SELECT students.ID AS 'StudentID',
students.LastName,
students.FirstName,
students.SecondName,
students.AccountID,
students_groups.SemesterID,
view_groups_reduced.*
FROM `students`
LEFT JOIN `students_groups` ON students_groups.StudentID = students.ID
LEFT JOIN `view_groups_reduced` ON view_groups_reduced.GroupID = students_groups.GroupID;
CREATE OR REPLACE VIEW `view_disciplines` AS
SELECT disciplines.ID AS 'DisciplineID',
disciplines.AuthorID,
disciplines.ExamType,
disciplines.LectureCount,
disciplines.PracticeCount,
disciplines.LabCount,
disciplines.SemesterID,
disciplines.IsLocked,
disciplines.Milestone,
disciplines.Subtype,
disciplines.CompoundDiscID,
disciplines.MaxRate,
disciplines.CurRate,
grades.ID AS 'GradeID',
grades.Num AS 'GradeNum',
grades.Degree,
subjects.ID AS 'SubjectID',
subjects.Name AS 'SubjectName',
subjects.Abbr AS 'SubjectAbbr',
faculties.ID AS 'FacultyID',
faculties.Name AS 'FacultyName',
faculties.Abbr AS 'FacultyAbbr',
compound_disciplines.Name AS 'CompoundDiscName'
FROM `disciplines`
INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID
INNER JOIN `faculties` ON faculties.ID = disciplines.FacultyID
INNER JOIN `grades` ON grades.ID = disciplines.GradeID
LEFT JOIN `compound_disciplines` ON compound_disciplines.ID = disciplines.CompoundDiscID;
CREATE OR REPLACE VIEW `view_roadmap` AS
SELECT modules.DisciplineID,
modules.ID AS 'ModuleID',
modules.Name AS 'ModuleName',
modules.OrderNum AS 'ModuleOrderNum',
modules.Type AS 'ModuleType', # enum('regular','exam', 'bonus', 'extra')
submodules.ID AS 'SubmoduleID',
submodules.Name AS 'SubmoduleName',
submodules.OrderNum AS 'SubmoduleOrderNum',
submodules.MaxRate AS 'SubmoduleRate',
submodules.Type AS 'SubmoduleType', # enum('CurrentControl','LandmarkControl')
submodules.IsUsed AS 'SubmoduleIsUsed'
FROM `modules`
LEFT JOIN `submodules` ON submodules.ModuleID = modules.ID;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
-- --------------------------------------------------------
--
-- Структура таблицы `accounts`
--
CREATE TABLE IF NOT EXISTS `accounts` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Login` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
`Password` varchar(64) CHARACTER SET utf8 DEFAULT NULL,
`EMail` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`UserRoleID` int(11) NOT NULL,
`ActivationCode` varchar(40) CHARACTER SET utf8 DEFAULT NULL,
`IsEnabled` tinyint(1) NOT NULL DEFAULT '1',
`UserAgent` text,
`Notification` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
UNIQUE KEY `Login` (`Login`),
UNIQUE KEY `EMail` (`EMail`),
KEY `UserRoleID` (`UserRoleID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `job_positions`
--
CREATE TABLE IF NOT EXISTS `job_positions` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(200) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Name` (`Name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `departments`
--
CREATE TABLE IF NOT EXISTS `departments` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(200) CHARACTER SET utf8 NULL,
`FacultyID` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Name` (`Name`,`FacultyID`),
KEY `FacultyID` (`FacultyID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `compound_disciplines`
--
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `compound_disciplines` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(200) CHARACTER SET utf8 NULL DEFAULT 'Курс по выбору',
`GradeID` int(11) NOT NULL,
`SpecializationID` int(11) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `disciplines`
--
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `disciplines` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`GradeID` int(11) NOT NULL,
`SubjectID` int(11) NOT NULL,
`AuthorID` int(11) NOT NULL,
`ExamType` enum('exam','credit', 'grading_credit') NOT NULL,
`SemesterID` int(11) NOT NULL,
`PracticeCount` int(11) NOT NULL DEFAULT '0',
`LectureCount` int(11) NOT NULL DEFAULT '0',
`LabCount` int(11) NOT NULL DEFAULT '0',
`FacultyID` int(11) NOT NULL,
-- IsLocked (for editing structure)
`IsLocked` tinyint(1) NOT NULL DEFAULT '0',
-- Milestone semester time (or is session time)
`Milestone` INT(1) NOT NULL DEFAULT '0',
`MilestoneDate` DATE NULL DEFAULT NULL,
`Subtype` enum('scientific_coursework', 'disciplinary_coursework' ) NULL DEFAULT NULL,
`CompoundDiscID` INT(11) NULL DEFAULT NULL,
`MaxRate` INT(11) NOT NULL DEFAULT 0,
`CurRate` INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`ID`),
KEY `GradeID` (`GradeID`),
KEY `SubjectID` (`SubjectID`),
KEY `TeacherID` (`AuthorID`),
KEY `SemesterID` (`SemesterID`),
KEY `FacultyID` (`FacultyID`),
KEY `CompoundDiscID` (`CompoundDiscID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `disciplines_groups`
--
CREATE TABLE IF NOT EXISTS `disciplines_groups` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`DisciplineID` int(11) NOT NULL,
`GroupID` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `DisciplineID_2` (`DisciplineID`,`GroupID`),
KEY `DisciplineID` (`DisciplineID`),
KEY `GroupID` (`GroupID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `disciplines_students`
--
CREATE TABLE IF NOT EXISTS `disciplines_students` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`DisciplineID` int(11) NOT NULL,
`StudentID` int(11) NOT NULL,
`Type` enum('attach','detach') NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `DisciplineID_2` (`DisciplineID`,`StudentID`),
KEY `DisciplineID` (`DisciplineID`),
KEY `StudentID` (`StudentID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `disciplines_teachers`
--
CREATE TABLE IF NOT EXISTS `disciplines_teachers` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`DisciplineID` int(11) NOT NULL,
`TeacherID` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `DisciplineID_2` (`DisciplineID`,`TeacherID`),
KEY `DisciplineID` (`DisciplineID`),
KEY `AccountID` (`TeacherID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `faculties`
--
CREATE TABLE IF NOT EXISTS `faculties` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(100) CHARACTER SET utf8 NOT NULL,
`Abbr` varchar(20) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Name` (`Name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `modules`
--
CREATE TABLE IF NOT EXISTS `modules` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(200) CHARACTER SET utf8 NOT NULL,
`OrderNum` int(11) NOT NULL,
`DisciplineID` int(11) NOT NULL,
`Type` enum('regular','exam', 'bonus', 'extra') NOT NULL DEFAULT 'regular',
PRIMARY KEY (`ID`),
UNIQUE KEY `OrderNum` (`OrderNum`,`DisciplineID`),
KEY `DisciplineID` (`DisciplineID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `rating_table`
--
CREATE TABLE IF NOT EXISTS `rating_table` (
`StudentID` int(11) NOT NULL,
`TeacherID` int(11) NOT NULL,
`SubmoduleID` int(11) NOT NULL,
`Rate` int(11) NOT NULL,
`Date` date NOT NULL,
PRIMARY KEY (`StudentID`,`SubmoduleID`),
KEY `StudentID` (`StudentID`),
KEY `SubmoduleID` (`SubmoduleID`),
KEY `TeacherID` (`TeacherID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- CHANGE:
-- --------------------------------------------------------
--
-- Структура таблицы `requests`
--
CREATE TABLE IF NOT EXISTS `requests` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`AccountID` int(11) DEFAULT NULL,
`Title` varchar(50) CHARACTER SET utf8 NULL DEFAULT NULL,
`Description` text CHARACTER SET utf8 NULL DEFAULT NULL,
`Date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Status` enum('opened','processed','closed') NOT NULL DEFAULT 'opened',
`HasImage` BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY (`ID`),
KEY `AccountID` (`AccountID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `semesters`
--
CREATE TABLE IF NOT EXISTS `semesters` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Year` int(11) NOT NULL,
`Num` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Year` (`Year`,`Num`),
KEY `Year_2` (`Year`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `years`
--
CREATE TABLE IF NOT EXISTS `years` (
`Num` int(11) NOT NULL,
PRIMARY KEY (`Num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `specializations`
--
CREATE TABLE IF NOT EXISTS `specializations` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(200) CHARACTER SET utf8 NULL,
`Abbr` varchar(20) CHARACTER SET utf8 NULL,
`Code` varchar(12) CHARACTER SET utf8 NULL,
`FacultyID` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Name` (`Name`,`FacultyID`),
KEY `FacultyID` (`FacultyID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `students`
--
CREATE TABLE IF NOT EXISTS `students` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`AccountID` int(11) NOT NULL,
`LastName` varchar(30) CHARACTER SET utf8 NOT NULL,
`FirstName` varchar(30) CHARACTER SET utf8 NOT NULL,
`SecondName` varchar(30) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `AccountID` (`AccountID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `study_groups`
--
CREATE TABLE IF NOT EXISTS `study_groups` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`GradeID` int(11) NOT NULL,
`GroupNum` int(11) NOT NULL,
`FacultyID` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `FacultyGroup`(`FacultyID`,`GradeID`,`GroupNum`),
KEY `GradeID` (`GradeID`),
KEY `FacultyID` (`FacultyID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `groups_years`
--
CREATE TABLE IF NOT EXISTS `groups_years` (
`GroupID` int(11) NOT NULL,
`Year` int(11) NOT NULL,
`SpecializationID` int(11) NOT NULL,
`Name` varchar(50) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`Year`, `GroupID`),
KEY `GroupID` (`GroupID`),
KEY `Year` (`Year`),
KEY `SpecializationID` (`SpecializationID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `subjects`
--
CREATE TABLE IF NOT EXISTS `subjects` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(200) CHARACTER SET utf8 NOT NULL,
`Abbr` varchar(20) CHARACTER SET utf8 DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Name` (`Name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `subjects`
--
CREATE TABLE IF NOT EXISTS `subjects_faculties` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`SubjectID` int(11) NOT NULL,
`FacultyID` int(11) NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `SubjectID_2` (`SubjectID`,`FacultyID`),
KEY `SubjectID` (`SubjectID`),
KEY `FacultyID` (`FacultyID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `submodules`
--
CREATE TABLE IF NOT EXISTS `submodules` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`ModuleID` int(11) NOT NULL,
`MaxRate` int(11) NOT NULL,
`OrderNum` int(11) NOT NULL,
`Name` varchar(200) NOT NULL,
`Description` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
`IsUsed` tinyint(1) NOT NULL DEFAULT 0,
`Type` enum('CurrentControl','LandmarkControl') NOT NULL DEFAULT 'CurrentControl',
PRIMARY KEY (`ID`),
UNIQUE KEY `ModuleID_2` (`ModuleID`,`OrderNum`),
KEY `ModuleID` (`ModuleID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `grades`
--
CREATE TABLE IF NOT EXISTS `grades` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Num` int(11) NOT NULL,
`Degree` enum('bachelor','master','specialist') NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `Grade_2` (`Num`,`Degree`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `teachers`
--
CREATE TABLE IF NOT EXISTS `teachers` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`LastName` varchar(30) CHARACTER SET utf8 NOT NULL,
`FirstName` varchar(30) CHARACTER SET utf8 NOT NULL,
`SecondName` varchar(30) CHARACTER SET utf8 DEFAULT NULL,
`JobPositionID` int(11) NOT NULL,
`DepartmentID` int(11) NULL,
`AccountID` int(11) NOT NULL,
PRIMARY KEY (`ID`),
KEY `FacultyID` (`DepartmentID`),
KEY `AccountID` (`AccountID`),
KEY `JobPositionID` (`JobPositionID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `user_roles`
--
CREATE TABLE IF NOT EXISTS `user_roles` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Type` enum('student','teacher') NOT NULL,
`RoleName` varchar(30) CHARACTER SET utf8 NOT NULL,
`Mark` int(11) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `recovery_tokens `
--
CREATE TABLE IF NOT EXISTS `recovery_tokens` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`AccountID` int(11) NOT NULL,
`Date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Token` varchar(100) CHARACTER SET utf8 NOT NULL,
`IsUsed` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `AccountID` (`AccountID`),
UNIQUE KEY `Token` (`Token`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `students_groups`
--
CREATE TABLE IF NOT EXISTS `students_groups` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`StudentID` int(11) NOT NULL,
`GroupID` int(11) NOT NULL,
`SemesterID` int(11) NOT NULL,
`State` enum('common', 'outlet', 'expulsion', 'leave') NOT NULL DEFAULT 'common',
`Date` date NULL DEFAULT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `StudentID_2` (`StudentID`, `SemesterID`),
KEY `SemesterID` (`SemesterID`),
KEY `StudentID` (`StudentID`),
KEY `GroupID` (`GroupID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `exam_period_options`
--
CREATE TABLE IF NOT EXISTS `exam_period_options` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`SubmoduleID` int(11) NOT NULL,
`StudentID` int(11) NOT NULL,
`Type` enum('absence','pass'),
PRIMARY KEY (`ID`),
UNIQUE KEY `SubmoduleID` (`SubmoduleID`,`StudentID`),
KEY `SubmoduleID_2` (`SubmoduleID`),
KEY `StudentID` (`StudentID`),
KEY `StudentID_2` (`StudentID`),
KEY `StudentID_3` (`StudentID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- Структура таблицы `auth_tokens`
--
CREATE TABLE IF NOT EXISTS `auth_tokens` (
`Token` char(40) charset ascii NOT NULL,
`AccountID` int(11) NOT NULL,
`Created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Accessed` TIMESTAMP NOT NULL DEFAULT 0,
`Mask` int(11) NOT NULL DEFAULT 0,
UNIQUE KEY `Token` (`Token`),
KEY `AccountID` (`AccountID`)
);
This diff is collapsed.
This diff is collapsed.
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