Главная / Блог / QA automation INTERVIEW PART 3

Собеседование на должность
QA Automation Engineer.
Web, SQL, Linux, Git, сети.

[ Часть 3 ]
Собеседование на должность
QA Automation Engineer.
Web, SQL, Linux, Git, сети.

Smartiqa Article
Дата: 15 сентября 2022
Автор: Евгений Поваров

1. Клиент-серверная архитектура

  1. Компоненты Web-приложения. 1. Серверная часть: Логика (Java, Python, C#, C++) + БД. 2. Клиентская часть: HTML, CSS, JavaScript. 3. Протокол: HTTP, HTTPS.
  2. В чем разница между протоколами HTTP и HTTPS? HTTPS является расширением протокола HTTP с надстройкой шифрования. HTTP использует порт 80, HTTPS - 443.
  3. Структура HTTP сообщения. Стартовая строка (тип запроса + адрес + версия HTTP), заголовки, тело сообщения.
Пример структуры HTTP запроса/ответа
# Запрос
GET /blog HTTP/1.1
Host: smartiqa.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: wp-settings
Connection: keep-alive

# Ответ
HTTP/1.1 200 OK
Date: Sun, 10 Feb 2013 03:51:41 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Server: Apache
 
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>
<html xmlns=»http://www.w3.org/1999/xhtml»>
<head>
<meta http-equiv=»Content-Type» content=»text/html; charset=utf-8″ />
<title>Smartiqa Blog</title>
</head>
<body>
</body>
</html>
4. Что такое веб-кэширование? Техника кеширования заключается в сохранении копии полученного ресурса для возврата этой копии в ответ на дальнейшие запросы. Запрос на ресурс, уже имеющийся в веб-кеше, перехватывается, и вместо обращения к исходному серверу выполняется загрузка копии из кеша. Это основной источник повышения производительности сайтов. Два типа кэша: приватные кеши и кеши совместного использования.
5. Что такое HTTP сжатие? Возможность, которая может быть встроена в веб-серверы и веб-клиенты для повышения скорости передачи и использования полосы пропускания. Клиент передает в заголовке Accept-Encoding поддерживаемые способы сжатия (gzip, deflate). Если данные были сжаты сервером, то он добавит в HTTP-ответ поле Content-Encoding или Transfer-Encoding с выбранным типом сжатия.
6. Что такое куки браузера? Небольшой фрагмент данных, который сервер отправляет браузеру пользователя. Браузер может сохранить этот фрагмент у себя и отправлять на сервер с каждым последующим запросом. Это, в частности, позволяет узнать, с одного ли браузера пришли несколько запросов (например, для аутентификации пользователя). Можно сохранить любую информацию о состоянии, HTTP-протокол сам по себе этого делать не умеет. Используется для: логина, корзины, пользовательских предпочтений, отслеживания поведения пользователей.
Developer Tools. Local Storage Content.
Developer Tools. Local Storage Content.
Postman. Cookies.
Postman. Cookies.
7. Компоненты Web-приложения. 1. Серверная часть: Логика (Java, Python, C#, C++) + БД. 2. Клиентская часть: HTML, CSS, JavaScript. 3. Протокол: HTTP, HTTPS.
8. В чем разница между протоколами HTTP и HTTPS? HTTPS является расширением протокола HTTP с надстройкой шифрования. HTTP использует порт 80, HTTPS - 443.
9. Структура HTTP сообщения. Стартовая строка, заголовки, тело сообщения.
10. Типы HTTP запросов. OPTIONS, GET, POST, PUT, PATCH, DELETE.
11. Прокси-сервер. Промежуточный сервер между компьютером пользователя и конечным пользователем. Повышает уровень конфиденциальности и позволяет обходить региональные блокировки.
12. API (Application programming interface). Контракт, который предоставляет программа. «Ко мне можно обращаться так и так, я обязуюсь делать то и это».
13. REST API. API, соответствующий принципам архитектурного стиля REST (например, отделение сервера от клиента, отсутствие сохранения состояния).
14. HTML. Версии. HTML4, HTML5, XHTML.
15. HTML. Структура web-элемента. Открывающий тэг, закрывающий тэг, атрибут, содержимое.
16. HTML. Виды тэгов. 1) Одиночные: <!doctype>, <meta>, <br>, <img>, <input>. 2) Парные: <p></p>, <a></a>). 3) Блочные (занимают всю ширину страницы или родительского элемента): <div></div>, <table></table>, <p></p>, <form></form>. 4) Строчные: <span></span>, <b></b>, <a></a>.
17. HTML. Классификация тэгов в HTML5 по типу контента. 1) Поток (Flow, основное содержимое страницы): <a>, <button>, <header>, <nav>, <ol>, <section> 2) Метаданные (Metadata, определяются в заголовке): <title>, <meta>, <script>, <style>. 3) Текст (Phrasing, текст страницы и его форматирование): <a>, <button>, <i>, <img>, <span>, <textarea>. 4) Встроенный контент (Embedded): <audio>, <video>, <img>, <svg>, <canvas>. 5) Интерактивные элементы (Interactive): <button>, <select>, <video>, <a>, <input>, <textarea>. 6) Заголовки (Heading): <h1>...<h6>. 7) Секции (Sectioning): <article>, <aside>, <nav>, <section>.
18. HTML. Атрибуты. 1) Универсальные: class, id, hidden, style, title. 2) Уникальные (характерны только для одного элемента): ismap, high, low, list. 3) Специфические (относятся не к одному, а сразу к нескольким тэгам): src, target, height, width, name. 4) Событийные: onclick, oncopy, onfocus.
19. DOM-модель. Определение. Это конечный вид документа как объекта, создаваемого веб-браузером на основании HTML кода, полученного с сервера. То есть 1) объединяются HTML, CSS и скрипты + 2) генерируются тэги с помощью языков программирования + 3) подтягиваются данные из БД => получаем финальный вид страницы. HTML-код, который пишут программисты – это всего лишь текстовый файл определенного формата, а DOM – результат действий браузера, который создает объекты при парсинге текстовых файлов.
20. DOM-модель. Основные структуры. Дерево, Наследник, Предок, Братья/Сестры, События, Узел.
21. HTML. Тэги верхнего уровня. <!DOCTYPE>, <html>, <head>, <body>.
22. HTML. Заголовочные тэги. <title>, <style>, <base>, <link>, <meta>, <script>.
23. HTML. Заголовок веб-страницы. Технологии. 1) Open Graph протокол 2) Resource Description Framework, 3) RSS каналы
24. CSS. CSS свойства. Свойство включает: 1) Selector, 2) Property, 3) Value. С точки зрения подключения стили можно разделить на 3 вида: 1) Встроенные (Inline) - задаются через атрибут style, 2) Внутренние (Internal) - определяются в тэге <style>, 3) Внешние (External) - хранятся в файле *.css и подключаются через тэг <link>.
25. CSS. Селекторы. Виды селекторов: 1) Глобальный: *, 2) По элементу: q, h1, 3) По классу: .class-name, 4) По идентификатору: #identificator-name, 5) По атрибуту: a[href="https://yandex.ru/"], 6) По псевдоклассу: a:hover, 7) По псевдоэлементу: section::first-line, 8) Групповые селекторы: h1, header, section, 9) Комбинированные: article p, body > p, h1 + p, article ~ p
26. CSS. Виды web элементов. 1) Блочные, 2) Строчные, 3) Flex, 4) Grid, 5) Table, 6) Inline-block
27. CSS. Блочные модели. Стандартная: свойства width и height задают только размер содержимого блока. Альтернативная: свойства width и height задают размер = содержимое блока + padding + border.

