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