November 8, 2023

тут все

БД 1 лаба

Создать физическую модель бд в 3НФ и саму базу данных по следующим условиям. Даны таблицы "Студенты", "Учебные группы", "Дисциплины", "Оценки", "Преподаватели". Таблица "Студенты" связана с таблицей "Учебные группы" и "Оценки", таблица "Дисциплины" связана с таблицами "Оценки" и "Преподаватели".

Задание: писать запросы к созданной БД. В запросах вместо“X” подставьте своё значение, смотря что вбивали в качестве данных. Прикрепить скрины результатов и код SQL в отчете

задания -

11. Получить список всех студентов, у которых оценка по предмету “X” выше средней оценки по этому предмету:

12. Получить список всех студентов, которые обучаются в группе, в которой нет студентов с именем "X":

13. Получить список всех предметов, которые преподают только учителя с именем "X":

14. Получить средний балл по всем предметам для каждого студента:

15. Получить список всех студентов, у которых есть оценки по всем предметам:

БД 2 лаба

https://learn.microsoft.com/ru-ru/sql/relational-databases/performance/display-an-actual-execution-plan?view=sql-server-ver16 - свежая статья по теме

Практика: для любой имеющейся БД написать 3 различных запроса разного уровня сложности. Затем отобразить для них предполагаемый и фактический планы выполнения, выполнить анализ полученных данных, сделать вывод о проделанной работе 🙂

БД 3 лаба

https://otus.ru/journal/vse-chto-neobhodimo-znat-pro-indeksy-ms-sql/ - must have, особенно заострить внимание на кластерных и некластерных индексах

https://www.schoolsw3.com/sql/sql_create_index.php - синтаксис и примеры

Практика:

  1. Для любой имеющейся в наличии БД создать 3 запроса различного уровня сложности, для них посмотреть ожидаемый и фактические планы выполнения запросов (в целом можно взять из прошлой ЛР).
  2. Для различных столбцов вашей БД, используемых в вышеуказанных запросах, создать 3 индекса различных типов (по индексу на столбец, соответственно)
  3. Проанализировать изменения в ожидаемом и фактическом плане выполнения запросов
  4. Внести произвольные изменения в индексе. Например, можно добавить или удалить столбец из ключа индекса или изменить значение параметра индекса
  5. Удалить созданные ранее индексы

В отчет нужно приложить скриншоты по каждому пункту, а также дать ответы на контрольные вопросы 🙂

  1. Что такое индекс в SQL?
  2. Назовите существующие типы индексов, опишите их
  3. Когда рационально использовать индексы, а когда нет?

БД 4 лаба

Если очень кратко, то представление - это результат запроса, который сохраняется в отдельную таблицу. Ответы на вопросы “Как, зачем и почему” можно узнать ниже:

https://metanit.com/sql/sqlserver/10.1.php - лучший сайт(не реклама)

https://learn.microsoft.com/ru-ru/sql/relational-databases/views/create-views?view=sql-server-ver16 - официальная документация, что тоже неплохо

Практическое задание:

По аналогии с прошлыми ЛР, создать 3 логичных представления для различных наборов данных в вашей БД. То есть нужно аргументировать, почему именно для этого набора данных рационально создать представление. Также нужно воспользоваться командой ALTER VIEW для изменения представления, к примеру, добавить к нему еще один столбец.  Далее создать по одному произвольному запросу любой сложности с использованием этих представлений. Результат в скриншотах, как обычно.

Контрольные вопросы:

  1. Что такое представление в SQL?
  2. Для каких целей используются представления в SQL?
  3. Перечислите существующие типы представлений с кратким их описанием

БД 5 лаба

Создание хранимых процедур и определенных пользователем функций

https://metanit.com/sql/sqlserver/11.1.php - сведения о назначении и синтаксисе процедур в SQL

https://learn.microsoft.com/ru-ru/sql/t-sql/statements/create-function-transact-sql?view=sql-server-ver16 - много текста про функции, точно стоит ознакомиться с примерами и тем, что перед ними

https://learn.microsoft.com/ru-ru/sql/relational-databases/user-defined-functions/create-user-defined-functions-database-engine?view=sql-server-ver16 - еще примеры функций

Собственно, практика. Варианты по первой букве фамилии, и делаем именно свой вариант. Объединяться в команды можно сугубо по варианту на этот раз.  Далее задания:

А-И - 1 вариант

Напишите хранимую процедуру, которая принимает на входе имя таблицы и добавляет новую колонку типа INTEGER. Создайте хранимую процедуру, которая принимает на входе имя таблицы и имя колонки, а затем удаляет все строки, где значение этой колонки равно заданному. Напишите функцию, которая принимает на входе строку и возвращает ее длину.  Создайте функцию, которая принимает на входе строку и возвращает количество гласных букв в ней.

БД 6 лаба

Создание, модификация и удаление триггеров

https://www.youtube.com/watch?v=AXn7uZFrcs4&ab_channel=ITVDN - видео по триггерам именно в MS SQ

https://metanit.com/sql/sqlserver/12.1.php - снова лучший сайт

https://learn.microsoft.com/ru-ru/sql/relational-databases/triggers/modify-or-rename-dml-triggers?view=sql-server-ver16 - оф. документация