Подробнее можно почитать здесь:
  1. Web-приложение: понятие, компоненты и принципы работы
  2. HTML: Понятие, стандарты, тэги и атрибуты
  3. HTML: Структура страницы, DOM-дерево, применение тэгов.
  4. Современный CSS: Основные понятия, селекторы, блочная модель

2. Linux

  1. Что такое ядро Linux? Программа, написанная на том или ином языке программирования и скомпилированная в исполняемый файл. Ядро всегда загружается первым и потом постоянно "сидит" в определенной области оперативной памяти. То есть это программа, которая всегда находится в запущенном состоянии и взаимодействует, с одной стороны, с железом, а с другой – с системными и пользовательскими программами. На ядро возлагается функция оптимального распределения аппаратных ресурсов. Оно организует как бы параллельную работу множества программ, играет роль менеджера.
  2. Какие бывают виды ядер? Какое ядро в Linux? 1. Монолитное ядро проще и быстрее работает, так как в памяти всегда находится почти весь код. 2. Микроядро меньше, сложнее, работает медленнее, однако нередко считается более передовым из-за легкости подключения новых частей кода. У Linux монолитное ядро. Однако некоторые идеи микроядерной архитектуры тут также используются. Так драйверы устройств могут быть представлены в виде модулей и загружаться по требованию, а не при загрузке всего ядра.
  3. Что такое драйвер? Программный код, функция которого заключается в предоставлении возможности использовать определенное железо (например, видеокарту). Драйвер может загружаться сразу вместе с ядром, а может подгружаться по необходимости.
  4. Что такое POSIX? Стандарт, описывающий интерфейс между операционной системой и прикладной программой. Цель создания – обеспечение совместимости unix-like операционных систем, а также переносимости программ на уровне исходного кода.
  5. Корневые каталоги. /home, /media, /mnt, /boot (ядро + загрузчик), /etc (конфиги), /dev (файлы устройств), /bin (утилиты), /lib (библиотеки для утилит), /usr, /opt (программы пользователя), /var (кэш, логи).
  6. Типы файлов. 1) Файлы, 2) Каталоги (содержат информацию о файлах внутри), 3) Символьная ссылка (ссылка на имя файла), 4) Символьные устройства (терминал), 5) Блочные устройства (жесткий диск), 6) Сокеты (двунаправленные), 7) Каналы (однонаправленные).
  7. Что такое модули ядра? Это драйвера оборудования или FS, которые компилируются отдельно от ядра. Могут опционально подгружаться. Пример: /lib/modules/5.4.0.45-generic/kernel
  8. Что такое системный вызов? Программы в Linux могут работать в двух режимах: 1) Пользовательском (User mode) и 2) Режиме ядра (Kernel mode). Системный вызов - это функция, которая позволяет программам из User mode взаимодействовать с ядром Линукс.
  9. Группы системных вызовов. 1) Управление процессами (load, execute, exit, wait), 2) Работа с файлами (create file, delete file, open, close, read, write), 3) Управление устройствами, 4) Работа с информацией, 5) Связь, коммуникация.
  10. Что такое пакет в Linux? Пакет - это архив специального формата, который содержит все необходимые приложению бинарные файлы, конфиги, зависимости.
  11. Как устанавливаются пакеты? Процесс установки: 1) Запрашиваем установку пакета, 2) Менеджер пакетов (apt, apt-get) проверят зависимости, 3) Пакет и его зависимости загружаются из репозитория, 4) Устанавливаются. Списки репозиториев хранятся в файле /etc/apt/sources.list. Также существует локальный кэш пакетов (представляет собой базу данных). В нем хранится список доступных пакетов. Команда apt update - обновит локальный кэш. Команда apt upgrade - обновит все установленные в системе пакеты.
  12. Что такое init процесс? Это первый процесс, который запускается ядром Linux (/etc/init.d). init процесс проверяет файловую систему, задает время, запускает демонов. Дочерние процессы запускаются через forking.
  13. Что такое daemon? Является синонимом концепции «службы», задачи, которая выполняется непрерывно, обычно без взаимодействия с пользователем. Демон или Disk And Execution MONitor — это программа, которая работает в фоновом режиме. Демоны распространены среди сетевых инструментов и задач системного администрирования. Примеры: crond, httpd, sshd
  14. Что такое zombie процесс? Каждая программа, которая выполняется в Linux, - это системный процесс, у которого есть свой идентификатор. Каждый процесс может запускать дочерние процессы с помощью функции fork. Такие процессы остаются под контролем родительского процесса и не могут быть завершены без его ведома. Если один из дочерних процессов всё же завершился, а его родительский процесс не смог получить об этом информацию, то такой дочерний процесс становится зомби. Зомби процессы Linux не выполняются и убить их нельзя, даже с помощью sigkill, они продолжают висеть в памяти, пока не будет завершён их родительский процесс.
  15. Какой результат ожидается после выполнения следующей команды? cat log.txt | grep -e "[0-9a-z]\{32\}.bin". Получим все имена файлов с расширением .bin и длиной 32 символа, находящиеся в файле log.txt
  16. Какими способами процессы могут передавать друг другу данные? Через сокеты, каналы, общую память.
  17. Где можно посмотреть системные логи? /var/log/syslog, /var/log/boot.log, /var/log/boot.log
  18. Отладка ядра. 1) Проследить за системными вызовами - strace, 2) пошагово отладить ядро - gdb, 3) собрать данные о падении ядра - kdump.
  19. Что такое паника ядра? Kernel panic - сообщение о критической ошибке ядра операционной системы, после которой она не может продолжать дальнейшую работу.
  20. Файловые системы в Linux. FS - это система, которая связывает блоки на диске с программным обеспечением. То есть она показывает, как распределить логические данные (имя файла, размер, атрибуты) на физических носителях, создает/читает/удаляет их. Основные FS в Linux: 1) Ext 2, Ext3, Ext4 - стабильная и часто используемая FS. 2) XFS - предназначена для быстрой работы с большими файлами. 3) procfs (виртуальная) - FS для доступа к информации о системных процессах, обычно ее монтируют к /proc, она создаёт двухуровневое представление пространств процессов - на верхнем уровне процессы представляют собой каталоги, именованные в соответствии с их pid. 4) sysfs (виртуальная) - экспортирует информацию ядра Linux о присутствующих в системе устройствах и драйверах.
  21. Часто используемые команды. sudo, lsof, ps, top, kill, curl, wget, ssh, find, grep, awk, head, tail, less, pwd, ls, mkdir, rm, cat, touch, chown, cp, mv, ln

