Найти в Дзене
Как установить PostgreSQL в Docker - Изучаем SQL с нуля на примере PostgreSQL
Вы можете скачать и установить PostgreSQL непосредственно на рабочий компьютер, но СУБД - это довольно громоздкая штука, она будет загружаться вместе с системой (отключить нельзя) и забирать некоторые ресурсы (память и процессор). Кроме того, у вас не будет возможности делать промежуточные сохранения образа на случай, если ваши эксперименты что-то сломают. Поэтому предлагается использовать PostgreSQL, находящийся в контейнере Docker. Собственно, Docker - это специальная штука, придуманная для того, чтобы помещать любые приложения в контейнеры...
1 день назад
Изучаем SQL с нуля на примере PostgreSQL - Оглавление
Что такое SQL, DDL, DML? - https://dzen.ru/a/aiV-VCcyNjs4hmHW Как установить PostgreSQL в Docker - https://dzen.ru/a/aj08LBV-_GN7jzvT?share_to=link Создание и редактирование таблиц. Первичные ключи и ограничения NOT NULL - ... Индексы - ... Что такое внешние ключи - ... (индексы для внешних ключей) Нормализация базы данных - ... SELECT - ... Соединение таблиц, виды JOIN, алиасы - ... ORDER BY, SKIP, TAKE и пагинация - ... (пример с random(). Что будет, если забыть ORDER BY) Подзапросы, IN, EXISTS - ... (подзапросы в SELECT и в JOIN, равно, NOT IN, NOT EXISTS; обязательное количество столбцов и строк) Агрегатные функции, GROUP BY, HAVING - ...
2 недели назад
Изучаем SQL с нуля на примере PostgreSQL - Что такое SQL, DDL, DML?
SQL - Simple Query Language - "простой язык запросов". Он позволяет обращаться к данным, которые хранятся в базе данных - получать их оттуда, сохранять, изменять, удалять. БД - "база данных". Это что-то вроде нескольких файликов на диске, в которых особым образом хранятся данные. СУБД - "система управления базами данных". В чём разница между БД и СУБД? Как Word позволяет редактировать файлы, лежащие на диске, так и СУБД позволяет работать с данными, лежащими в базе данных. Именно СУБД принимает запросы и выдаёт данные в ответ...
2 недели назад
Изучаем C# - Деревья и рекурсия (часть 3)
Часть 1: Часть 2: Пусть мы хотим найти все организации в дереве, которые удовлетворяют определённому условию. Подумаем, каким будет метод поиска. Во-первых, он будет принимать на вход корневую организацию и условие поиска. Условие может быть любым куском кода, то есть, это будет функция. Функция условия должна принимать на вход организацию, которую мы хотим проверить, и выдавать в ответ логическое значение true/false. Таким образом, функция условия будет иметь тип данных Func<Organization, bool>...
2 месяца назад
Изучаем C# - Деревья и рекурсия (часть 2)
В прошлой статье мы изучили, как выглядят деревья в программировании и как обойти дерево. Для задания дерева достаточно в каждом узле дерева хранить либо список дочерних объектов, либо ссылку на родительский. Если есть что-то одно, то можно найти и второе. У нас уже есть класс Organization (организация), и каждая организация содержит в себе список дочерних Childes: Также у организации есть Id родительской - ParentId. Сейчас он не используется и потому горит серым. Из прошлой статьи у нас также остался пример организаций и код для обхода дерева в OrganizationTreeWalker...
2 месяца назад
Изучаем C# - Деревья и рекурсия (часть 1)
В программировании часто возникают древовидные структуры данных, так что нужно уметь с ними работать. Например, организации и подразделения - одна организация может содержать несколько дочерних организаций и подразделений, те в свою очередь могут содержать ещё дочерние организации и так далее: Каждая организация хранит в себе список дочерних организаций или ссылку на родительскую - таким образом, во всех задачах, где объект должен хранить список дочерних объектов или ссылку на родительский объект возникает дерево...
2 месяца назад
Изучаем C# - Пример ООП (часть 4)
Предыдущие статьи: В прошлой статье мы сделали CRUD-сервисы для работы с сущностями Person (человек) и DisabilitySheet (больничный). Теперь надо сделать CRUD-сервисы для AppointmentOrder (приказ о назначении) и HolidayOrder (приказ об отпуске). Поскольку у этих двух сущностей есть общие поля, мы создали для них общий базовый класс BaseOrder (базовый приказ). Поскольку иерархия CRUD-сервисов повторяет иерархию сущностей, то мы должны сначала сделать сервис для BaseOrder и уже потом - для этих двух сущностей...
3 месяца назад
Изучаем C# - Пример ООП (часть 3)
Часть 1: Часть 2: Сейчас будет трудная тема, но зато она активно используется на практике. Итак, мы имеем сервис для людей - PersonService. Нам также надо создать сервисы для каждой нашей сущности: AppointmentOrderService, HolidayOrderService, DisabilitySheetService. Однако, если мы начнём их создавать, то увидим, что они похожи друг на друга. Много кода дублируется. А дублирование кода - это плохо, потому что его надо будет поддерживать: со временем придётся делать какой-то новый функционал, что-то менять, и придётся менять каждый сервис по отдельности, что долго и неудобно...
3 месяца назад
Изучаем C# - Пример ООП (часть 2)
Ранее мы начали делать большой пример объектно-ориентированного программирования: Теперь допишем его. Сделаем в нашем PersonService методы Create / Read / Update / Delete ("Создать / Считать / Обновить / Удалить"). Начнём по порядку с Create(): Поскольку метод Create должен создавать человека, он получает его на вход. Мы сначала проверяем, не существует ли уже этот человек, по Id. Если такого человека нет, то метод Persons.FirstOrDefault() вернёт null и мы зайдём в if, где будет кинуто исключение...
3 месяца назад
Изучаем C# - Пример ООП (часть 1)
Мы завершаем изучение объектно-ориентированного программирования, и теперь нам нужен хороший пример, на котором можно было бы всё это повторить. Пусть мы хотим сделать систему для веб-приложения, работающего с электронными документами. Это большая и сложная задача, но зато она приближена к тому, что делают в реальной жизни. Электронные документы каждого вида можно создавать (Create), читать (Read), обновлять (Update) и удалять (Delete). Подобные системы называются CRUD - по первым буквам действий...
3 месяца назад
Изучаем C# - Универсальные (обобщённые) типы
Пусть у нас есть несколько классов животных: базовое животное BaseAnimal, черепаха Turtle, собака Dog. Если вы не создали их в предыдущих статьях, ничего страшного - просто создайте пустые классы. Черепаха и собака наследуются от базового животного. Пусть мы хотим сделать коробки для животных. Коробка - это такой класс, который должен работать так: То есть, при создании коробки черепаха помещается внутрь, а при вызове метода Get() выдаётся наружу. Реализация коробки проста: Получив черепаху на вход конструктора, коробка запоминает её в приватном поле, чтобы затем выдать наружу...
3 месяца назад
Изучаем C# - Методы расширения
Некоторые классы в C# мы не можем изменить. Например, это классы из разных библиотек. Чтобы изменить их, нужно было бы влезть внутрь библиотеки и отредактировать её, что невозможно. Но бывает, что нам хочется добавить в такие классы новый метод. Решение проблемы есть - написать метод расширения. Метод расширения - это метод, который написан вне класса, но может применяться так же, как обычный метод - объект.Метод() Чтобы сделать метод расширения, нужно соблюсти ряд условий: Пусть даны два списка из строк...
3 месяца назад