Практика: создать 4 триггера по своей БД, 2 с AFTER, 2 с INSTEAD OF. Самостоятельно определить их назначение (что они будут делать). 1 триггер удалить, 1 отключить и затем включить. Все пункты продемонстрировать скринами/фрагментами кода.

БД 7 лаба

https://learn.microsoft.com/ru-ru/sql/t-sql/language-elements/transactions-transact-sql?view=sql-server-ver16 - официальная документация по транзакциям. В конце страницы будут ссылки на инструкции транзакций, их смотрим обязательно. Далее источники, которые стоит смотреть если вы в отчаянии

https://habr.com/ru/articles/446662/ - этот душный

https://metanit.com/sharp/adonet/2.13.php - в этом мало инфы, хотя сайт категорически хорош

https://studfile.net/preview/3675162/ - еще более душный

https://learn.microsoft.com/ru-ru/sql/t-sql/language-elements/transaction-isolation-levels?view=sql-server-ver16 - про уровни транзакций, полезно

Практика:

На этот раз не будет конкретного задания по лабе. Вы читаете материал про транзакции, пробуете использовать их у себя в БД, при том разные виды транзакций, и затем пишете отчет по проделанной работе в текстовом документе, желательно со скринами. То есть балл будет зависеть сугубо от того, сколько времени вы потратили на использование транзакций так сказать в песочнице, и на отчет соответственно

БД 8 лаба

https://learn.microsoft.com/ru-ru/sql/relational-databases/security/authentication-access/create-a-database-user?view=sql-server-ver16 - создание пользователя

https://studfile.net/preview/3833895/page:41/ - разграничение прав доступа к бд

https://coderlessons.com/tutorials/bazy-dannykh/uchebnik-sql-server/15-sql-server-sozdat-polzovatelia#1 - всё сразу

Практика: создать произвольную группу пользователей с различными типами пользователя (с паролем, сопоставленный с ключом и т.д), раздать им различные права пользования базой данных. Использовать как команды SSMS, так и transact-sql запросы для создания пользователей и раздачи им прав. Отчет в произвольной форме (кроме устной), в идеале со скринами

P.S. по сути такая же песочница, как в лр 24

БД 9 лаба

https://learn.microsoft.com/ru-ru/sql/relational-databases/backup-restore/backup-overview-sql-server?view=sql-server-ver16 - обзор резервного копирования

https://learn.microsoft.com/ru-ru/sql/relational-databases/backup-restore/create-a-full-database-backup-sql-server?view=sql-server-ver16 - создание резервной копии БД

https://learn.microsoft.com/ru-ru/sql/relational-databases/backup-restore/restore-a-sql-server-database-to-a-point-in-time-full-recovery-model?view=sql-server-ver16 - восстановление БД

https://learn.microsoft.com/ru-ru/sql/relational-databases/backup-restore/differential-backups-sql-server?view=sql-server-ver16 - что такое разностные резервные копии

https://learn.microsoft.com/ru-ru/sql/relational-databases/backup-restore/create-a-differential-database-backup-sql-server?view=sql-server-ver16 - Создание разностной резервной копии БД

Практика: аналогично предыдущим, песочница. Посмотреть повертеть варианты создания резервной копии БД, варианты восстановления. Так же как в прошлых лабах отчётик красивый запилить

Контрольные вопросы:

  1. Зачем нужно резервное копирование БД?
  2. Какие существуют виды резервного копирования?
  3. Какие преимущества и недостатки имеет резервное копирование данных?
  4. Какие меры безопасности следует принять при хранении и использовании резервных копий данных?

БД 10 лаба

https://learn.microsoft.com/ru-ru/sql/relational-databases/security/securing-sql-server?view=sql-server-ver16 - обеспечение безопасности sql server

Можно еще глянуть вот этот файлик глянуть, если вы крутой или хотите преисполниться: https://docs.google.com/document/d/1bYw1etMWjXBMSzMFtstFry9swgmm95bq9JJBcFVE0Vo/edit?usp=sharing (это перевод вот этой документации: https://learn.microsoft.com/ru-ru/archive/blogs/sqlsecurity/security-best-practice-and-label-security-whitepapers )

Задание: проще некуда. Записать изученные вами методы обеспечения безопасности MS SQL Server в отчёт. Это как вывод по лабе, только без лабы

БД 11 лаба

Главная кнопочная форма. Создание простых ленточных форм для работы с данными - древний фолиант, но просто чтоб понимать, что нужно

Разработка шаблона формы на основе базы данных Microsoft SQL Server - Служба поддержки Майкрософт

C# + MSSQL | Создаём и подключаем базу данных к Windows Forms | SQL Запросы - вы вроде как c# учили и пишете на нем что-то, то вот видео по теме с шарпами. там в цикле 3 видео, на каждое уже не буду ссылку оставлять, должно появиться в предложке

Практика:

  1. создать БД на 2+ таблицы с произвольной спецификой (предприятие, университет, магазин, т.п.), внести строк по 20 любых.
  2. На любом языке программирования реализовать форму для работы с данными. Пункты такие: внести запись в произвольную таблицу, вывести все записи, удалить запись.
  3. Опционально: вывод записей с заданным фильтром/по критериям, возможность в форме добавить пользователей для работы с бд.