3. Git

  1. Системы контроля версий. Локальная, централизованная, распределенная.
  2. Основные понятия. Репозиторий, индекс, коммит, указатели, ветка, рабочая копия.
  3. Работа с репозиторием. Команды: init, clone, status
  4. Создание коммита. Команды: add, commit.
  5. Создание, просмотр, переключение между ветками, удаление. Команды: branch, checkout, log, diff.
  6. Отмена изменений. Команды: restore, rm, checkout, revert.
  7. Слияние изменений между ветками. Команды: merge, cherry-pick, rebase.
  8. Работа с удаленным репозиторием. Команды: fetch, pull, push.
  9. Работа с GitHub, форки и Pull Requests.

Подробнее можно почитать в нашем курсе по работе с Git.

Читайте также

4. Компьютерные сети

  1. Пятиуровневая структура сети (TCP/IP). Физический уровень. Сигналы в кабеле.
  2. Пятиуровневая структура сети (TCP/IP). Канальный уровень. Протоколы: Ethernet, WiFi. Идентификация по MAC адресам.
  3. Пятиуровневая структура сети (TCP/IP). Сетевой уровень. Протоколы: IPv4 и IPv6. Идентификация по IP адресам.
  4. Пятиуровневая структура сети (TCP/IP). Транспортный уровень. Протоколы: TCP/UDP. Идентификация по порту(80, 8080 и т д).
  5. Пятиуровневая структура сети (TCP/IP). Уровень приложений. Протоколы: HTTP, SSH, FTP.
  6. Сетевые сервисы. DNS (Domain Name System). Хранит сопоставление доменных имен и их IP адресов. Например, 8.8.8.8 - IP адрес для доменного имени google.com. Так же необходим для кэширования ранее используемых адресов (эти адреса могли быть получены от более крупного регионального DNS сервера). Часто к одному доменному имени могут еще привязываться поддомены и почтовые сервера, которые в свою очередь, могут иметь другие IP адреса. В DNS сервере есть файлы, в которых хранятся все необходимые связи между доменным именем и IP-адресами. Написанное в таком файле называется описанием DNS-зоны. Описание выполняется в помощью разных типов записей: A, MX, CNAME и т д.
  7. Что такое домен верхнего уровня? Домен верхнего (первого) уровня— самый высокий уровень в иерархии системы доменных имён (DNS) после корневого домена. Является начальной точкой отсчёта (справа налево), с которой начинается доменное имя в Интернете: .<домен 2-го уровня>.<домен верхнего (первого) уровня>.<домен корневого уровня>. Поскольку каждое имя интернет-домена состоит из нескольких частей, разделённых точками и записанными в обратном порядке, то доменом верхнего уровня является завершающая часть имени домена. Например, в имени домена www.smartiqa.ru доменом верхнего уровня является ru.
  8. Сетевые сервисы. NAT (Network Address Translation). Переводит частный адрес (адрес в локальной сети) в общедоступный публичный (адрес в интернете). Несколько устройств в локальной сети пользуются одним публичным адресом.
  9. Сетевые сервисы. DHCP (Dynamic Host Configuration Protocol). DHCP сервер выдает машинам в сети динамические IP адреса из заданного диапазона. Помимо IP адреса также присылает маску подсети, адрес шлюза, адреса DNS серверов.
  10. LAN/WAN. Локальная/Глобальная сети.
  11. VPN (Private Virtual Network). Позволяет объединить в одну частную сеть несколько локальных сетей через Интернет.
  12. Чем отличаются протоколы TCP и UDP? TCP – транспортный протокол передачи данных в сетях TCP/IP, предварительно устанавливающий соединение с сетью. UDP – транспортный протокол, передающий сообщения-датаграммы без необходимости установки соединения в IP-сети. Разница между протоколами TCP и UDP – в так называемой "гарантии доставки". TCP требует отклика от клиента, которому доставлен пакет данных, подтверждения доставки, и для этого ему необходимо установленное заранее соединение. Также протокол TCP считается надежным, тогда как UDP получил даже именование "протокол ненадежных датаграмм". TCP исключает потери данных, дублирование и перемешивание пакетов, задержки. UDP все это допускает, и соединение для работы ему не требуется.
  13. Как происходит передача пакетов через TCP? В 3 этапа: 1. Установка соединения, 2. Передача данных, 3. Завершение соединения. Установка соединения называется "трехэтапным рукопожатием": 1) Клиент отправляет номер и флаг SYN. Сервер возвращает номер и флаги SYN и ACK. Сервер переходит в состояние SYN-RECEIVED. 2) Клиент отправляет ACK флаг и переходит в состояние ESTABLISHED. 3) Сервер переходит в состояние ESTABLISHED.
  14. Что такое сокет? Сокеты — название программного интерфейса для обеспечения обмена данными между процессами. Сокет — абстрактный объект, представляющий конечную точку соединения. Например: 1) Сокет процессора — это разъем на материнской плате, куда подключается центральный процессор. 2) Сокет в сети — это конец канала связи. Допустим, между двумя программами, которые работают в сети, установлен канал сообщения. В этом случае одна такая программа будет являться сокетом в сети. Типы сокетов в сети: SOCK_STREAM и SOCK_DGRAM. 3) Веб-сокет - это определенный вид сокета в сети, который отвечает за соединение и передачу информации между веб-браузером и веб-сервером.
