UPC/4sem/db/lab9.sql
2021-05-11 22:08:11 +07:00

312 lines
No EOL
32 KiB
Transact-SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

BEGIN TRANSACTION
use dean;
CREATE TABLE [Специальность]
(
ID int IDENTITY (1,1),
Шифр nvarchar(10) NOT NULL,
Наименование nvarchar(100) NOT NULL,
ФормаОбучения nvarchar(20) NOT NULL,
Уровень nvarchar(20) NOT NULL,
ПродолжительностьОбучения int NOT NULL,
Описание nvarchar(4000) NOT NULL,
CONSTRAINT [PK_СПЕЦИАЛЬНОСТЬ] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;
CREATE TABLE [Группа]
(
ID int IDENTITY (1,1),
Название nvarchar(30) NOT NULL,
КодСпециальности int NOT NULL,
ЗачётнаяКнижкаСтаросты int NULL,
ТабельныйНомерКуратора int NOT NULL,
CONSTRAINT [PK_ГРУППА] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;
CREATE TABLE [Студент]
(
НомерЗачетнойКнижки int IDENTITY (1,1),
Фамилия nvarchar(30) NOT NULL,
Имя nvarchar(30) NOT NULL,
Отчество nvarchar(30) NOT NULL,
Группа int NOT NULL,
ГодПоступления date NOT NULL,
CONSTRAINT [PK_СТУДЕНТ] PRIMARY KEY CLUSTERED (НомерЗачетнойКнижки ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;
CREATE TABLE [Преподаватель]
(
ТабельныйНомер int IDENTITY (1,1),
Фамилия nvarchar(30) NOT NULL,
Имя nvarchar(30) NOT NULL,
Отчество nvarchar(30) NOT NULL,
УчёнаяСтепень nvarchar(50) NOT NULL,
УчёноеЗвание nvarchar(50) NOT NULL,
Кафедра nvarchar(50) NOT NULL,
CONSTRAINT [PK_ПРЕПОДАВАТЕЛЬ] PRIMARY KEY CLUSTERED (ТабельныйНомер ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;
CREATE TABLE [Дисциплина]
(
ID int IDENTITY (1,1),
Название nvarchar(100) NOT NULL,
КодСпециальности int NOT NULL,
Семестр int NOT NULL,
Объём int NOT NULL,
Отчётность nvarchar(50) NOT NULL,
CONSTRAINT [PK_ДИСЦИПЛИНА] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;
CREATE TABLE [Изучение]
(
ID int IDENTITY (1,1),
Студент int NOT NULL,
Дисциплина int NOT NULL,
Дата date NOT NULL,
Оценка int NOT NULL,
CONSTRAINT [PK_ИЗУЧЕНИЕ] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;
CREATE TABLE [Преподавание]
(
ID int IDENTITY (1,1),
Дисциплина int NOT NULL,
Преподаватель int NOT NULL,
CONSTRAINT [PK_ПРЕПОДАВАНИЕ] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;
ALTER TABLE [Группа]
WITH CHECK ADD CONSTRAINT [Группа_fk0] FOREIGN KEY ([КодСпециальности]) REFERENCES [Специальность] ([ID])
ON UPDATE CASCADE;
go;
ALTER TABLE [Группа]
WITH CHECK ADD CONSTRAINT [Группа_fk1] FOREIGN KEY ([ЗачётнаяКнижкаСтаросты]) REFERENCES [Студент] ([НомерЗачетнойКнижки])
ON UPDATE CASCADE;
go;
ALTER TABLE [Группа]
WITH CHECK ADD CONSTRAINT [Группа_fk2] FOREIGN KEY ([ТабельныйНомерКуратора]) REFERENCES [Преподаватель] ([ТабельныйНомер])
ON UPDATE CASCADE;
go;
ALTER TABLE [Студент]
WITH CHECK ADD CONSTRAINT [Студент_fk0] FOREIGN KEY ([Группа]) REFERENCES [Группа] ([ID])
ON UPDATE NO ACTION;
go;
ALTER TABLE [Дисциплина]
WITH CHECK ADD CONSTRAINT [Специальность_fk0] FOREIGN KEY (КодСпециальности) REFERENCES [Специальность] ([ID])
ON UPDATE CASCADE;
go;
ALTER TABLE [Изучение]
WITH CHECK ADD CONSTRAINT [Изучение_fk0] FOREIGN KEY (Студент) REFERENCES [Студент] ([НомерЗачетнойКнижки])
ON UPDATE CASCADE;
go;
ALTER TABLE [Изучение]
WITH CHECK ADD CONSTRAINT [Изучение_fk1] FOREIGN KEY (Дисциплина) REFERENCES [Дисциплина] ([ID])
ON UPDATE CASCADE;
go;
ALTER TABLE [Преподавание]
WITH CHECK ADD CONSTRAINT [Преподавание_fk0] FOREIGN KEY (Дисциплина) REFERENCES [Дисциплина] ([ID])
ON UPDATE CASCADE;
go;
ALTER TABLE [Преподавание]
WITH CHECK ADD CONSTRAINT [Преподавание_fk1] FOREIGN KEY (Преподаватель) REFERENCES [Преподаватель] ([ТабельныйНомер])
ON UPDATE CASCADE;
go;
COMMIT TRANSACTION
BEGIN TRANSACTION
INSERT INTO [Преподаватель]([Фамилия], [Имя], [Отчество], [УчёнаяСтепень], [УчёноеЗвание], [Кафедра])
VALUES (N'Казаков', N'Олег', N'Владимирович', N'Кандидат технических наук', N'Профессор',
N'Информатика и вычислительная техника'),
(N'Селиванов', N'Кирилл', N'Владимирович', N'Отсутствует', N'Старший преподаватель',
N'Информатика и вычислительная техника'),
(N'Оленева', N'Татьяна', N'Сергеевна', N'Отсутствует', N'Старший преподаватель',
N'Информатика и вычислительная техника'),
(N'Хантимиров', N'Илья', N'Андреевич', N'Отсутствует', N'Ассистент', N'Информатика и вычислительная техника');
INSERT INTO [Специальность]([Шифр], [Наименование], [ФормаОбучения], [Уровень], [ПродолжительностьОбучения], [Описание])
VALUES (N'09.03.01', N'Информатика и вычислительная техника', N'Очная', N'Бакалавриат', 4,
N'Для того чтобы стать квалифицированным специалистом в выбранном направлении, студенту предстоит научиться:\n\nопределять сферу исследования, собирать, проводить проверку, обрабатывать и анализировать первичные сведения для проектирования;\nразрабатывать программное обеспечение, используя современные инструментальные приложения и средства;\nанализировать технические данные и научную информацию, делать выводы, опираясь на опыт зарубежных и российских коллег по теме проектирования;\nобучать сотрудников компании, использовать современные методы и автоматизированные программные средства для исследования и проектирования;\nосуществлять техническое обслуживание ЭВМ, программных средств и периферийной аппаратуры;\nустанавливать необходимые программные системы и приложения, настраивать и обеспечивать нормальную работу программно-аппаратных средств;\nанализировать показатели технического состояния, амортизации у вычислительного оборудования;\nпроизводить мероприятия по текущему ремонту и профилактике качественной работы систем;\nналаживать взаимосвязь между элементами и узлами вычислительных приборов;\nмонтировать, проводить тестирования и вводить в эксплуатацию вычислительные и информационные сети;\nработать с программными языками и писать приложения на них.'),
(N'09.03.02', N'Информационные системы и технологии', N'Очная', N'Бакалавриат', 4,
N'Бакалавров, получающих образование в области информационных систем и технологий, учат:\n\nосуществлять комплексный анализ разрабатываемых проектов и проводить консультации, помогающие обеспечить подготовку производственного процесса и технического обслуживания;\nизучать взаимосвязи в информационных комплексах и проводить системный анализ заданной области;\nсоздавать прикладные и базовые технологии;\nпроводить комплекс работ, направленных на освоение и финишную модернизацию технологических процессов на этапе подготовки производственного процесса нового продукта;\nпринимать непосредственное участие в вычислительных тестированиях и экспериментах, направленных на проверку точности и актуальности применяемых математических моделей;\nкорректировать стратегию проекта, исходя из инфраструктурного обеспечения предприятия и действующих в нем информационных систем;\nсобирать конечную программную систему, используя для этого готовые элементы и компоненты;\nобеспечивать непрерывную работу и сопровождать информационные технологии и системы, опираясь на требования по качеству и надежности;\nсоставлять доступные инструкции для персонала по применению правильной техники эксплуатации.'),
(N'09.03.04', N'Программная инженерия', N'Очная', N'Бакалавриат', 4,
N'Изучение данной специальности позволит студентам:\n\nучаствовать в осуществлении научных наблюдений и экспериментов в области глубокого анализа программных проектов, продукции, инструментов и методов изучаемого направления;\nобрабатывать и изучать возможности удовлетворения предъявленных заказчиком к разработчику требованиям;\nконструировать компоненты и составляющие программных изделий в необходимом для проектирования объеме в рамках определенного задания;\nадаптировать и использовать средства автоматизированного испытания, проектирования, разработки и обслуживания продукции;\nосуществлять деятельность, направленную на обучение пользователей и их аттестацию в области эксплуатации компьютерных систем;\nустанавливать, настраивать, осваивать и администрировать программное обеспечение;\nпроводить профилактические и корректирующие работы, связанные с эффективным использованием установленных требованиями продуктов;\nразрабатывать пакет документов и формы отчетности;\nсоздавать новые методические программы и разработки в области повышения квалификации и установления общего базового уровня технического персонала в области эксплуатации систем;\nсоздавать положительный эмоциональный и деловой фон во взаимоотношениях с заказчиком;\nиспользовать стандартные инструменты для обеспечения контроля, оценки и качества необходимого уровня программных продуктов.'),
(N'09.04.01', N'Информатика и вычислительная техника', N'Очная', N'Магистратура', 2,
N'Магистры, получившие дипломы в этой области, умеют:\n\nмоделировать изучаемые процессы и изделия;\nсоздавать новые способы и средства конструирования новых устройств и процессов;\nпродумывать процесс автоматизации принимаемых решений;\nсамостоятельно производить испытания и тестирования, обстоятельно изучать их результаты;\nвыполнять работу ассистента на профильных кафедрах ВУЗов в преподавательской сфере;\nразрабатывать и проводить учебные курсы, которые контролируют доценты и профессоры;\nписать методические пособия, применяемые студентами в процессе учебы;\nпроектировать автоматизированные системы, обоснованно выбирать аппаратно-программные средства информатизации и автоматизации;\nконструировать сложные изделия, к которым относятся также и программные комплексы, применяя средства автоматизации и передовой опыт;\nосуществлять проекты, направленные на создание программ, комплексов и информационных баз;\nсоздавать проекты по объединению информационных систем, опираясь на методики и типовые стандарты в области документооборота и логистической поддержки;\nанализировать продуктивность конструируемых систем, выполняя технико-экономический и функционально-стоимостной анализ;\nсоздавать документы, определяющие нормы и технические стандарты для разработанных программ и проектов.'),
(N'09.04.02', N'Информационные системы и технологии', N'Очная', N'Магистратура', 2,
N'Магистры информационных технологий и систем с легкостью справляются со следующими профессиональными обязанностями:\n\nопределяют основную проектную стратегию, обозначают цели, необходимые для достижений в области проектирования, выбирают основные показатели эффективности и продуктивности, а также ограничивают сферу применения информационных технологий и систем;\nразрабатывают персональные задания для исполнителей в области конструирования отдельных составляющих и элементов, используя при этом методологию системной инженерии;\nприводят к общему виду и классифицируют по типам принимаемые решения;\nорганизовывают конструктивную работу в сфере взаимодействия коллективов заказчика и производителя;\nосуществляют поиск компромиссных решений в долгосрочной и краткосрочной перспективе, находят наилучшие варианты;\nизучают и создают собственные объектные модели в сфере машино- и приборостроения, науки, образования и техники;\nиспользуют определенную методику и способы для выполнения моделирования объектов и процессов;\nпредсказывают направления и темпы развития в сфере информационных технологий и систем;\nобеспечивают методическое наполнение учебного процесса в различных образовательных учреждениях;\nразрабатывают новые идеи, способные составить высокую конкуренцию тем, что действуют на рынке.'),
(N'09.04.04', N'Программная инженерия', N'Очная', N'Магистратура', 2,
N'Для получения степени магистра по программной инженерии учащемуся предстоит научиться:\n\nсоздавать новые средства, способы и методы, необходимые для осуществления процесса изучения объектов программной инженерии, опираясь на унифицированные тенденции в сфере развития профессиональной области;\nразрабатывать программы и проекты, направленные на удовлетворение требований, а также осуществлять контрольные и управляющие функции;\nиспользовать системный подход, моделирование и структурный анализ для выполнения проектных задач;\nприменять новейшие технологии в области конструирования программных комплексов и систем, используя средства автоматизации в процессах планирования, управления и контроля над качеством проектируемой продукции;\nпланировать и координировать работу в процессе разработки программных приложений;\nвыступать в роли эксперта по обучению пользователей необходимым навыкам для использования продукта;\nпроводить анализ и делать выводы на основе полученных сведений, создавая технико-экономическую базу для обоснования принятых решений;\nделать выбор в пользу экономической или технической модели развития и сопровождать на всех этапах жизненного цикла программный продукт;\nоптимизировать принятые проектные и технологические решения, обеспечивая необходимые условия для поддержания высокого уровня качества объектов.');
DECLARE @firstTeacherID INT = (SELECT TOP 1 ID
FROM [Специальность]
ORDER BY ID);
DECLARE @firstSpecialityID INT = (SELECT TOP 1 ID
FROM [Специальность]
ORDER BY ID);
INSERT INTO [Группа]([Название], [КодСпециальности], [ЗачётнаяКнижкаСтаросты], [ТабельныйНомерКуратора])
VALUES (N'КИ20-07Б', @firstSpecialityID, NULL, @firstTeacherID),
(N'КИ20-08Б', @firstSpecialityID + 2, NULL, @firstTeacherID + 1),
(N'КИ16-07Б', @firstSpecialityID + 3, NULL, @firstTeacherID + 2),
(N'КИ16-08Б', @firstSpecialityID + 5, NULL, @firstTeacherID + 3);
DECLARE @firstGroupID INT = (SELECT TOP 1 ID
FROM [Группа]
ORDER BY ID);
INSERT INTO [Студент]([Фамилия], [Имя], [Отчество], [Группа], [ГодПоступления])
VALUES (N'Муравьёв', N'Вячеслав', N'Геннадиевич', @firstGroupID, '2020-09-01'),
(N'Сафонов', N'Мстислав', N'Федорович', @firstGroupID, '2020-09-01'),
(N'Воронов', N'Терентий', N'Созонович', @firstGroupID, '2020-09-01'),
(N'Козлова', N'Томила', N'Рудольфовна', @firstGroupID, '2020-09-01'),
(N'Полякова', N'Изольда', N'Леонидовна', @firstGroupID, '2020-09-01'),
(N'Михеева', N'Янина', N'Давидовна', @firstGroupID, '2020-09-01'),
(N'Мухина', N'Милена', N'Ростиславовна', @firstGroupID, '2020-09-01'),
(N'Дьячкова', N'Беатриса', N'Ильяовна', @firstGroupID + 1, '2020-09-01'),
(N'Евсеева', N'Нинна', N'Мэлоровна', @firstGroupID + 1, '2020-09-01'),
(N'Князев', N'Виссарион', N'Ильяович', @firstGroupID + 1, '2020-09-01'),
(N'Панфилов', N'Моисей', N'Михайлович', @firstGroupID + 1, '2020-09-01'),
(N'Вишняков', N'Юлиан', N'Григорьевич', @firstGroupID + 1, '2020-09-01'),
(N'Самсонова', N'Агния', N'Парфеньевна', @firstGroupID + 1, '2020-09-01'),
(N'Ермакова', N'Елена', N'Феликсовна', @firstGroupID + 1, '2020-09-01'),
(N'Мишин', N'Харитон', N'Протасьевич', @firstGroupID + 2, '2016-09-01'),
(N'Калинина', N'Мэри', N'Аристарховна', @firstGroupID + 2, '2016-09-01'),
(N'Петухова', N'Наталия', N'Владленовна', @firstGroupID + 2, '2016-09-01'),
(N'Назаров', N'Исак', N'Егорович', @firstGroupID + 2, '2016-09-01'),
(N'Кузнецов', N'Варлаам', N'Ярославович', @firstGroupID + 2, '2016-09-01'),
(N'Трофимова', N'Ванесса', N'Мироновна', @firstGroupID + 2, '2016-09-01'),
(N'Мухин', N'Родион', N'Авксентьевич', @firstGroupID + 2, '2016-09-01'),
(N'Шарапова', N'Богдана', N'Васильевна', @firstGroupID + 3, '2016-09-01'),
(N'Шарапова', N'Моника', N'Филатовна', @firstGroupID + 3, '2016-09-01'),
(N'Рожков', N'Флор', N'Ростиславович', @firstGroupID + 3, '2016-09-01'),
(N'Красильников', N'Ипполит', N'Романович', @firstGroupID + 3, '2016-09-01'),
(N'Белоусова', N'Бронислава', N'Валерьяновна', @firstGroupID + 3, '2016-09-01'),
(N'Николаев', N'Корней', N'Альбертович', @firstGroupID + 3, '2016-09-01'),
(N'Рыбаков', N'Даниил', N'Тарасович', @firstGroupID + 3, '2016-09-01');
UPDATE [Группа]
SET [ЗачётнаяКнижкаСтаросты] = (SELECT TOP 1 [НомерЗачетнойКнижки] FROM [Студент] WHERE [Группа] = 1 ORDER BY NEWID())
FROM [Группа]
WHERE ID = 1;
UPDATE [Группа]
SET [ЗачётнаяКнижкаСтаросты] = (SELECT TOP 1 [НомерЗачетнойКнижки] FROM [Студент] WHERE [Группа] = 2 ORDER BY NEWID())
FROM [Группа]
WHERE ID = 2;
UPDATE [Группа]
SET [ЗачётнаяКнижкаСтаросты] = (SELECT TOP 1 [НомерЗачетнойКнижки] FROM [Студент] WHERE [Группа] = 3 ORDER BY NEWID())
FROM [Группа]
WHERE ID = 3;
UPDATE [Группа]
SET [ЗачётнаяКнижкаСтаросты] = (SELECT TOP 1 [НомерЗачетнойКнижки] FROM [Студент] WHERE [Группа] = 4 ORDER BY NEWID())
FROM [Группа]
WHERE ID = 4;
/*
Учились 2 семестра. В каждом было 3 зачета и 2 экзамена по четырем дисциплинам (по
одной дисциплине предусмотрены и зачет, и экзамен)
На каждую специальность по 8 дисциплин [ 4 на семестр D: ]
*/
INSERT INTO [Дисциплина]([Название], [КодСпециальности], [Семестр], [Объём], [Отчётность])
VALUES (N'История России', @firstSpecialityID, 1, 120, N'Зачёт'),
(N'Алгебра и геометрия', @firstSpecialityID, 1, 120, N'Зачёт'),
(N'Математический анализ', @firstSpecialityID, 1, 240, N'Зачёт и Экзамен'),
(N'Теория вероятностей', @firstSpecialityID, 1, 180, N'Экзамен'),
(N'Основы программирования', @firstSpecialityID, 2, 120, N'Зачёт'),
(N'Алгоритмы и структуры данных', @firstSpecialityID, 2, 120, N'Зачёт'),
(N'Теория и практика речевого общения', @firstSpecialityID, 2, 240, N'Зачёт и Экзамен'),
(N'Философия', @firstSpecialityID, 2, 180, N'Экзамен'),
(N'История России', @firstSpecialityID + 2, 1, 120, N'Зачёт'),
(N'Алгебра и геометрия', @firstSpecialityID + 2, 1, 120, N'Зачёт'),
(N'Математический анализ', @firstSpecialityID + 2, 1, 240, N'Зачёт и Экзамен'),
(N'Теория вероятностей', @firstSpecialityID + 2, 1, 180, N'Экзамен'),
(N'Решение оптимизационных задач программными средствами', @firstSpecialityID + 2, 2, 120, N'Зачёт'),
(N'Базы данных', @firstSpecialityID + 2, 2, 120, N'Зачёт'),
(N'Теория и практика речевого общения', @firstSpecialityID + 2, 2, 240, N'Зачёт и Экзамен'),
(N'Философия', @firstSpecialityID + 2, 2, 180, N'Экзамен'),
(N'Архитектура информационных систем', @firstSpecialityID + 3, 1, 120, N'Зачёт'),
(N'Автоматизированное управление бизнес-процессами и финансами', @firstSpecialityID + 3, 1, 120, N'Зачёт'),
(N'Теория и практика речевого общения', @firstSpecialityID + 3, 1, 240, N'Зачёт и Экзамен'),
(N'Философия', @firstSpecialityID + 3, 1, 180, N'Экзамен'),
(N'Космические информационные системы и технологии', @firstSpecialityID + 3, 2, 120, N'Зачёт'),
(N'Безопасность и защита программных систем', @firstSpecialityID + 3, 2, 120, N'Зачёт'),
(N'Вычислительные машины, системы, комплексы и сети', @firstSpecialityID + 3, 2, 240, N'Зачёт и Экзамен'),
(N'Теория вероятностей', @firstSpecialityID + 3, 2, 180, N'Экзамен'),
(N'Нейронные сети', @firstSpecialityID + 5, 1, 120, N'Зачёт'),
(N'Операционные системы и ядра', @firstSpecialityID + 5, 1, 120, N'Зачёт'),
(N'Теория и практика речевого общения', @firstSpecialityID + 5, 1, 240, N'Зачёт и Экзамен'),
(N'Философия', @firstSpecialityID + 5, 1, 180, N'Экзамен'),
(N'Цифровые технологии сложных инженерных объектов', @firstSpecialityID + 5, 2, 120, N'Зачёт'),
(N'Разработка программно-информационных систем', @firstSpecialityID + 5, 2, 120, N'Зачёт'),
(N'Корпоративные информационные системы', @firstSpecialityID + 5, 2, 240, N'Зачёт и Экзамен'),
(N'Компьютерные системы и сети', @firstSpecialityID + 5, 2, 180, N'Экзамен');
DECLARE @firstDisciplineID INT = (SELECT TOP 1 ID
FROM [Дисциплина]
ORDER BY ID);
INSERT INTO [Преподавание]([Дисциплина], [Преподаватель])
VALUES (@firstDisciplineID, @firstTeacherID),
(@firstDisciplineID + 1, @firstTeacherID + 1),
(@firstDisciplineID + 2, @firstTeacherID + 2),
(@firstDisciplineID + 3, @firstTeacherID + 3);
DECLARE @copyFirstDisciplineID INT = @firstDisciplineID;
WHILE EXISTS(SELECT *
FROM [Дисциплина]
WHERE ID = @copyFirstDisciplineID)
BEGIN
INSERT INTO [Преподавание]([Дисциплина], [Преподаватель])
VALUES (@copyFirstDisciplineID, (SELECT TOP 1 [ТабельныйНомер] FROM [Преподаватель] ORDER BY NEWID()));
SET @copyFirstDisciplineID = @copyFirstDisciplineID + 1;
END
INSERT INTO [Изучение]([Студент], [Дисциплина], [Дата], [Оценка])
SELECT TOP 50 S.[НомерЗачетнойКнижки],
D.ID,
DATEADD(DAY, 40 + (CHECKSUM(NEWID()) % 30), '2020-01-01'),
IIF(D.Отчётность = N'Зачёт', (0 + ABS(CHECKSUM(NEWID())) % 2), (2 + ABS(CHECKSUM(NEWID())) % 4))
FROM [Студент] AS S,
[Дисциплина] AS D
ORDER BY NEWID()
COMMIT TRANSACTION