background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Базы данных за 42 минуты. Теория"

input logo icon
"videoThumbnail Базы данных за 42 минуты. Теория
Оглавление
|

Оглавление

0:55
Содержание
1:59
БД и СУБД. MySQL vs PostgreSQL
3:58
Состав БД. Индексы, транзакции, триггеры на пальцах
7:10
SQL vs NoSQL
11:40
Типы данных в админке Nova
14:15
Поле JSON. NoSQL внутри SQL СУБД
15:27
Как описывать поля в ТЗ
17:31
Типы связей
19:55
Связь, строка или JSON? Выбираем тип поля
24:00
Как описывать связи в ТЗ
27:17
Как проектировать связи в БД
30:34
Ключи Primary и Foreign
32:00
Важное ограничение OnDelete
34:30
Нормализация
36:48
Лайфхаки
39:18
Миграции, сиды, дампы
Теги видео
|

Теги видео

NoSQL
SQL
Реляционные базы данных
Key Value базы данных
PostgreSQL
Postgres
MySQL
СУБД
БД
Базы Данных
Внешние ключи
Foreign key
Primary key
Связи в базах данных
jsonb
onDelete
миграции
проектирование баз данных
написание ТЗ
типы данных
индексы бд
транзакции в бд
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
привет меня зовут миша родионов и
00:00:02
сегодня расскажу вам про основы базы
00:00:04
данных это видео будет очень очень
00:00:06
полезны продакт менеджером
00:00:08
проджект-менеджером продукт оунер им
00:00:11
техническим писателям аналитиком в общем
00:00:13
всем кто пишет pz всем кто описывает
00:00:17
логику структуру данных для
00:00:19
программистов и хочет это сделать
00:00:21
правильно так что вы потом не пришлось
00:00:23
переделать чтобы программисты
00:00:24
поняли вас правильно это такой мостик
00:00:27
между бизнесом и
00:00:28
разработкой базы данных особенно важно
00:00:32
правильно писать потому что переделать
00:00:34
их обычно сложнее и дороже чем все
00:00:36
остальное то есть в них уже хранятся
00:00:38
какие то важные данные переделывать их
00:00:40
сложнее если вы хотели научиться писать
00:00:43
крутые
00:00:44
sql-запросы то это видео точно не для
00:00:47
вас здесь мы пройдемся по основам и по
00:00:50
ну как бы полезным прием для описание
00:00:52
т.д. итак поехали смотрите что во мне
00:00:56
тут будет во первых мы пройдемся по
00:00:58
терминологии по каким-то сны и понятиям
00:01:01
составу баз данных потом я объясню чем
00:01:04
отличаются escuela новый скрыл баз
00:01:07
данных и как использовать новый sql
00:01:09
внутри с базы данных про типа данных
00:01:13
расскажу пару слов как и как их сделать
00:01:15
в админке лучше расскажу про связи про
00:01:20
то как они работают про ключ и зачем они
00:01:24
нужны
00:01:25
расскажу как проектировать базы данных
00:01:27
как нормализовать
00:01:28
данные это очень важно интересно тебя
00:01:32
часть ограничение
00:01:34
он делит ограничение вот это вот он
00:01:38
далит многие забывают из-за него потом
00:01:40
происходят всякие неприятные штуки
00:01:42
поэтому я думаю что это будет очень
00:01:44
полезно лайфхаки расскажу парочка
00:01:47
приемов в своих и несколько технических
00:01:50
терминов объясню которые используют
00:01:52
программисты часто храме у нас итак
00:01:55
поехали
00:01:57
терминологии бдсм д вы смотрите под
00:02:01
крест москве нил mongo db и все
00:02:04
остальные это не база данных это система
00:02:07
управления базой данных то есть базы
00:02:11
сами данные баз данных
00:02:13
это какие-то файлы которые лежат себе
00:02:15
никого не трогают ничего не умеют а зубы
00:02:19
d содержит еще оптимизатор запросов
00:02:21
который принимает на вход sql запрос на
00:02:26
линии скул за просто но очень принимает
00:02:27
запрос и думают как его лучше выполнить
00:02:30
чтобы эти данные забрать и отдать
00:02:33
разработчику программист камса
00:02:35
пользователю обычно дегазатор запросов
00:02:39
ну как бы это одна из самых умных частей
00:02:43
проекта пока не веришь в наших проектах
00:02:45
оптимизатор запросов этот самая умная
00:02:47
часть наших проектов и он настолько
00:02:50
важно что с помощью него я могу даже
00:02:54
объяснить основную причину почему
00:02:56
перешли с mysql на пост bless нам sql
00:02:59
папки кадр запросов реализован как
00:03:02
плагин и его можно заменить есть
00:03:05
несколько реализации есть и на д.б.
00:03:08
мария май сам что такое в общем там
00:03:14
какая какой-то зоопарк в паз gres нету
00:03:17
возможность изменить его нет разных
00:03:21
реализации то есть он там прибит
00:03:22
гвоздями
00:03:23
но привет гвоздями настолько хорошо что
00:03:26
при принятии решений о том как выполнить
00:03:30
ваш запрос об негатор опирается на
00:03:33
структуру вашей базы данных и гораздо
00:03:37
лучше это делать чем москве потому что
00:03:39
но он знает как лежать данные маска он
00:03:41
не знает и за то что он узнает он делает
00:03:43
бы гораздо лучшим то есть десятки
00:03:45
процентов быстрее выполняются запросы мы
00:03:47
проверяли
00:03:48
ну и плюс там еще много всяких вещей
00:03:50
подгрести
00:03:51
про одну из них я расскажу это джейсон б
00:03:55
терминология из чего состоят систем
00:03:58
управления базами данных
00:03:59
ну реляционной базы именно реляционный
00:04:03
то есть но в принципе я буду часто
00:04:05
говорить sql или и буду их называть
00:04:07
реляционные
00:04:08
и этого нам будет достаточно
00:04:12
реляционная база данных состоит из
00:04:14
таблицы и сюрпрайз surprise таблицы
00:04:17
состоят из столбцов и строк какое
00:04:20
классное видео вы нашли в интернете да
00:04:22
знаете все старики
00:04:23
шаг
00:04:24
выше подробности ключи и ограничения
00:04:27
обеспечивают целостность базы данных но
00:04:29
про ключи мы еще поговорим но я уже
00:04:32
начинаю затрагивать тот момент что ключи
00:04:34
в базе данных
00:04:35
использую только для того чтобы
00:04:37
ограничивать вас и сохраняет целостность
00:04:41
индексы я попробую на словах на пальцах
00:04:46
вкратце объяснить ну да индекс это
00:04:49
таблица с арт сортированы my значениями
00:04:51
ускоряющие выборку
00:04:53
например если у вас есть таблица с
00:04:56
котиками вас должны мы там лица с
00:05:00
котиками и в ней есть параметр цвет то
00:05:05
если вы в этой ситуации еще хотите
00:05:08
быстро выбирать всех только там рыжих
00:05:11
котиков то вы может быть хотите сделать
00:05:15
яндекс по цвету таким образом вы берете
00:05:20
эту таблицу с котиками сортируете и по
00:05:24
цвету и сохраняете как бы вот рядышком в
00:05:28
таком ум уменьшенном таком виде там
00:05:30
убираете все лишнее из нее нос но
00:05:32
отсортированы у вас данные по цвету и
00:05:34
потом когда вам нужно взять только рыжих
00:05:37
вам гораздо легче это взять потому что
00:05:38
там рыжие все идут рядышком вам нужно
00:05:41
только найти границы начала и конца
00:05:43
рыжих котов и пойти взять данные из базы
00:05:47
из таблицы это ускоряет выборку
00:05:50
на 90 процентов индексов работает так
00:05:54
транзакции это тоже прикольная штука
00:05:58
тоже
00:05:59
чисто по моему в реляционных базах и
00:06:01
хотя нет не только эволюционных в общем
00:06:04
в реляционных это просто маст и без нее
00:06:06
ничего не работает транзакция
00:06:09
это дней нескольких успел запросов в
00:06:11
одну пачку и если допустим у вас
00:06:15
интернет магазин или кто-то сервис
00:06:18
создается заказ при этом обязательно
00:06:21
нужно списать количество единиц на
00:06:24
складе нужно пользу и пользователя
00:06:27
баланс писать накинуть ему там бонусы
00:06:29
что-то еще сделать может быть несколько
00:06:31
складов там
00:06:33
посетите этому запросу нужен вам нужно
00:06:35
сделать много запросов которые должны
00:06:37
быть выполнены все вместе в этом случае
00:06:40
не оборачиваются в одну транзакцию и
00:06:42
если один из этих запросов не выполнится
00:06:45
то все остальные тоже откатиться обратно
00:06:49
то есть кран транзакций начинается она
00:06:51
идет идет если что-то не выполнилось что
00:06:53
она вся откатывается обратно вот такая
00:06:57
крутая штука
00:06:59
триггеры это логика внутри систем
00:07:02
управления базами данных она мне не
00:07:05
нравится тем что ее нельзя положить под
00:07:08
контроль версии под гид по этому и не
00:07:10
пользуемся sql sql
00:07:13
ну смотрите объясняю вообще на пальцах
00:07:18
то есть у вас таблицы пользователей и
00:07:21
допустим вот для деборы wood мы решили
00:07:27
вот нам последние записи мы решили
00:07:30
добавить ещё одно свойство допустим
00:07:32
хотим узнать добавить ну там не знаем
00:07:37
расстояние до нее расстояние до работы и
00:07:42
тогда нам придется добавлять столбик и
00:07:45
это расстояние до работы должно будет
00:07:47
присутствовать у всех остальных членов и
00:07:50
нужно будет придумать что какого них
00:07:52
расстояние это только работа
00:07:55
традиционный баз данных таблицы у
00:07:57
которой жестко заданы количество
00:07:59
столбцов а вот так работает на вас коил
00:08:03
баз данных здесь смотрите у нас есть два
00:08:07
пользователя и the key value и базы
00:08:10
данных поэтому у меня ключ-значение
00:08:13
границы ключом является имя миша или там
00:08:17
и значением является набор параметров то
00:08:20
есть в принципе здесь как и в прошлой
00:08:22
таблице есть разные параметры и потом
00:08:25
первое имя второе e-mail но в у миши
00:08:29
параметров больше чем у томы
00:08:31
и ничего не ломается то есть количество
00:08:33
столбцов получается разные для каждой
00:08:36
строки
00:08:37
это сильно упрощает работу с базами
00:08:41
данных сильно упрощает выкатывание новых
00:08:44
изменений по базам данных то есть не
00:08:45
приходится эти столбцы дорисовывать
00:08:48
время выхода с помощью миграций нет
00:08:51
миграции это нормальная штука но как бы
00:08:53
оно сложное и вообще вот эти вот
00:08:57
носка их базы данных появились из-за
00:09:00
есть одна классная
00:09:02
хорошая причина почему они появились
00:09:04
когда у facebook очень возникла проблема
00:09:09
с масштабированием с большой нагрузкой
00:09:12
они задумывались о том как базу данных
00:09:14
раскидать на несколько серверов и с
00:09:16
реляционной базы это довольно сложно
00:09:18
потому что там все данность друг дружкой
00:09:19
очень связаны сильно не придумали новый
00:09:23
сквер базу данных какую я уже не помню и
00:09:26
них получилось и сейчас новость к его
00:09:29
база данных широко используется когда
00:09:31
нужно масштабироваться горизонтально то
00:09:33
есть разрезать ваши данные на несколько
00:09:37
кусков и разложить их на разные сервера
00:09:39
целиком и базой такой номер очень сложно
00:09:42
и насколько я знаю сортирования что ли
00:09:46
называется начнем вот это это реально
00:09:48
очень сложно в основном используется
00:09:50
репликация то есть дублирование базы и
00:09:53
это тоже сложно потому что они должны
00:09:57
быть время одинаковые они расходятся там
00:10:00
какая-то должна выполняться логика
00:10:02
потому как зачем следить
00:10:04
так далее общем с реляционными базами
00:10:07
сложно расти
00:10:09
ну сложно расти сильно на самом деле ну
00:10:13
как все равно есть вещи которые помогают
00:10:16
он на хорошую нагрузку положите лицом и
00:10:19
базу такие как управляемые базы данных и
00:10:21
так далее так вот
00:10:25
sql базы данных обеспечивают ну хороши
00:10:29
тем что обеспечивает целостность данных
00:10:31
то есть это вот первое первый тип где у
00:10:34
меня
00:10:36
я улетел сейчас есть sql этого
00:10:40
традиционной но скрыл это не реляционные
00:10:43
0 итак кивали
00:10:45
я понимаю есть исключение есть другие
00:10:47
типы новым в основном подавляющее
00:10:49
большинство именно так так вот sql базы
00:10:52
данных это целостность это широкая
00:10:55
поддержка потому что они просто дольше
00:10:57
существуют новость куэлл базы данных
00:11:01
удобства работы действительно гораздо
00:11:04
проще работы с ними
00:11:05
программировать удобства публикации
00:11:08
удобства то есть обслуживания и можно
00:11:11
просто горизонтально масштабироваться
00:11:13
вообще есть горизонтальное
00:11:15
масштабирование до на разные на
00:11:16
несколько серверов аист вертикальное
00:11:18
когда один сервер вы наращиваете вверх
00:11:20
ну добавляет ему ресурсов так вот
00:11:22
вертикальными гораздо хуже чем
00:11:24
горизонтальная горизонтально еще дает
00:11:28
безопасности то есть если у вас много
00:11:29
серверов которые делают одно и тоже то
00:11:31
если один из них сдохнет то остальные
00:11:34
останутся жить ну так скажем это это в
00:11:39
целом программе масштабирование такой
00:11:41
point типа данных сейчас я расскажу про
00:11:45
эти типа данных которые мы используем в
00:11:47
админке то здесь мы просто пройдемся по
00:11:49
наши админке
00:11:50
мы используем marvel ново и я думаю что
00:11:54
здесь для вас ничего особенного не будет
00:11:56
но все-таки вы будете vt записать их в
00:12:00
правильным единым языком
00:12:02
checkbox мы называем буллен он имеет
00:12:06
значение true force число целое интеджер
00:12:10
число с плавающей точкой или дробное
00:12:12
число это флот все все поля типа date
00:12:18
время мы описываем как daytime
00:12:22
выпадающие списки мы называем select a
00:12:24
mi и здесь важно сказать что когда мы
00:12:26
запишем select мы имеем в виду именно
00:12:30
выбор из набора предопределенных
00:12:33
значений то есть вот в этом справа
00:12:35
select текке не какие-то три поля из
00:12:39
базы данных
00:12:40
а именно захардкожены и три строчки в
00:12:43
коде вот это в итоге будет важный сейчас
00:12:48
мы подойдем к этому так
00:12:51
еще типа данных это текстовый input то
00:12:55
есть просто текст слова input здесь можно убрать мы
00:12:58
называем текст текст арея
00:13:00
это многострочные текстовое поле
00:13:03
визуальный редактор мы называем визе вик
00:13:06
потому что это сокращение от
00:13:09
вот you see is what you get вы наверное
00:13:13
видели велик но не шифровали вот так
00:13:15
ошиваться и масса всяких полей по
00:13:20
медиа-данных то есть файл изображения
00:13:22
видео массив файлов массив изображение
00:13:26
массив видео все это мы умеем делать с
00:13:29
помощью плагина спать и медиа лай брали
00:13:33
вот это очень прикольно делается вот
00:13:36
если вы работаете наворовал именно вата
00:13:38
посмотрите это просто маст здесь у меня
00:13:42
показан еще один тип поле называется
00:13:44
конструктор и мы постепенно подходим к
00:13:48
интересной теме про
00:13:49
джейсон поля как видите на видяшки
00:13:53
происходит что-то безумное в одно поле
00:13:58
укладывается довольно-таки большая
00:14:00
структуры и типа оно может быть вообще
00:14:03
любой сделано это с помощью там пакета
00:14:07
flexible ну это не суть
00:14:08
главное что в итоге в базу данных
00:14:10
кладется джейсон чик давайте я покажу ну
00:14:14
да здесь у меня слева не такая сложная
00:14:17
структура я просто вырезал там что было
00:14:19
но это реальный пример когда у нас
00:14:22
несколько разных полей какая-то
00:14:25
структура укладывается прямо в один
00:14:27
столбик в одно поле
00:14:28
то есть как я сказал в начале доклады мы
00:14:33
выбрали postgres это sql база данных но
00:14:37
мы используем вот такой подход
00:14:40
джейсон поля для того чтобы добиться
00:14:43
частично возможности бы использовать но
00:14:47
иску и в базу данных смотрите здесь
00:14:49
очень похоже то есть если у нас допустим
00:14:52
база ключ-значение там была какая-то ман
00:14:54
ок mongo db то здесь такая же логика
00:14:57
есть поле fields это ключ есть вот вот
00:15:02
это вот данные этого лью и ну принципе
00:15:06
если мне допустим для кого-то нового
00:15:07
пользователя нужно будет добавить что
00:15:10
там не знаю размер противогаза то я
00:15:13
смогу добавить только для этого
00:15:15
пользователя размер противогаза потому
00:15:16
что вот у него тут такой вот джейсон чик
00:15:18
остальных это не затронет мне не нужно
00:15:20
будет дорисовывать еще одну колонку вот
00:15:22
то есть у нас такой небольшой на узкую
00:15:24
внутри стоило мы еще вернемся немножко
00:15:29
кота затронем войска и
00:15:31
чосон и так вот как описывать поля в
00:15:36
техническом задании вы смотрите имя
00:15:39
параметра я не прошу писать какой-то
00:15:42
техническая то есть менеджеры пишут
00:15:44
ткать его по-русски
00:15:46
описание здесь это столбик который
00:15:49
сваливается все что они могут придумать
00:15:51
про ограничения этого поля технически
00:15:54
редактировать цены на в админке
00:15:56
уникальна не уникальная сколько там
00:15:58
символов может быть какие символы и всю
00:16:00
остальную часть
00:16:01
am варьируется набор ограничений поэтому
00:16:04
они все вон аккаунты тип поля вот
00:16:08
по-английски взяты из списка который я
00:16:11
говорил до этого только дата время тут
00:16:13
почему-то бруски ну обязательность его
00:16:16
вынесена в отдельную колонку и это
00:16:19
поводу больно важный параметр потому что
00:16:24
потому что программисту довольно сложно
00:16:26
обычно понятие обязательно поле или не
00:16:28
обязательно все остальное там понять
00:16:30
проще то есть сколько там максим
00:16:32
символов это вот вообще неважно
00:16:34
ну не страшного там сделать больше и все
00:16:36
а вот на всякий случай сделать его
00:16:40
обязательным или на всякий случай сделать его
00:16:42
необязательным не получится то есть это
00:16:44
это должно быть какое-то обоснованное
00:16:46
решение и программе сможет сделать
00:16:47
неправильно либо может понравиться очень
00:16:49
большое время на размышление поэтому
00:16:53
заполнение этого поля должно могут в
00:16:56
реляционных базах вот такая вот есть
00:16:57
штука то есть вы должны объяснить
00:16:59
четко обязательно или но для заполнения
00:17:04
и конечно же если вы будете описывать
00:17:06
эти поля то добавьте примеры но
00:17:09
программисты они как люди они не люди я
00:17:13
я вот сам коде мне приятно когда мне
00:17:16
объясняют нормально что-то они просто
00:17:18
как будто я робот и примеры записи
00:17:21
данных мне очень помогают нам снять и
00:17:24
как ребенку справа внизу какой-то текст
00:17:27
прикольного на вы почитайте
00:17:30
я пойду дальше типы связей ну вот
00:17:34
смотрите мы подобрались к связям связи
00:17:37
это очень прикольно очень очень очень
00:17:38
прикольно вообще понимание связи это то
00:17:41
что мы спрашиваем на собеседованиях
00:17:44
почти на всех поэтому давайте случае
00:17:47
смотрите есть несколько связей один к
00:17:50
одному 1 ко многим и многие ко многим
00:17:53
это самые часто используемые они есть в
00:17:56
любой ну в любой реляционной базе данных
00:17:59
точно да и в не реляционный тоже неважно
00:18:02
какой фар import не важно что они точно
00:18:04
есть вот эти три
00:18:06
один к одному кстати говоря я никогда не
00:18:10
использовал и все сам создатель
00:18:13
фреймворка в laravel
00:18:15
тейлор от его сказал я тоже к
00:18:18
использование когда ты ко мне это не вот
00:18:21
он сказал а я такой я тоже используется
00:18:25
в основном два типа связи это один ко
00:18:28
многим и многие ко многим нужно уметь их
00:18:31
различать и различать родители ребенка в
00:18:35
один ко многим ну смотрите например один
00:18:39
ко многим это товар из нет заказ и
00:18:44
пользователь у пользователя много
00:18:47
заказов у заказа всего один пользователь
00:18:50
поэтому здесь с одной стороны один
00:18:52
пользователь с другой стороны
00:18:54
много товаров многие ко многим это
00:18:58
например статьи и теги в блоге тегов
00:19:05
может быть у статьи много и статей у
00:19:08
1-го тега тоже может быть много вот и
00:19:12
ещё один это принципе так как понять к
00:19:17
тип связи ну вот вы спрашиваете а может
00:19:21
ли быть много у первого вторых а может
00:19:23
ли быть много у второго первых и здесь
00:19:27
еще довольно важная штука так одну
00:19:29
секунду здесь довольно важно в садик
00:19:35
один-ко-многим важно понимать который а
00:19:38
кто ребенок я скоро тоже по ddu почему
00:19:41
это важно и тот кто тот кто один тот
00:19:48
родитель
00:19:49
тот кого много тот ребенок о слушать вот
00:19:55
я недавно добавил этот слайд он очень
00:19:58
классный фишка в том из ной point в том
00:20:03
что не до всего нужна связь и справочник
00:20:07
то есть иногда вы хотите чтобы записать
00:20:09
его не не можете понять то ли это просто
00:20:11
такое свойство
00:20:13
например цвет то ли эта связь с
00:20:16
справочником цветов не такие как же это
00:20:19
сделать я вам объясню как это сделать
00:20:22
смотрите три возможных по записи на
00:20:25
примере у меня связь с внешним
00:20:27
справочником отдельная колонка и
00:20:30
давление свойства в джейсон колонку в
00:20:33
который там все подряд лежит как
00:20:37
отличаются эти три три подхода во первых
00:20:44
рядах вы должны задать себе вопрос а
00:20:46
может ли пользователь добавить в список
00:20:50
цветов еще один цвет
00:20:52
вопрос имеет идут что можно ли добавить
00:20:56
еще один цвет список цветов и еще один
00:21:00
вопрос это
00:21:01
может ли быть по этому полю фильтрация
00:21:04
сортировка какой-то поиск какие-то
00:21:07
системой выборки и вот смотрите у меня
00:21:10
здесь как раз разложено все первая
00:21:13
колонка это связь с внешним справочником
00:21:16
цветов тип поля у меня интеджер есть
00:21:20
циферка plus for некий внешний ключ
00:21:23
который ссылается на таблицу вообще
00:21:26
ворота вот как будто бы зависть таблицы
00:21:28
пользователей цепь за неважно чего вот
00:21:32
мы ссылаемся на другую таблицу в которой
00:21:34
есть цвета и есть 5 цвет и он там
00:21:38
красный допустим вот это первый вариант
00:21:41
второй вариант мы называем колонку color
00:21:45
даем и тип string то есть строка и
00:21:49
записываем в эту строку на просто вот
00:21:51
название каким-то системным и минимум
00:21:53
например рэнд третий вариант мы уже
00:21:57
создали допустим колонку fields
00:21:59
у которой тип джейсон ли джейсон бтмс
00:22:04
квилта это джейсон из бреста
00:22:06
джейсон b и допустим мы просто в список
00:22:11
параметров сюда засовываем еще одну пару
00:22:13
color red в первом случае мы сможем
00:22:18
добавлять новые цвета ручками в админке
00:22:22
там 6 7 8 10 вот и сможем из них здесь
00:22:25
выбирать в этом случае у нас цвета
00:22:28
прибиты гвоздями то есть их там 5 все
00:22:30
но ну ну да мы можем выбрать какой из
00:22:35
этих пяти
00:22:36
в этом случае ну что-то примерно такое
00:22:38
же то есть их там 5 все по фильтрация в
00:22:46
первом случае
00:22:47
фильтровать можно очень быстро то есть
00:22:49
если у вас допустим этот магазин и будет
00:22:51
фильтрация по цветам то это хороший
00:22:53
вариант во втором варианте по цветам
00:22:56
фильтровать можно довольно быстро но вот
00:22:58
здесь вот я подписал что быстрее будет с
00:23:00
индексом в этом случае яндекс и так
00:23:04
создается то есть мы savage рассуждаем
00:23:06
индексы когда используем формики во
00:23:09
втором случае надо еще добавить индекс
00:23:11
если вы понимаете что по
00:23:13
value будет сортировка и фильтрация а в
00:23:16
третьем случае
00:23:17
ну как бы операция по фильтров
00:23:23
фильтров к сортировка
00:23:26
тоже возможно но она будет очень долгой
00:23:29
потому что нужно будет залезать внутрь
00:23:31
этого джейсона
00:23:33
кто бы что не говорил это неудобно и
00:23:35
неправильно есть это будет долго базы
00:23:38
данных так работать быстро не сможет
00:23:40
реляционная база все довольно быстрые но
00:23:42
они быстрые только вот этих первых двух
00:23:44
случаях 3 не будет работать медленно но если у
00:23:47
вас по цвету никогда не планируется и
00:23:49
вас там это какой-то 10 параметр который
00:23:52
никого не интересует тоже совать его в
00:23:54
эти филби в джейсон и все будет хорошо
00:23:58
вот какая какой интересный слайд пойдем
00:24:02
дальше значит
00:24:05
как описывать связи на примере модели
00:24:08
товар ну смотрите здесь у меня есть
00:24:14
интересные столбики первые название
00:24:16
связи а второй связанная модель и вот
00:24:20
давайте на этом 2 секунды становимся то
00:24:22
есть если у нас мы говорим про товар
00:24:25
товар связано с категорией название
00:24:28
связи категория то во втором случае тоже
00:24:30
комментарии комментарии
00:24:31
а в третьем товар связан с пользователем
00:24:34
а связь и
00:24:36
является давление в закладки и может
00:24:39
быть и другая связь например там жалобы
00:24:41
на товар а может быть давление в корзину
00:24:44
в общем две модели 2 справочника могут
00:24:47
быть связаны несколько раз поэтому
00:24:50
название связи лучше написать иначе вас
00:24:54
там потом начнется путаницу
00:24:55
а недавно начинается сразу потому что
00:24:57
вот если вы просто написано товара с
00:24:59
пользователем и вы думаете и чего зачем
00:25:03
они связаны как тут сразу понятно так
00:25:05
это для закладок
00:25:06
тип связи ну понятно один ко многим или
00:25:09
многие ко многим и кстати как раз здесь
00:25:14
меня товары пользователь это пример
00:25:17
интересной связи многие ко многим
00:25:19
то есть у одного пользователя может быть
00:25:22
много товаров в избранном а у одного
00:25:24
товара
00:25:25
один товар у многих пользователей в
00:25:28
избранном до
00:25:30
если у нас связь один-ко-многим то вряд
00:25:33
ли нужно указать кто папа кто ребенок и
00:25:36
здесь у нас
00:25:38
роль текущей модели товар ребенок роли
00:25:42
категории
00:25:44
папа потому что у одной категории может
00:25:48
быть много товаров
00:25:49
а у товара может быть только одна
00:25:51
категория ну вот здесь от меня так то
00:25:52
что товар может быть одна категория моем
00:25:55
примере комментарии комментариев у
00:25:58
товара может быть много у одного камин у
00:26:04
одного товара комментариев много у
00:26:06
одного комментария
00:26:07
товаров 1 поэтому здесь товар это папа а
00:26:14
комментарий это ребенок и то есть роль
00:26:16
текущей модели parent роль связанный чай
00:26:20
нормально следить и мы полу классный
00:26:23
пример в общем разберитесь поля связи и
00:26:27
это отдельная фишка кстати она мне там в
00:26:29
лайфхаках в том что саму связь можно
00:26:33
занести кое-какие данные и потом их
00:26:37
использовать например при давлении в
00:26:40
закладки у меня здесь написан
00:26:42
комментарий то есть я такой добавляю в
00:26:44
закладки и дописываю почему его добавляю
00:26:47
вот так кажется вот так вот можно это
00:26:49
довольно прикольная это пользу я
00:26:50
использовал очень часто и очень давно и
00:26:53
поведение при удалении связанной parent
00:26:55
сущности мы до этого дойдём и опишем ну
00:26:58
я расскажу какие есть поведение если
00:27:03
допустим категорию удалили то что станет
00:27:07
с товаром вот здесь вот например этом
00:27:09
примере категорию нельзя удалить
00:27:11
запрещено удалять пока у нее есть
00:27:13
какие-то товары
00:27:17
пример наименование таблицы для связи ну
00:27:19
посмотрите здесь я немножко решил
00:27:20
углубиться и показать как проектировать
00:27:24
базу данных так как я заметил что
00:27:26
менеджеры очень часто рвутся их
00:27:27
проектировать прямо знаете его технику
00:27:29
табличка им говорят что это легко потом
00:27:32
они рисуют такое что я не могу понять
00:27:34
ничего поэтому здесь будет объяснено в
00:27:37
общем пример проектирование
00:27:41
один-ко-многим если вас таблица
00:27:43
пользователи
00:27:44
то в таблице назвать и users с маленькой
00:27:46
буквы даете айдишник вот поспешите не
00:27:51
юзера эдита мне чего-нибудь prime рейде
00:27:53
пишете о еде и название стоп столбик
00:27:57
айди добавить и праймари ключ луиза есть
00:28:04
моим лузера нет тайпу у нас есть такое
00:28:09
соглашение что у любой вещи природе есть
00:28:13
тайтл кроме озеро озеро есть на и вот так
00:28:18
таблица заказы в множественном числе ту
00:28:21
же называете ее с маленькой буквы
00:28:23
ордер добавляйте и такое же поле айди с
00:28:28
праймеры ключом и добавляете ей поле
00:28:31
юзер иди с фрэнки ключом именно в таком
00:28:35
виде то есть в единственном числе с
00:28:37
маленькой буквы с нижнем подчеркивании
00:28:39
юзер земля идей и на этой вешайте форм
00:28:43
ключ дальше какие-то параметры такие
00:28:46
хотите
00:28:49
многие ко многим статьи
00:28:53
опять же с маленькой буквы множеством
00:28:55
числе опять же идиш ник ну тут все
00:28:59
понятно то есть и не зная что изменилось
00:29:02
от пользователя этот тайтл
00:29:03
вместо name и и для того чтобы создать
00:29:08
многие ко многим вам придется сделать
00:29:10
таблицу промежуточную который вы
00:29:13
назовете articles dex
00:29:17
здесь порядок по алфавиту
00:29:20
используйте то есть articles по цвету
00:29:22
идет вначале поэтому она первое также
00:29:25
земля все строго
00:29:27
между словами земля уже таблица 2 поля
00:29:31
арктика о еде и т.д. это не та же тип у
00:29:36
них интеджер
00:29:37
я здесь катит типа не написал но я думаю
00:29:39
что вы понимаете что уедешь ников всех
00:29:41
тип integer
00:29:42
поэтому здесь везде интеджер интеджер
00:29:45
интеджер на всех полях
00:29:47
же жирненьким который выделен вот и у
00:29:51
вас два поля article иди и так иди
00:29:53
причем опять же по алфавиту то есть я
00:29:54
сперва артикула идей потом так иди и еще
00:29:58
вот тут дополнить дополнение такое чтобы
00:30:02
записи в таблице промежуточной не
00:30:06
дублировались нужно повесить ключ
00:30:08
праймари
00:30:09
на пару article текст есть такие парные
00:30:12
ключи
00:30:13
везде поэтому их нужно использовать
00:30:15
чтобы они не дублируют потому что если
00:30:17
про дублируется связь то потом одна из
00:30:23
двух удалиться одна останется и нас
00:30:25
возникнет не консистентной такая
00:30:28
довольно опасная ситуация вот так вот
00:30:30
называете таблицы и программисты будут
00:30:32
вас понимать
00:30:33
а здесь у меня немножечко про ключи
00:30:39
о отлично мы без но мы будем
00:30:42
рассматривать только два ключа быть тоже
00:30:44
рассматриваем первичный ключ и внешний
00:30:49
ключ здесь у меня показано да как ключ и
00:30:54
развесил смотрите на юзер
00:31:00
айди вешается френки на айди вешается
00:31:06
прайма реки в объект таблицах есть про
00:31:08
америке но только в одной есть форике и
00:31:10
вот если будете проектировать то вот
00:31:12
примерно такая картинка у вас должна
00:31:14
получится запомните и
00:31:15
и здесь я хочу уже окончательно
00:31:18
поставить точку на том что ключи нужны
00:31:20
только для ограничений здесь вот
00:31:23
допустим эта стрелка она никак не
00:31:25
связана с ключами
00:31:26
то есть данном количестве давида
00:31:29
исключить ссылается
00:31:30
до
00:31:32
он там что-то видит но для того чтобы
00:31:35
связь работала ключ не нужен ключ нужен
00:31:39
только для ограничений то есть если вы
00:31:42
удаляете
00:31:44
юзера у которого есть заказы вам нужно
00:31:47
что-то сделать с его заказами вот в этом
00:31:50
основная задача всех форм и форм внешних
00:31:55
ключей
00:31:57
да и праймари ключей насколько я помню
00:32:00
тоже и сейчас мы как раз плавно подошли
00:32:03
к основному ограничению которые
00:32:05
используются связи это он делит то есть
00:32:09
если мы удаляем родители в связи
00:32:11
один-ко-многим то у нас есть несколько
00:32:14
вариантов ну допустим мы удаляем ну вот
00:32:19
писатель на месте пользователь
00:32:21
и заказы мы удаляем пользователя и мы не
00:32:25
поняла что нам делать заказами первый
00:32:28
вариант удалить детей всех и тут меня
00:32:31
какие-то жёсткие шуточки
00:32:34
ударяем всех детей пользователя то есть
00:32:39
удаляем все его заказы
00:32:43
ставим на у в его колонку связи то есть
00:32:47
смотрите если мы удаляем пользователя то
00:32:49
у всех заказов столиц
00:32:51
они как бы становятся сиротами у них
00:32:53
нету пользователя еще один способ
00:32:58
restrict то есть запретить удалять
00:33:00
родители если у него есть дети то есть
00:33:03
если у пользователя есть заказы то
00:33:05
система не позволит его удалить пока вы
00:33:08
не удалите заказы это кстати нормальный
00:33:09
способ
00:33:11
сеть дефолт установить дефолтное
00:33:14
значение то есть ну вы удаляете
00:33:19
пользователю кутовой заказы и все его
00:33:21
заказы становятся заказами какого-то ну
00:33:24
там предопределенного пользователя от
00:33:26
админа допустим так тоже бывает но
00:33:30
обычно используется первые три первые
00:33:35
три из поведения
00:33:39
нормализация вот в принципе это довольно
00:33:42
я хотел бы сказать что эта штука
00:33:44
довольно таки важно и потому что если вы
00:33:47
их таза не описывайте то так же как с
00:33:49
дефолтным значением вот помните там
00:33:51
значение по умолчанию сказал что
00:33:53
программе будет долго сидеть и думать
00:33:54
как правильно сделать здесь он тоже он
00:33:57
будет думать он потратит время ему нужно
00:33:59
назвать бизнес-логику ему нужно сильно
00:34:01
сильно напрячь мозг в том месте в
00:34:03
котором это не программирование то есть
00:34:05
ему нужно размотать бизнес-процессы
00:34:07
пусть он делает свою задачу объясните
00:34:10
ему что если мы удалим пользователя то
00:34:13
заказы должны удалиться чтобы он не
00:34:16
думал о насколько важен заказ
00:34:18
а что там дальше с этими заказами как и
00:34:19
кто обрабатывает
00:34:21
короче вот эту штуку нужно покрыть это
00:34:23
ваша задача не задача программиста
00:34:26
никогда не видел чтобы это описывали
00:34:28
нормально втз
00:34:29
вот только у нас то писать нормализация
00:34:34
ну есть три формы нормализации есть у
00:34:37
нас статья методичка про это но
00:34:40
естественно то я не помню что как они
00:34:43
звучат смысл только в том чтобы не
00:34:45
делать неправильно например в этой
00:34:49
таблице
00:34:50
что неправильно но я думаю что вы видите
00:34:53
что у нас через запятую идут несколько
00:34:55
значений и баз данных как не работают
00:34:58
поэтому нужно вынести список моделей для
00:35:03
бмв в отдельную таблицу здесь мне не
00:35:05
показаны но видно что есть ошибка здесь
00:35:10
подумайте пару секунд что не так
00:35:18
смотрите я объясню
00:35:21
в правом самом поле есть поле скидка
00:35:23
которая зависит скорее всего от фирмы на
00:35:27
бмв 5 процентов а не на nissan 10
00:35:29
процентов у нас здесь получается на и не
00:35:33
помню какое слово честно но неправильно
00:35:36
база данных потому что скидка зависит
00:35:39
как бы нет нет основного поля которые
00:35:42
там модели от какого-то побочного ее
00:35:45
можно вынести то есть можно добавить еще справочник
00:35:48
отдельный в котором будет фирмы и скидка
00:35:50
и там будет всего два две записи бмв 5
00:35:54
процентов и nissan 10 процентов и но в
00:35:57
итоге не будет дублирования и излишних
00:36:01
связанности здесь в принципе пример
00:36:03
похожее я думаю что вы можете увидеть в
00:36:07
чем здесь фишка у магазина
00:36:11
реалавто один номер lunex тафта другой
00:36:14
номер хотя у нас тут какой-то список
00:36:16
моделей
00:36:17
то есть это должно быть ну либо списка
00:36:19
моделей либо списком магазинов даже
00:36:21
выглядит как-то странно вообще какие в
00:36:24
первом варианте тоже странно то есть
00:36:26
чего это таблица вы должны задавать
00:36:28
вопросы про что это этом список моделей
00:36:31
так почему идут какие-то телефоны
00:36:32
телефон это магазинная сущность ну вот я
00:36:38
думаю что вы сможете почитать
00:36:39
поподробнее про первые три формы на
00:36:42
формулировке я не запомнил я просто
00:36:43
заполнил
00:36:44
неправильный вариант 3 как и раскидывать
00:36:47
лайфхаки ну смотрите в нашем фреймворке
00:36:52
laravel по умолчанию генерируются поля
00:36:55
created it и
00:36:56
апдейт id id на программисты их не
00:36:58
всегда выводит и ну я думаю что в
00:37:01
оставив разборках тоже дату создания
00:37:04
записи и дату и и редактирования можно
00:37:06
получить возможно где-то под капотом
00:37:09
есть ее не нужно там придумать описывать
00:37:11
то есть она уже как будет заложено
00:37:12
это простая вещь мы даже их не описываем
00:37:16
просто договорились что они всегда есть
00:37:17
мы можем их вывести когда это
00:37:20
понадобится
00:37:21
морфы
00:37:24
тоже фишка фреймворка воровал
00:37:25
довольно-таки крутая вещь морфы это
00:37:30
такие связи в которых не две модели
00:37:33
связаны друг с другом например одна
00:37:37
модель и
00:37:38
но любая другая модель из списка это
00:37:42
удобно когда мы хотим сделать сайт на
00:37:45
который будут статьи новости товары и
00:37:48
хотим делать комментарии ко всем этим
00:37:50
сущности статья новостям товаром мы
00:37:54
можем сделать связь морф ну там
00:37:58
называется морф во
00:38:00
один-ко-многим морф многие ко многим и в
00:38:05
этой связи мы будем указывать допустим у
00:38:10
нас есть комментарий для него мы пишем
00:38:13
что он связан с статьей а у статьи
00:38:17
такой-то номер или что он связан с таким
00:38:19
то товар а у товара такой-то номер так
00:38:22
вот здесь вот это вот
00:38:23
морф означает что мы указываем статья
00:38:27
или товар это
00:38:28
то есть у нас раньше указывался какой-то
00:38:30
номер статьи допустим но сейчас мы можем
00:38:33
взять и вместо такие привязать его к
00:38:35
другому справочник данная сядет ну я там
00:38:41
где-то затравил что саму связь можно
00:38:43
положить что-то полезное и это довольно
00:38:46
прикольно я там показал пример то есть
00:38:50
не забывайте про это иногда сильно
00:38:53
упрощается вся история если просто
00:38:56
положить данные в связь а иногда не так
00:38:58
как был усложняет ее но я думаю что вы
00:39:01
понимаете по смыслу что относится к
00:39:04
связи я что относится к другой вещи то
00:39:06
есть всяко разно по задавать все вопросы
00:39:07
и я думаю что вы поймете это логическая
00:39:12
вещь опять же доступны менеджером без
00:39:16
программистов она как раз мы пошли по
00:39:20
программистом украине став есть
00:39:22
несколько инструментов в framework of
00:39:24
для работы с
00:39:25
базами данных мер миграции миграции это
00:39:31
они формируют структуру базы данных
00:39:34
они создают таблицы создают столбики там
00:39:38
изучают и всякие свойства ключи и помада
00:39:41
же индексы да и лекси тоже можно через
00:39:44
миграции это очень удобна тем что
00:39:48
миграция лежат под контролем версии и
00:39:52
под бетон видно кто и когда менял и ну
00:39:57
как без миграции все равно бы не работал
00:39:59
можно конечно ходить на продакшен когда
00:40:01
вы заливаете там изменения и там
00:40:03
рубчиками добавлять нам столбик но это
00:40:06
очень очень очень небезопасно вот ну и
00:40:09
все равно xy без миграциями довольно
00:40:11
сложно даже притом что они есть но sql
00:40:14
базы данных в этом x-plane проще вам мы
00:40:16
живем с миграции синды это чисто воровал
00:40:20
тема которая умеет создавать тестовое
00:40:24
наполнение для базы данных например
00:40:27
когда в разработчика разворачивает и
00:40:29
локальную он заполняет и сюда видами
00:40:31
или ну там на тестовом стенде заполняет
00:40:34
ее видами
00:40:35
тестами данными или и там при авто
00:40:38
тестах когда прогоняются тоже использует
00:40:40
сиды вот есть такой термин запомните это
00:40:43
тоже себе это тоже файлы ну и дамп базы
00:40:45
данных это тоже файл в которой
00:40:49
экспортируется баз данных есть вы можете
00:40:51
экспортировать базу
00:40:53
будет ждать вас там небольшой фалик или
00:40:56
большой который вы можете потом залить в
00:40:58
другую базу и перенести ну перевести
00:41:00
данные
00:41:02
вот по-моему на этом все спасибо за
00:41:05
внимание
00:41:06
я думаю что в наше время где то выложу
00:41:09
информацию по крайне мере точно выложим
00:41:11
презентацию буду рад вопросам
00:41:15
подписывайтесь у меня еще на очереди
00:41:17
несколько видео для проджект менеджеров
00:41:19
на темы как писать эссе на темы
00:41:26
как аудирование ты и и так далее поэтому
00:41:31
спасибо за внимание подписывайтесь до
00:41:34
новых встреч