Вывод команды netstat
# Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)    
tcp4       0      0  192.168.0.104.59152    stackoverflow.co.https ESTABLISHED
tcp4       0      0  192.168.0.104.59149    199.232.148.193.https  ESTABLISHED
tcp4       0      0  192.168.0.104.59148    192.0.73.2.https       ESTABLISHED
tcp4       0      0  192.168.0.104.59147    151.101.129.69.https   ESTABLISHED
tcp4       0    517  192.168.0.104.59145    lb-in-f113.1e100.https ESTABLISHED
tcp4       0    517  192.168.0.104.59142    lb-in-f113.1e100.https ESTABLISHED
tcp4       0      0  192.168.0.104.59141    lu-in-f101.1e100.https ESTABLISHED
tcp4       0      0  192.168.0.104.59140    rest-domains.hh..https ESTABLISHED
tcp4       0      0  192.168.0.104.59139    la-in-f18.1e100..https ESTABLISHED
tcp4       0    517  192.168.0.104.59138    lb-in-f113.1e100.https ESTABLISHED
tcp4       0    517  192.168.0.104.59137    lb-in-f113.1e100.https ESTABLISHED

# Active Multipath Internet connections
Proto/ID  Flags      Local Address          Foreign Address        (state)    
icm6       0      0  *.*                    *.*                               

