Data Engineer. Лекция 2
Наливайте чай,
приветствуйте друг друга в чате и приготовьтесь хорошо провести время
Про что сегодня �расскажем
Наливайте чай,
приветствуйте друг друга в чате и приготовьтесь хорошо провести время
Материалы для самостоятельной работы.
задачи, научитесь хорошо пользоваться формулами, можно посмотреть
на JavaScript внутри Sheets.
Материалы для самостоятельной работы (общие)
Материалы для самостоятельной работы
Материалы для самостоятельной работы (глубокое погружение)
Разница в терминах:
Типы баз данных:
Виды баз данных
(агрегированной) информации на основе больших массивов данных.
Типичные представители:
Виды нагрузки
Привычное представление таблицы:
Основные термины
Но нужно привыкать к следующему представлению:
Сущность (entity) – это нечто, о чем нужно хранить сведения в базе данных. Сущность в базе данных представлена в виде таблицы.
Атрибут – это описательные свойства сущности. В базе данных представлены в виде столбцов таблицы (также их называют поля, хотя вообще-то поле – это ячейка таблицы).
Запись – строка данных. Важный нюанс: в базах данных строки по умолчанию не имеют никакого порядка выдачи.
Связь – логическая связь между двумя и более сущностями.
Первичный ключ. Атрибут, точно идентифицирующий запись.
Классификация: простой и составной, естественный и суррогатный.
Ключ должен быть непустым, уникальным и не должен меняться.
Основные термины
Приведите пример сущности и ее первичного ключа в скобках. Например, для таблицы с прошлого слайда: сотрудники (табельный номер).
ER-модель
программирования для манипуляции данными в базах данных.
но также существует и стандарт SQL:2016.
Что такое SQL?
Компоненты SQL
CREATE TABLE SchemaName.TableName (
FieldName1 INTEGER,
FieldName2 VARCHAR(50) );
INSERT INTO SchemaName.TableName( FieldName1, FieldName2 )
VALUES ( 1, 'Text' );
SELECT * FROM SchemaName.TableName;
SQL. Первые шаги. Создаем и наполняем таблицу.
Важное дополнение про завершение транзакции.
Правило для тех, кто не хочет вникать – если у вас не включен режим AutoCommit, то после каждого действия INSERT, UPDATE, DELETE необходимо подать команду COMMIT.
CREATE TABLE SchemaName.TableName (
FieldName1 INTEGER,
FieldName2 VARCHAR(50) );
INSERT INTO SchemaName.TableName( FieldName1, FieldName2 )
VALUES ( 1, 'Text' );
SELECT * FROM SchemaName.TableName;
SQL. Первые шаги. Создаем и наполняем таблицу.
Давайте договоримся о правилах именования таблиц, поскольку схема у вас одна на всех. Прошу при создании своих таблиц (и вообще любых объектов) использовать префикс из четырех букв, полученных у преподавателя. Например, я буду использовать префикс SIND_
Создайте свою таблицу. Заполните ее данными. Проверьте что данные появились.
SQL. Типы данных.
SQL. Пример неаккуратной работы с типом.
SQL. Типы данных.
INSERT INTO SchemaName.TableName ( FieldName1, FieldName2 )
VALUES ( 1, 'Text' );
INSERT INTO SchemaName.TableName ( FieldName1, FieldName2 )
VALUES ( 1, 'Text' ), ( 2, 'Not text’ );
INSERT INTO SchemaName.TableName ( FieldName1, FieldName2 )
SELECT
OtherField1,
OtherField2
FROM SchemaName.OtherTable;
INSERT INTO SchemaName.TableName
SELECT * FROM SchemaName.OtherTable;
SQL. Способы вставки данных.
UPDATE SchemaName.TableName
SET FieldName2 = 'NewText'
WHERE FieldName1 = 1;
DELETE FROM SchemaName.TableName WHERE FieldName1 = 1;
DELETE FROM SchemaName.TableName;
TRUNCATE TABLE SchemaName.TableName;
SQL. Способы изменения и удаления данных
CREATE TABLE SchemaName.TableName (
FieldName1 INTEGER,
FieldName2 VARCHAR(50) );
CREATE TABLE SchemaName.NewTable AS
SELECT * FROM SchemaName.OldTable;
CREATE TABLE SchemaName.NewTable AS
SELECT * FROM SchemaName.OldTable WHERE 1=0;
SQL. Способы создания таблиц
Создайте копию таблицы hr.employees, включив в нее только сотрудников, чья зарплата более 10000.
Представление (на сленге «вьюха») – SQL код, сохраненный в справочнике базы данных под своим собственным именем. Данный код исполняется каждый раз при обращении к представлению. Обратите внимание, что представление само по себе не хранит данные, только SQL код.
Представления используются для двух целей:
CREATE VIEW SchemaName.ViewName AS
SELECT * FROM SchemaName.TableName;
CREATE OR REPLACE VIEW SchemaName.ViewName AS
SELECT * FROM SchemaName.TableName WHERE 1=1;
DROP VIEW SchemaName.ViewName;
SQL. Представления
Создайте представление над таблицей hr.employees, скрывающее данные о зарплате сотрудников. В представлении должны быть поля first_name, last_name, email, phone_number.
Нормальные формы и нормализация
Наливайте чай,
приветствуйте друг друга в чате и приготовьтесь хорошо провести время
Нормальные формы и нормализация
Наливайте чай,
приветствуйте друг друга в чате и приготовьтесь хорошо провести время
Нормальные формы и нормализация
Приведите к третьей нормальной форме предложенную таблицу (перед работой скопируйте ее себе):
https://docs.google.com/spreadsheets/d/1pSpLZfU6lqMj5nHpoB8SbUl0HnPrDynnxYU9m5mgtwA
Наливайте чай,
приветствуйте друг друга в чате и приготовьтесь хорошо провести время
Нормальные формы и нормализация
Приведите к третьей нормальной форме предложенную таблицу (перед работой скопируйте ее себе):
https://docs.google.com/spreadsheets/d/1pSpLZfU6lqMj5nHpoB8SbUl0HnPrDynnxYU9m5mgtwA
Чуть больше пояснений https://habr.com/ru/articles/254773/
Наливайте чай,
приветствуйте друг друга в чате и приготовьтесь хорошо провести время
Компоненты SQL
Наливайте чай,
приветствуйте друг друга в чате и приготовьтесь хорошо провести время
Best practice:
Категорически нельзя редактировать код в MS Word, MS Power Point и
другим подобным редакторам WYSIWYG. MS Excel может использоваться для
кодогенерации, но очень аккуратно.
Прежде чем начать. Где редактируем код?
Минутка юмора: почему MS Word является лучшей средой разработки в мире.
CREATE TABLE SchemaName.TableName (
FieldName1 INTEGER,
FieldName2 VARCHAR(50) );
INSERT INTO SchemaName.TableName( FieldName1, FieldName2 )
VALUES ( 1, 'Text' );
SELECT * FROM SchemaName.TableName;
SQL. Первые шаги. Создаем и наполняем таблицу.
Важное дополнение про завершение транзакции.
Правило для тех, кто не хочет вникать – если у вас не включен режим AutoCommit, то после каждого действия INSERT, UPDATE, DELETE необходимо подать команду COMMIT.
SQL. Ограничения целостности данных
Виды ограничений целостности:
CREATE TABLE articles (
articleid INTEGER CONSTRAINT pk_articles_articleid PRIMARY KEY,
title VARCHAR( 100 ) NOT NULL CONSTRAINT uq_articles_title UNIQUE,
text VARCHAR( 1000 ) NOT NULL,
published CHAR( 1 ) CHECK ( UPPER( published ) IN ( 'Y', 'N' ) ),
blogid INTEGER
);
SQL. Ограничения целостности данных
CREATE TABLE blogs (
blogid INTEGER CONSTRAINT pk_blogs_blogid PRIMARY KEY,
name VARCHAR( 100 ) NOT NULL CONSTRAINT uq_blogs_name UNIQUE
);
ALTER TABLE articles
ADD CONSTRAINT fk_articles_blogs FOREIGN KEY ( blogid )
REFERENCES blogs( blogid );
ALTER TABLE articles ALTER COLUMN text DROP NOT NULL;
SQL. Ограничения целостности данных
SQL. Задачи на ограничения целостности данных
Рубрика ээээксперименты!
SQL. Ограничения целостности данных
Виды ограничений целостности:
SQL. Ограничения целостности данных
CREATE TABLE articles (
articleid INTEGER CONSTRAINT pk_articles_articleid PRIMARY KEY,
title VARCHAR( 100 ) NOT NULL CONSTRAINT uq_articles_title UNIQUE,
text VARCHAR( 1000 ) NOT NULL,
published CHAR( 1 ) CHECK ( UPPER( published ) IN ( 'Y', 'N' ) ),
blogid INTEGER
);
SQL. Ограничения целостности данных
CREATE TABLE blogs (
blogid INTEGER CONSTRAINT pk_blogs_blogid PRIMARY KEY,
name VARCHAR( 100 ) NOT NULL CONSTRAINT uq_blogs_name UNIQUE
);
ALTER TABLE articles
ADD CONSTRAINT fk_articles_blogs FOREIGN KEY ( blogid )
REFERENCES blogs( blogid );
ALTER TABLE articles ALTER COLUMN text DROP NOT NULL;
SQL. Задачи на ограничения целостности данных
Рубрика ээээксперименты!
Нормальные формы и нормализация
Домашнее задание: создайте структуру базы данных по предложенной тематике
(дедлайн 2 недели)
К базе данных предъявляются следующие требования:
Предметная область (выберите одно):
1. Продажа автомобилей.
2. Приют для животных.
3. Железнодорожные перевозки.
4. Служба доставки.
5. Организация марафона.
Требования к оформлению:
Наливайте чай,
приветствуйте друг друга в чате и приготовьтесь хорошо провести время
SCD версионность
SCD0
Неизменяемые данные
SCD версионность
SCD1
SCD версионность
SCD2
SCD версионность
SCD2
Типовые действия с форматом SCD2