Описание:

Презентация https://flagsoft.ru/content/db/ 00:55 — Содержание 01:59 — БД и СУБД. MySQL vs PostgreSQL 03:58 — Состав БД. Индексы, транзакции, триггеры на пальцах 07:10 — SQL vs NoSQL 11:40 — Типы данных в админке Nova 14:15 — Поле JSON. NoSQL внутри SQL СУБД 15:27 — Как описывать поля в ТЗ 17:31 — Типы связей 19:55 — Связь, строка или JSON? Выбираем тип поля 24:00 — Как описывать связи в ТЗ 27:17 — Как проектировать связи в БД 30:34 — Ключи Primary и Foreign 32:00 — Важное ограничение OnDelete 34:30 — Нормализация 36:48 — Лайфхаки 39:18 — Миграции, сиды, дампы Изучайте Git на практике: https://gogit.ru/ Наш канал в Телеграм: https://t.me/flagstudio ВК: https://vk.com/flagstudio Instagram: https://www.facebook.com/unsupportedbrowser

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Базы данных за 42 минуты. Теория"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Базы данных за 42 минуты. Теория" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Базы данных за 42 минуты. Теория"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Базы данных за 42 минуты. Теория" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Базы данных за 42 минуты. Теория"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Базы данных за 42 минуты. Теория"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.