# Active LOCAL (UNIX) domain sockets
Address          Type   Recv-Q Send-Q            Inode             Conn             Refs          Nextref Addr
5e16cedc125c3a1f stream      0      0                0 5e16cedc125c3957                0                0 /var/run/mDNSResponder
5e16cedc125c3957 stream      0      0                0 5e16cedc125c3a1f                0                0
5e16cedc125c41ef stream      0      0                0 5e16cedc125c6f97                0                0 /var/run/mDNSResponder
5e16cedc125c6f97 stream      0      0                0 5e16cedc125c41ef                0                0
5e16cedc125c8c7f stream      0      0                0 5e16cedc125c8bb7                0                0 /var/run/mDNSResponder

5e16cedc125c4a87 dgram       0      0                0 5e16cedc125c94a7                0 5e16cedc125c356f
5e16cedc125c356f dgram       0      0                0 5e16cedc125c94a7                0 5e16cedc125c4447
5e16cedc125c4447 dgram       0      0                0 5e16cedc125c94a7                0 5e16cedc125c37c7
5e16cedc125c37c7 dgram       0      0                0 5e16cedc125c94a7                0 5e16cedc125c34a7
5e16cedc125c34a7 dgram       0      0                0 5e16cedc125c94a7                0 5e16cedc125c4767
15. Что такое SSL сертификат? Это цифровой сертификат, удостоверяющий подлинность веб-сайта и позволяющий использовать зашифрованное соединение. SSL (Secure Sockets Layer) – протокол безопасности, создающий зашифрованное соединение между веб-сервером и веб-браузером.
16. Чем отличаются SSL и TLS сертификаты? TLS (Transport Layer Security) переводится как «безопасность транспортного уровня». Обе технологии занимаются защитой пользовательской информации от злоумышленников. Отличие - TLS основан на спецификации SSL 3.0. А сам SSL уже давно устарел, разработчики редко его используют как единственную защиту. Чаще всего можно увидеть связку двух сертификатов SSL/TLS. Такая поддержка обеспечивает работу как с новыми, так и со старыми устройствами.

