Дэн Щербаков ⚛️
95 subscribers
20 photos
49 links
Канал для фронтенд-разработчиков о том, как развиваться и увеличивать зарплату.

Senior Frontend Developer с 6 годами опыта. За этот период увеличил зарплату почти в 7 раз.

Начинайте тут: https://yangx.top/code_lab/280
加入频道
SQL. Проектирование БД. Общие моменты.

- Cхема БД - это ее представление в виде взаимосвязи таблиц, в виде картинки или текста. По сути - проект. По схеме разработчик понимает структуру БД независимо от ее размера.

- Реляционные БД - значит, БД, построенные на отношениях (relation). Отношения - это просто таблицы.

- Домены. Это множества возможных значений атрибута. Например, домен атрибута пола состоит из множества {M, Ж}. Не следует путать домены с типами данных.

- Кортежи. То же, что и строки.

- Первичный ключ. Уникальный идентификатор кортежа. Может быть составным, потенциальным, несоставным. В третьей форме первичный ключ не может быть составным.

- Внешний ключ. Ключ к главной внешней таблице. Используется в дочерних таблицах.

- Аномалии. Возникают при неправильном проектировании после операций над таблицами.
Бывают аномалии вставки, модификации, удаления.
Пример: из главной таблицы удалена строка, на которую продолжает ссылаться внешний ключ в дочерней.
Решение: при проектировании закладывается либо каскадное удаление всех зависимых строк по внешнему ключу. Либо, если допустимо присутствие строки без связи с главной таблицей, задается дефолтное значение NULL.

- Теорема Хита:

R (A, B, C) = r1(A, B) join r2(A, C)

Что она означает:
Если в таблице с атрибутами A, B, C имеется зависимость A -> B, то декомпозиция этой таблицы обратима.

То есть, правильная нормализация проводится так, чтобы не потерять данные. Если после операции JOIN выполняется равенство по теореме, значит, декомпозиция проведена правильно.

#SQL
SQL. Пара слов о SQLite

Это легковесный движок реляционной БД. Он хранит БД в одном файле - что сводит миграцию базы до передачи этого файла. Его недостатки:
- Усеченная функциональность;
- Сложнее организовать разграничение доступа к таблицам;
- Только один пользователь может обновлять БД в определенный момент времени, а значит, высоконагруженные сервисы - в пролёте;
- Движок не чекает типы данных. Их можно указать в схеме - и все равно запихнуть неверные.

#SQL
SQL. Switch...case в SQL

В реляционных БД есть и эта знакомая всем логическая конструкция. Выражена она так:

SELECT column,
CASE
WHEN genre = 'romance'
OR genre = 'comedy'
THEN 'Chill'
ELSE 'Intense'
END AS 'Mood'
FROM movies;

Можно заметить, что CASE понимает операторы типа OR. Это полезно для построения логики.

#SQL