diff --git a/db/Sample.sql b/db/Sample.sql
index 34e91239609a1cc751d72fcae7d8c16090a31f09..10a9f3a378cd5853a2777d789d97ca6b378cc4ec 100644
--- a/db/Sample.sql
+++ b/db/Sample.sql
@@ -20,6 +20,28 @@ SET time_zone = "+00:00";
 -- База данных: `Sample2`
 --
 
+
+
+--
+-- Дамп данных таблицы `job_positions`
+--
+
+INSERT INTO `job_positions` (`ID`, `Name`) VALUES
+(1, 'Аспирант'),
+(2, 'Ассистент'),
+(3, 'Ведущий научный сотрудник'),
+(4, 'Главный научный сотрудник'),
+(5, 'Докторант'),
+(6, 'Доцент'),
+(7, 'Младший научный сотрудник'),
+(8, 'Научный сотрудник'),
+(9, 'Преподаватель'),
+(10, 'Профессор'),
+(11, 'Старший преподаватель'),
+(12, 'Стажер'),
+(13, 'Старший научный сотрудник'),
+(14, 'Доцент');
+
 --
 -- Дамп данных таблицы `accounts`
 --
@@ -50,6 +72,17 @@ INSERT INTO `accounts` (`ID`, `Login`, `Password`, `EMail`, `UserRoleID`, `Activ
 (23, 'teacher7', '7b21848ac9af35be0ddb2d6b9fc3851934db8420', 'teacher7@mail.ru', 2, NULL, 1, NULL),
 (24, 'teacher8', '7b21848ac9af35be0ddb2d6b9fc3851934db8420', 'teacher8@mail.ru', 2, NULL, 1, NULL);
 
+
+--
+-- Дамп данных таблицы `subjects`
+--
+
+INSERT INTO `subjects` (`ID`, `Name`, `Abbr`) VALUES
+(1, 'Математический анализ', 'Матан'),
+(2, 'Дифференциальные уравнения', 'Диф. ур-я'),
+(3, 'Иностранный язык', 'Ин.яз.'),
+(4, 'Операционные системы', 'ОС');
+
 --
 -- Дамп данных таблицы `faculties`
 --
@@ -58,6 +91,7 @@ INSERT INTO `faculties` (`ID`, `Name`, `Abbr`) VALUES
 (1, 'Институт математики, механики и компьютерных наук', 'Мехмат'),
 (2, 'Юридический факультет', 'Юрфак');
 
+
 --
 -- Дамп данных таблицы `departments`
 --
@@ -66,29 +100,9 @@ INSERT INTO `departments` (`ID`, `Name`, `FacultyID`) VALUES
 (1, 'Кафедра математического анализа', 1),
 (2, 'Кафедра магического анализа', 1);
 
---
--- Дамп данных таблицы `subjects`
---
 
-INSERT INTO `subjects` (`ID`, `Name`, `Abbr`) VALUES
-(1, 'Математический анализ', 'Матан'),
-(2, 'Дифференциальные уравнения', 'Диф. ур-я'),
-(3, 'Иностранный язык', 'Ин.яз.'),
-(4, 'Операционные системы', 'ОС');
 
---
--- Дамп данных таблицы `teachers`
---
 
-INSERT INTO `teachers` (`ID`, `LastName`, `FirstName`, `SecondName`, `JobPositionID`, `DepartmentID`, `AccountID`) VALUES
-(1, 'teacher1', 'First', 'Second', 1, 1, 17),
-(2, 'teacher2', 'First', 'Second', 2, 1, 18),
-(3, 'teacher3', 'First', 'Second', 3, 2, 19),
-(4, 'teacher4', 'First', 'Second', 3, 2, 20),
-(5, 'teacher5', 'First', 'Second', 3, 2, 21),
-(6, 'teacher6', 'First', 'Second', 13, 1, 22),
-(7, 'teacher7', 'First', 'Second', 13, 1, 23),
-(8, 'teacher8', 'First', 'Second', 8, 2, 24);
 
 --
 -- Дамп данных таблицы `semesters`
@@ -117,38 +131,6 @@ INSERT INTO `study_groups` (`ID`, `Grade`, `GroupNum`, `SpecializationID`, `Name
 (3, 1, 3, 2, NULL),
 (4, 2, 1, 1, NULL);
 
---
--- Дамп данных таблицы `disciplines`
---
-
-INSERT INTO `disciplines` (`ID`, `Grade`, `SubjectID`, `AuthorID`, `ExamType`, `SemesterID`, `PracticeCount`, `LectionCount`, `DepartmentID`) VALUES
-(1, 1, 4, 1, 'exam', 1, 20, 20, 1),
-(2, 1, 3, 3, 'exam', 1, 20, 15, 2),
-(3, 1, 3, 4, 'exam', 1, 20, 15, 2),
-(4, 1, 3, 5, 'exam', 1, 20, 15, 2),
-(5, 1, 1, 6, 'credit', 1, 15, 15, 1),
-(6, 1, 2, 8, 'credit', 1, 10, 10, 2),
-(7, 1, 2, 1, 'credit', 1, 10, 10, 1);
-
---
--- Дамп данных таблицы `disciplines_groups`
---
-
-INSERT INTO `disciplines_groups` (`ID`, `DisciplineID`, `StudyGroupID`) VALUES
-(1, 1, 3),
-(2, 2, 1),
-(3, 2, 2),
-(4, 2, 3),
-(5, 3, 1),
-(6, 3, 2),
-(7, 3, 3),
-(8, 4, 1),
-(9, 4, 2),
-(10, 4, 3),
-(11, 5, 1),
-(12, 5, 2),
-(13, 6, 2);
-
 --
 -- Дамп данных таблицы `students`
 --
@@ -171,83 +153,39 @@ INSERT INTO `students` (`ID`, `StudyGroupID`, `AccountID`, `LastName`, `FirstNam
 (15, 3, 15, 'student5_c1g3', 'First', 'Second'),
 (16, 4, 16, 'student1_c2g1', 'First', 'Second');
 
+
+
+
+
 --
--- Дамп данных таблицы `disciplines_students`
+-- Дамп данных таблицы `teachers`
 --
 
-INSERT INTO `disciplines_students` (`ID`, `DisciplineID`, `StudentID`, `Type`) VALUES
-(1, 5, 1, 'detach'),
-(2, 5, 6, 'detach'),
-(3, 6, 6, 'detach'),
-(4, 6, 7, 'detach'),
-(5, 1, 15, 'detach'),
-(6, 2, 3, 'detach'),
-(7, 2, 4, 'detach'),
-(8, 2, 4, 'detach'),
-(9, 2, 3, 'detach'),
-(10, 2, 4, 'detach'),
-(11, 2, 5, 'detach'),
-(12, 2, 8, 'detach'),
-(13, 2, 9, 'detach'),
-(14, 2, 9, 'detach'),
-(15, 2, 8, 'detach'),
-(16, 2, 9, 'detach'),
-(17, 2, 10, 'detach'),
-(18, 2, 12, 'detach'),
-(19, 2, 13, 'detach'),
-(20, 2, 14, 'detach'),
-(21, 2, 14, 'detach'),
-(22, 2, 12, 'detach'),
-(23, 2, 13, 'detach'),
-(24, 2, 14, 'detach'),
-(25, 2, 15, 'detach'),
-(26, 3, 1, 'detach'),
-(27, 3, 2, 'detach'),
-(28, 3, 5, 'detach'),
-(29, 3, 11, 'detach'),
-(30, 3, 12, 'detach'),
-(31, 3, 12, 'detach'),
-(32, 3, 1, 'detach'),
-(33, 3, 2, 'detach'),
-(34, 3, 5, 'detach'),
-(35, 3, 11, 'detach'),
-(36, 3, 14, 'detach'),
-(37, 3, 15, 'detach'),
-(38, 3, 6, 'detach'),
-(39, 3, 7, 'detach'),
-(40, 3, 9, 'detach'),
-(41, 3, 9, 'detach'),
-(42, 3, 6, 'detach'),
-(43, 3, 7, 'detach'),
-(44, 3, 9, 'detach'),
-(45, 3, 10, 'detach'),
-(46, 4, 1, 'detach'),
-(47, 4, 2, 'detach'),
-(48, 4, 3, 'detach'),
-(49, 4, 4, 'detach'),
-(50, 4, 7, 'detach'),
-(51, 4, 8, 'detach'),
-(52, 4, 9, 'detach'),
-(53, 4, 11, 'detach'),
-(54, 4, 12, 'detach'),
-(55, 4, 12, 'detach'),
-(56, 4, 1, 'detach'),
-(57, 4, 2, 'detach'),
-(58, 4, 3, 'detach'),
-(59, 4, 4, 'detach'),
-(60, 4, 7, 'detach'),
-(61, 4, 8, 'detach'),
-(62, 4, 9, 'detach'),
-(63, 4, 11, 'detach'),
-(64, 4, 12, 'detach'),
-(65, 4, 13, 'detach'),
-(66, 1, 15, 'detach'),
-(67, 6, 11, 'attach'),
-(68, 1, 6, 'attach'),
-(69, 1, 6, 'attach'),
-(70, 6, 11, 'attach'),
-(71, 1, 6, 'attach'),
-(72, 1, 16, 'attach');
+INSERT INTO `teachers` (`ID`, `LastName`, `FirstName`, `SecondName`, `JobPositionID`, `DepartmentID`, `AccountID`) VALUES
+(1, 'teacher1', 'First', 'Second', 1, 1, 17),
+(2, 'teacher2', 'First', 'Second', 2, 1, 18),
+(3, 'teacher3', 'First', 'Second', 3, 2, 19),
+(4, 'teacher4', 'First', 'Second', 3, 2, 20),
+(5, 'teacher5', 'First', 'Second', 3, 2, 21),
+(6, 'teacher6', 'First', 'Second', 13, 1, 22),
+(7, 'teacher7', 'First', 'Second', 13, 1, 23),
+(8, 'teacher8', 'First', 'Second', 8, 2, 24);
+
+
+
+--
+-- Дамп данных таблицы `disciplines`
+--
+
+INSERT INTO `disciplines` (`ID`, `Grade`, `SubjectID`, `AuthorID`, `ExamType`, `SemesterID`, `PracticeCount`, `LectionCount`, `FacultyID`) VALUES
+(1, 1, 4, 1, 'exam', 1, 20, 20, 1),
+(2, 1, 3, 3, 'exam', 1, 20, 15, 1),
+(3, 1, 3, 4, 'exam', 1, 20, 15, 1),
+(4, 1, 3, 5, 'exam', 1, 20, 15, 1),
+(5, 1, 1, 6, 'credit', 1, 15, 15, 1),
+(6, 1, 2, 8, 'credit', 1, 10, 10, 1),
+(7, 1, 2, 1, 'credit', 1, 10, 10, 1);
+
 
 --
 -- Дамп данных таблицы `disciplines_teachers`
@@ -266,24 +204,26 @@ INSERT INTO `disciplines_teachers` (`ID`, `DisciplineID`, `TeacherID`) VALUES
 (10, 7, 1);
 
 --
--- Дамп данных таблицы `job_positions`
+-- Дамп данных таблицы `disciplines_groups`
 --
 
-INSERT INTO `job_positions` (`ID`, `Name`) VALUES
-(1, 'Аспирант'),
-(2, 'Ассистент'),
-(3, 'Ведущий научный сотрудник'),
-(4, 'Главный научный сотрудник'),
-(5, 'Докторант'),
-(6, 'Доцент'),
-(7, 'Младший научный сотрудник'),
-(8, 'Научный сотрудник'),
-(9, 'Преподаватель'),
-(10, 'Профессор'),
-(11, 'Старший преподаватель'),
-(12, 'Стажер'),
-(13, 'Старший научный сотрудник'),
-(14, 'Доцент');
+INSERT INTO `disciplines_groups` (`ID`, `DisciplineID`, `StudyGroupID`) VALUES
+(1, 1, 3),
+(2, 2, 1),
+(3, 2, 2),
+(4, 2, 3),
+(5, 3, 1),
+(6, 3, 2),
+(7, 3, 3),
+(8, 4, 1),
+(9, 4, 2),
+(10, 4, 3),
+(11, 5, 1),
+(12, 5, 2),
+(13, 6, 2);
+
+
+
 
 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
 /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index 62630c5a5ccf1bc24d1cdd48b7fd44a25466dd24..e5601727861bb205fc26679a3ec77a1957b01f5a 100644
--- a/db/StoredProcedures.sql
+++ b/db/StoredProcedures.sql
@@ -296,7 +296,8 @@ BEGIN
 			study_groups.GroupNum 		AS 'GroupNum'
 	FROM `students`
 	INNER JOIN `study_groups` ON students.StudyGroupID = study_groups.ID
-	WHERE students.StudyGroupID = StudyGroupID;
+	WHERE students.StudyGroupID = StudyGroupID
+	ORDER BY students.LastName ASC, students.FirstName ASC, students.SecondName ASC;
 
 END //
 
@@ -317,7 +318,8 @@ BEGIN
 	FROM `students`
 	INNER JOIN `study_groups` 		ON study_groups.ID = students.StudyGroupID
 	INNER JOIN `specializations` 	ON study_groups.SpecializationID =  specializations.ID
-	WHERE specializations.FacultyID = FacultyID;
+	WHERE specializations.FacultyID = FacultyID
+	ORDER BY students.LastName ASC, students.FirstName ASC, students.SecondName ASC;
 
 END //
 
@@ -339,7 +341,8 @@ BEGIN
 	FROM `teachers`
 	INNER JOIN `departments` ON departments.ID = teachers.DepartmentID
 	INNER JOIN `job_positions` ON job_positions.ID = teachers.JobPositionID
-	WHERE departments.FacultyID = FacultyID;
+	WHERE departments.FacultyID = FacultyID
+	ORDER BY teachers.LastName ASC, teachers.FirstName ASC, teachers.SecondName ASC;
 
 END //
 
@@ -360,7 +363,8 @@ BEGIN
 	FROM `teachers`
 	INNER JOIN `departments` ON departments.ID = teachers.DepartmentID
 	INNER JOIN `job_positions` ON job_positions.ID = teachers.JobPositionID
-	WHERE departments.ID = DepartmentID;
+	WHERE departments.ID = DepartmentID
+	ORDER BY teachers.LastName ASC, teachers.FirstName ASC, teachers.SecondName ASC;
 
 END //
 
@@ -371,7 +375,8 @@ CREATE PROCEDURE `GetJobPositions`	( 	)
 BEGIN
 	SELECT 	job_positions.ID,
 			job_positions.Name
-	FROM 	`job_positions`;
+	FROM 	`job_positions`
+	ORDER BY job_positions.Name;
 
 END //
 
@@ -1001,6 +1006,24 @@ END //
 -- -------------------------------------------------------------------------------------------
 
 
+DROP FUNCTION IF EXISTS InternalCheckRate//
+CREATE FUNCTION `InternalCheckRate`( 	`DiscID` INT 
+									) 	RETURNS int(11)
+    NO SQL
+BEGIN  
+	DECLARE checker INT;
+	SELECT rating_table.ID
+	INTO checker
+	FROM `rating_table`
+	INNER JOIN `submodules` ON 	submodules.ID = rating_table.SubModuleID
+	INNER JOIN `modules` ON 	submodules.ModuleID = modules.ID AND
+								modules.DisciplineID = DiscID
+	LIMIT 1;
+	RETURN (checker IS NOT NULL AND checker > 0); 
+	
+END //
+
+
 DROP PROCEDURE IF EXISTS GetDisciplineInfoByID//
 CREATE PROCEDURE `GetDisciplineInfoByID`(	IN `DiscID` INT )
     NO SQL
@@ -1015,12 +1038,15 @@ BEGIN
 			subjects.ID 				AS 'SubjectID',
 			subjects.Name 				AS 'SubjectName',
 			subjects.Abbr 				AS 'SubjectAbbr',
-			departments.ID 				AS 'DepID',
+			faculties.ID 				AS 'DepID',
 			departments.Name 			AS 'DepName',
-			departments.FacultyID		AS 'FacultyID'
+			departments.FacultyID		AS 'FacultyID',
+			InternalCheckRate(DiscID) 	AS 'isLocked'
 	FROM `disciplines`
 	INNER JOIN `subjects` ON subjects.ID = disciplines.SubjectID
-	INNER JOIN `departments` ON departments.ID = disciplines.DepartmentID
+	INNER JOIN `faculties` ON faculties.ID = disciplines.FacultyID
+	INNER JOIN `teachers` ON disciplines.AuthorID = teachers.ID
+	INNER JOIN `departments` ON departments.ID = teachers.DepartmentID 
 	WHERE 	disciplines.ID = DiscID;
 END //
 
@@ -1036,11 +1062,11 @@ BEGIN
 				teachers.SecondName 	AS 'TeacherSecond', 
 				job_positions.ID 		AS 'JobPositionID',
 				job_positions.Name 		AS 'JobPositionName', 
-				departments.ID 			AS 'DepartmentID',
-				departments.Name 		AS 'DepartmentName',
+				departments.ID 			AS 'DepID',
+				departments.Name 		AS 'DepName',
 				faculties.ID 			AS 'FacultyID', 
 				faculties.Name 			AS 'FacultyName', 
-				faculties.Abbr 			AS 'FacultyAbbreviation'
+				faculties.Abbr 			AS 'FacultyAbbr'
 		FROM `disciplines_teachers`
 		INNER JOIN `teachers` ON teachers.ID = disciplines_teachers.TeacherID
 		INNER JOIN `departments` ON departments.ID = teachers.DepartmentID
@@ -1462,7 +1488,8 @@ BEGIN
 	SELECT disciplines_teachers.ID 
 	INTO checker 
 	FROM `disciplines`
-	INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = BindingTeacher  
+	INNER JOIN `disciplines_teachers` ON 	disciplines_teachers.DisciplineID = disciplines.ID AND 
+											disciplines_teachers.TeacherID = BindingTeacher  
 	WHERE disciplines.ID = DisciplineID
 	LIMIT 1;
 	IF checker > 0 THEN
@@ -1513,7 +1540,7 @@ CREATE FUNCTION `AddDiscipline`	(	`TeacherID` 	INT,
 									`ExamType`		VARCHAR(30),
 									`LectionCount`  INT,
 									`PracticeCount` INT,
-									`DepartmentID`	INT		
+									`FacultyID`	INT		
 							 	)	RETURNS int(11)
     NO SQL
 BEGIN  
@@ -1524,10 +1551,10 @@ BEGIN
 		RETURN -1;
 	END IF; 
 
-    SELECT departments.ID
+    SELECT faculties.ID
     INTO checker
-    FROM `departments`
-    WHERE departments.ID = DepartmentID
+    FROM `faculties`
+    WHERE faculties.ID = FacultyID
     LIMIT 1;
     IF NOT (checker > 0) THEN
     	RETURN -1;
@@ -1552,8 +1579,8 @@ BEGIN
 									disciplines.LectionCount, 
 									disciplines.PracticeCount,
 									disciplines.SemesterID,
-									disciplines.DepartmentID )
-	VALUES 					( TeacherID, Grade, SubjectID, ExamType, LectionCount, PracticeCount, semID, DepartmentID );
+									disciplines.FacultyID )
+	VALUES 					( TeacherID, Grade, SubjectID, ExamType, LectionCount, PracticeCount, semID, FacultyID );
 	
 	-- RETURN 	(	SELECT disciplines.ID
 	-- 			FROM   `disciplines`
@@ -1571,6 +1598,8 @@ BEGIN
 			disciplines_teachers.TeacherID 	)
 	VALUES	( checker, TeacherID );
 
+	SET semID = AddModuleExam(TeacherID, checker);
+
 	RETURN checker;
 	
 	
@@ -1638,7 +1667,8 @@ BEGIN
 	SELECT disciplines_teachers.ID
 	INTO checker 
 	FROM `disciplines_teachers`
-	WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID 	= TeacherID
+	WHERE 	disciplines_teachers.DisciplineID = DisciplineID AND 
+			disciplines_teachers.TeacherID = TeacherID
 	LIMIT 1;
 	IF NOT (checker > 0) THEN 
 		RETURN -1;
@@ -1666,7 +1696,8 @@ BEGIN
 	END IF;
 
 	DELETE FROM `disciplines_students`
-	WHERE disciplines_students.ID IN 
+	WHERE 	disciplines_students.DisciplineID = DisciplineID AND
+			disciplines_students.StudentID IN 
 		(	SELECT students.ID
 			FROM `students`
 			WHERE students.StudyGroupID = StudyGroupID
@@ -1691,24 +1722,26 @@ CREATE FUNCTION `BindStudent`	(	`TeacherID` 	INT,
     NO SQL
 BEGIN 
     DECLARE checker, SG, temp INT;  					 
-	
-    SELECT students.StudyGroupID
-    INTO SG
-    FROM `students`
-    WHERE students.ID = StudentID
-    LIMIT 1;
-    
 
 	SELECT disciplines_teachers.ID
 	INTO checker 
 	FROM `disciplines_teachers`
-	WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID 	= TeacherID
+	WHERE 	disciplines_teachers.DisciplineID = DisciplineID AND 
+			disciplines_teachers.TeacherID 	= TeacherID
 	LIMIT 1;
 	IF NOT (checker > 0) THEN 
 		RETURN -1;
 	END IF;
-
-
+	
+    SELECT students.StudyGroupID
+    INTO SG
+    FROM `students`
+    WHERE students.ID = StudentID
+    LIMIT 1;
+    IF NOT (SG > 0) THEN
+    	RETURN -1;
+	END IF;
+    
 	SELECT disciplines_groups.ID
 	INTO temp
 	FROM `disciplines_groups`
@@ -1747,7 +1780,8 @@ BEGIN
 	SELECT disciplines_teachers.ID
 	INTO checker 
 	FROM `disciplines_teachers`
-	WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID 	= TeacherID
+	WHERE 	disciplines_teachers.DisciplineID = DisciplineID AND 
+			disciplines_teachers.TeacherID = TeacherID
 	LIMIT 1;
 	IF NOT (checker > 0) THEN 
 		RETURN -1;
@@ -1767,6 +1801,15 @@ BEGIN
 	WHERE 	disciplines_groups.DisciplineID = DisciplineID AND
 			disciplines_groups.StudyGroupID = StudyGroupID;
 
+	DELETE FROM `disciplines_students`
+	WHERE 	disciplines_students.DisciplineID = DisciplineID AND
+			disciplines_students.Type = 'detach' AND
+			disciplines_students.StudentID IN
+		(	SELECT students.ID
+			FROM `students`
+			WHERE students.StudyGroupID = StudyGroupID
+		);
+
 	RETURN 0;
 
 END //
@@ -1787,7 +1830,9 @@ BEGIN
     FROM `students`
     WHERE students.ID = StudentID
     LIMIT 1;
-    
+	IF NOT (SG > 0) THEN 
+		RETURN -1;
+	END IF;
 
 	SELECT disciplines_teachers.ID
 	INTO checker 
diff --git a/db/Structure.sql b/db/Structure.sql
index 03ce1f70eb20eed4784d730dc11f6d334fc0311e..538f20b89910bbf406a0c529f9042be69bbc186b 100644
--- a/db/Structure.sql
+++ b/db/Structure.sql
@@ -81,12 +81,12 @@ CREATE TABLE IF NOT EXISTS `disciplines` (
   `SemesterID` int(11) NOT NULL,
   `PracticeCount` int(11) NOT NULL DEFAULT '0',
   `LectionCount` int(11) NOT NULL DEFAULT '0',
-  `DepartmentID` int(11) NOT NULL,
+  `FacultyID` int(11) NOT NULL,
   PRIMARY KEY (`ID`),
   KEY `SubjectID` (`SubjectID`),
   KEY `TeacherID` (`AuthorID`),
   KEY `SemesterID` (`SemesterID`),
-  KEY `DepartmentID` (`DepartmentID`)
+  KEY `FacultyID` (`FacultyID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 -- --------------------------------------------------------
@@ -386,17 +386,22 @@ INSERT INTO `user_roles` (`ID`, `Type`, `RoleName`, `Mark`) VALUES
 --
 
 INSERT INTO `page_access` (`ID`, `Pagename`, `Bitmask`) VALUES
-(NULL, 'common:index', 7),
-(NULL, 'common:settings', 7),
-(NULL, 'teacher:index', 6),
-(NULL, 'teacher:settings', 6),
-(NULL, 'teacher:map:create', 6),
-(NULL, 'teacher:map:edit', 6),
-(NULL, 'teacher:rating', 6),
-(NULL, 'admin:common', 4),
-(NULL, 'student:index', 1),
-(NULL, 'student:settings', 1),
-(NULL, 'student:subject', 1);
+(1, 'common:index', 7),
+(2, 'common:settings', 7),
+(3, 'teacher:index', 6),
+(4, 'teacher:settings', 6),
+(5, 'teacher:map:create', 6),
+(6, 'teacher:map:edit', 6),
+(7, 'teacher:rating', 6),
+(8, 'admin:common', 4),
+(9, 'student:index', 1),
+(10, 'student:settings', 1),
+(11, 'student:subject', 1),
+(12, 'teacher:map:discipline', 6),
+(13, 'teacher:map:structure', 6),
+(14, 'teacher:map:groups', 6),
+(15, 'teacher:map:students', 6),
+(16, 'teacher:map:teachers', 6);
 
 --
 -- Ограничения внешнего ключа сохраненных таблиц
@@ -421,7 +426,7 @@ 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 (`DepartmentID`) REFERENCES `departments` (`ID`);
+  ADD CONSTRAINT `disciplines_ibfk_6` FOREIGN KEY (`FacultyID`) REFERENCES `faculties` (`ID`);
 
 --
 -- Ограничения внешнего ключа таблицы `disciplines_groups`