Подробнее можно почитать здесь: Web-приложение: понятие, компоненты и принципы работы

5. Базы данных, SQL

  1. Основные понятия. БД - набор сведений, хранящийся некоторым упорядоченным образом. СУБД - совокупность языковых и программных средств, с помощью которых осуществляется доступ к данным. SQL - язык структурированных запросов, который предоставляет просто способ к считыванию и записи данных. Схема: SQL -> СУБД -> БД
  2. Виды БД. Иерархическая, сетевая (есть связь многие-ко-многим), реляционная (все данные представлены в виде таблиц), объектно-ориентированная, гибридная.
  3. Реляционная БД. БД, основанная на реляционной модели данных. Реляционная модель - совокупность данных, состоящая из набора двумерных таблиц. Каждая таблица состоит из столбцов (полей/атрибутов) и строк (записей/кортежей).
  4. Свойства таблиц в реляционной БД. Свойства: 1. В таблице не может быть двух одинаковых строк. 2. Столбцы располагаются в определенном порядке, который задается при создании таблицы. 3. В таблице может не быть строк, но должен быть хотя бы 1 столбец. 4. У каждого столбца есть уникальное (в пределах таблицы) имя и тип значений. 5. Каждая ячейка должна иметь атомарное значение.
  5. Первичный ключ (Primary key, PK). Первичный ключ - поле или набор полей, которые однозначно идентифицируют запись в таблице.
  6. Виды связей между таблицами. 1. Один-к-одному (например, Сотрудник - Паспорт). 2. Один-ко-многим (например, Сотрудник - Должность) 3. Многие-ко-многим (Преподаватель - Группа).
  7. Внешний ключ (Foreign key, FK). Необходим для установления связей между таблицами. Как правило, он соединяет Первичный ключ главной таблицы и столбец/столбцы дочерней таблицы.
  8. Концептуальная модель БД. Это отражение предметной области, в которой разрабатывается БД. Как правило, представляет собой диаграмму, в которой 1) объекты - прямоугольники, 2) связи между объектами - ромбы, 3) атрибуты объектов - овалы.
  9. Как происходит процесс преобразования концептуальной модели в реляционную? 1. Составляем таблицы и создаем первичные ключи. 2. Проводим процесс нормализации.
  10. Нормализация. Это приведение структуры БД к виду, обеспечивающему минимальную логическую избыточность. Каждая нормальная форма налагает определенные ограничения на данные. Например, таблица находится в первой нормальной форме, если все ее поля имеют атомарные значения.
  11. SQL запросы. Примеры.
11.1. SQL. Создание таблицы CREATE TABLE
-- Cоздадим таблицу с названием months и тремя столбцами
CREATE TABLE months (id int, name varchar(10), days_number int);
11.2. SQL. Ввод данных INSERT INTO
-- Добавим в таблицу месяц Январь
INSERT INTO months (id,name,days_number) VALUES (0, ‘Junuary’, 31);
11.3. SQL. Получение данных SELECT
-- Простые запросы 
SELECT * FROM books; 
SELECT name, author FROM books; 
SELECT * FROM books ORDER by name DESC

-- Запросы с WHERE
SELECT * FROM books 
WHERE author = ‘I. S. Turgenev’;

SELECT * FROM books 
WHERE year >= 1900 AND  genre == ’Story’; 

SELECT * FROM books 
WHERE genre IN (’story’, ‘detective’); 

SELECT * FROM books 
WHERE year BETWEEN 1900 AND 1950; 

SELECT * FROM books 
WHERE name LIKE ‘K%’;

-- Запросы с функциями
SELECT MIN(year) FROM books; 
SELECT SUM(pages_number) FROM books; 
SELECT author, AVG(pages_number) as avg_pages_number FROM books GROUP BY author;

-- Вложенный SELECT
SELECT name, author WHERE year = ( SELECT MIN(year) from books );

-- Соединение таблиц
SELECT books.name, books.year, publisher.name 
FROM books INNER JOIN publishers 
ON books.publisher_id = publishers.id
11.4. SQL. Ввод данных INSERT INTO
-- Для всех книг с количеством страниц больше 200 проставим размер big
UPDATE books SET size = ‘big’ 
WHERE pages_number > 200
11.5. SQL. Удаление записей из таблицы DELETE FROM
Удалим из таблицы все книги, написанные Л. Н. Толстым
DELETE FROM books WHERE author = ‘L. N. Tolstoy’
11.5. SQL. Удаление таблицы TRUNCATE TABLE
-- Удалим таблицу books
TRUNCATE TABLE books;
12. SQL. Какая разница между LEFT, RIGHT, INNER, OUTER JOIN? Простой JOIN (он же INNER JOIN) покажет только общие записи обеих таблиц. Каким образом записи считаются общими, определяется полями в join-выражении. Например, запись FROM table1 JOIN table2 on table1.id = table2.id означает что будут показаны записи с одинаковыми id, существующие в обеих таблицах. LEFT JOIN (или LEFT OUTER JOIN) показывает все записи из левой таблицы (той, которая идет первой в join-выражении) независимо от наличия соответствующих записей в правой таблице. RIGHT JOIN (или RIGHT OUTER JOIN) действует в противоположность LEFT JOIN - показывает все записи из правой (второй) таблицы и только совпавшие из левой (первой) таблицы.
15 СЕНТЯБРЯ / 2022
Как вам материал?

Читайте также