Курсы программирования с нуля

Формула программиста
основатель — Волосатов Евгений Витольдович

Базы данных - Управление отелем

Практическое знакомство с базами данных на примере создания программы «Hotel - управление комнатами и клиентами» - планирование и проектирование базы данных, проектирование интерфейса и создание полноценного программного продукта, с использованием базы данных MySQL и MS-SQL.



5,000 руб.


Для подписки на пакет необходимо авторизоваться.

Список уроков | фото | видео

# Название видеоурока Решило Рейтинг Доступ
1 Вступление 00:08:49 48 чел. ★ 4.9 Done
  Отчёт отправил: 2773. Никита Решено за 10 мин. [Показать отчёт]
Научился: Планирование БД 
Сложности: Ничего сложного 
Комментарии: Немного накидал сущности БД с атрибутами. 
2 Таблицы клиентов и заказов 00:25:03 46 чел. ★ 4.9 Done
  Отчёт отправил: 2773. Никита Решено за 15 мин. [Показать отчёт]
Научился: Проектировать БД, выделять основные атрибуты в сущностях. 
Сложности: Ничего сложного. 
Комментарии: На мой взгляд, в таблице клиент указаны все основные атрибуты. Можно добавить пол клиента (это больше для статистики подойдет, например, кто чаще бронирует номера - мужчины или женщины), дату рождения клиента. Если же брать таблицу заявок (book), то конечно можно было бы ввести дополнительное поле - валюта, но я соглашусь с Евгением Витольдовичем, что потом появится масса проблем. Пожелания в графу info заносить, по возможности стараться их реализовать, чтобы клиент был доволен. Можно ввести дополнительное поле, которое будет характеризовать как клиент (тогда таблица клиент уже) будет добираться до отеля (сам лично или прислать машину). 
3 Таблицы комнат и дней 00:22:47 44 чел. ★ 4.9 Done
  Отчёт отправил: 2773. Никита Решено за 30 мин. [Показать отчёт]
Научился: Проектировать сущности БД. 
Сложности: Ничего сложного. 
Комментарии: Таблица Room: Я бы добавил бы еще тип комнаты (люкс, эконом и т.п.), количество комнат в номере. Таблица Calendar: Пока не совсем ясно, зачем нужна эта таблица, как она будет работать в связке с остальными таблицами, по ходу дела увижу. Может быть добавить количество дней в году или поле булевского типа, которое будет отвечать за год - високосный он или нет. Таблица Map: Опять же добавить поле info, куда можно писать дополнительную информацию (как примечание). А больше, что добавить, даже не знаю. 
4 Создание базы в MS Access 00:26:28 40 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 30 мин. [Показать отчёт]
Научился: Пока ничего нового 
Сложности: Ничего сложного. 
Комментарии: Я давно делал эти таблицы в Access'е. Количество таблиц даже больше было) Вот этот и рисунок прикладываю. 
5 Установка сервера MySQL 00:08:39 21 чел. ★ 4.9 Done
  Отчёт отправил: 2773. Никита Решено за 10 мин. [Показать отчёт]
Научился: Ничего нового. 
Сложности: Установить сервер. 
Комментарии: Я вчера весь день промучился с установкой этого сервера. Я несильно разбираюсь в этих серверах. У меня был установлен MSSQLServer, но когда я запускал командную строку, мне выдавало ошибку, что сервер уже используется в настоящее время. Тогда я решил установить еще один сервер от PHP. Так у меня вчера и не вышло. А сегодня решил заново все установить, старое удалил и о, чудо!, все заработало. Жаль, что я увидел это видео после того как я уже со всем разобрался. Но думаю данный урок будет полезен новичкам вроде меня) 
6 SQL запросы для создания Базы 00:24:00 39 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 30 мин. [Показать отчёт]
Научился: Создавать БД, используя консоль. 
Сложности: Ничего сложного, главное внимательно следить за синтаксисом. 
Комментарии: Отличный урок. Показаны и объяснены основные моменты создания базы данных и таблиц. Может кому интересно, почему при показе таблицы у поля типа int в скобках выводится число 11 (см. 1 рисунок). Это число означает ширину поля для отображения числа. Подсчитали, что 11 знакомест будет достаточно, чтобы поместилось любое число int'ового типа без обрезки (а занимает тип int в памяти 4 байта). Довольно интересный момент (см. 2 рисунок). Когда создавали таблицу Map, указываем для полей room_id, book_id и calendar_id, что они являются ключом, следовательно, нулевые значения в них не допускаются (столбец NULL на рисунке, все верно). Тогда получается, что эти поля должны инициироваться какими-то начальными ненулевыми значениями, но если посмотреть последний столбец на рисунке (столбец Default), то ничего такого не увидим. Довольно странно. И еще хочу добавить, я помню, когда Евгений Витольдович проводил вебинары по видеокурсу "Книжка оценок". В нем очень подробно рассказывались SQL-команды. К примеру, как добавить в таблицу данные, потом как их отсортировать. Непросто название команды, а еще были продемонстрированы модификации этих команд. Очень полезный урок) 
7 Модель. Планирование. 00:04:53 39 чел. ★ 4.7 Done
  Отчёт отправил: 2773. Никита Решено за 20 мин. [Показать отчёт]
Научился: Планировать задачи, решаемые в БД. 
Сложности: Ничего сложного. 
Комментарии: Задачи, решаемые БД: 1) Регистрация клиентов 2) Изменение данных клиента 3) Удаление клиента 4) Получение информации обо всех клиентов 5) Добавление новой комнаты 6) Редактирование статуса комнаты 7) Получение информации обо всех комнатах 8) Добавление данных в календарь 9) Установка праздничных, выходных и рабочих дней 10) Редактирование данных в календаре 11) Получение информации на текущий год 12) Создание новой записи о регистрации 13) Изменение записи (статуса) о регистрации 14) Получение информации обо всех записях регистрации 15) Добавление новой записи в таблицу Map (map - распределение комнат по заявкам) 16) Редактирование записи в таблице Map 17) Удаление записи из таблицы Map 18) Получение всех записей таблицы Map Может добавить еще какие-нибудь отдельные функции. Например, поиск клиентов по заданному параметру (по фамилии, к примеру). 
8 Модель. Список задач. 00:23:02 37 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 1 час. 20 мин. [Показать отчёт]
Научился: Писать SQL-запросы самостоятельно без помощи визуального редактора. 
Сложности: Ничего сложного, базовые простенькие запросы я вполне могу написать. 
Комментарии: Все хорошо : ) 
9 Модель. SQL запросы для Client 00:20:17 36 чел. ★ 4.8 Done
  Отчёт отправил: 2773. Никита Решено за 1 час. 20 мин. [Показать отчёт]
Научился: Писать ручками запросы SQL. 
Сложности: Ничего сложного. 
Комментарии: Отличный урок, все объяснено. Даже хорошо, что возникают ошибки и что очень замечательно Евгений Витольдович объясняет эти ошибки и показывает как их исправить. 
10 Модель. SQL запросы для Room 00:12:04 36 чел. ★ 4.9 Done
  Отчёт отправил: 2773. Никита Решено за 40 мин. [Показать отчёт]
Научился: Еще раз попрактиковался в написании SQL-запросов. 
Сложности: Ничего сложного. 
Комментарии: Отличный видеоурок. Все запросы работают, все понятно. 
11 Модель. SQL запросы для Book и Map 00:26:03 36 чел. ★ 4.8 Done
  Отчёт отправил: 2773. Никита Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Закрепил свои знания по написанию SQL-запросов. 
Сложности: Ничего сложного. 
Комментарии: Я до этого работал в SQl-Server'e MySQLServer и мне приходилось писать запросы к базе данным. Но я это делал через создание визуальный редактор: просто перетаскивал нужные мне таблицы в поле программы, ставил галочки напротив нужных мне пунктов (например, в поле "Фильтр" указывал для фамилии "Иванов"), а потом выбирал вкладку Sql и оттуда брал готовый запрос и вставлял в SQL-функцию. То есть я делал все визуально, примерно понимал что откуда. А когда делаешь все сам, то есть прописываешь ручками лучше идет понимание. Но снова нужна хоть какая-то элементарная база знаний SQL-запросов. В общем, мне очень понравилось в такой манере писать SQL-запросы. И к тому же, лично я считаю это большим плюсом, что мы заранее определили список действий, которые должна выполнять наша база данных. Так намного проще, а не потом, во время написания кода программы, сидишь и думаешь какой же тебе запрос нужно сделать. К тому же мы выполняли каждый запрос в консольном режиме (я первый раз поработал с консолью для создания БД) и видели результат и при необходимости исправляли наш запрос. В общем, я доволен!) 
12 Модель. Имена методов. 00:26:12 34 чел. ★ 4.9 Done
  Отчёт отправил: 2773. Никита Решено за 30 мин. [Показать отчёт]
Научился: Поразмыслил над именами методов для SQL-запросов. 
Сложности: Ничего сложного. 
Комментарии: Жаль конечно, что убрали запрос для перемещения комнаты по списку вверх-вниз, хотя кто знает, может потом все-таки добавим. 
13 Класс MySQL. Драйвер и конструктор. 00:28:30 34 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Прописывать вручную строку для подключения к БД. 
Сложности: Ничего сложного. 
Комментарии: Отличный урок, все понятно. По поводу нижнего регистра кодировки utf8, я не знаю почему в верхнем регистре не работает. Но я нашел заметку, хочу процитировать: "Note! Use lower case value utf8 and not upper case UTF8 as this will fail.". Тут говорится, что нужно писать кодировку в нижнем регистре, иначе будет ошибка. Что у нас и было в первом случае. У меня все заработало! Я очень рад! 
14 Класс MySQL. Получение таблицы. 00:23:55 34 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 40 мин. [Показать отчёт]
Научился: Создавать SQL-запросы для добавления/удаления и изменения записей в БД. 
Сложности: Ничего сложного. 
Комментарии: Отличный урок. Все получилось добавить с первого раза. Ведь у нас уже были заготовлены заранее SQL-команды, просто копируем их и вставляем в программу.  
15 Класс MySQL. Обработка ошибок. 00:13:22 34 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 40 мин. [Показать отчёт]
Научился: Делать БД более устойчивой к ошибкам. 
Сложности: Ничего сложного. 
Комментарии: Очень хорошее нововведение, Евгений Витольдович, использовать метод для обработки возможных ситуаций при работе с базой данных. Я помню еще в видеокурсе "Книжка оценок" Вы показывали этот прием. Здорово получается. 
16 Модульный тест 00:16:02 33 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 40 мин. [Показать отчёт]
Научился: Создавать модульные тесты. 
Сложности: Не очень понял как работать с исключениями. 
Комментарии: Начальные знания по работе с модульными тестами получил. Не понял как работать с исключениями. Я примерно представляю как работать с этими тестами, но лучше было бы на конкретном примере с нашей базой данных. Я пробовал сам создавать методы для проверки работоспособности нашей БД, что-то получилось (результат можно видеть на рисунке). 
17 Отображение таблицы 00:06:18 33 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 40 мин. [Показать отчёт]
Научился: Ничего нового для меня не было, так как визуальное отображение я сделал еще 5 уроков назад - в самом начале создания программы, когда писали запросы. 
Сложности: Ничего сложного. 
Комментарии: Я немного поизголялся. У меня выводится список всех таблиц в базе данных. Потом я могу выбрать любую таблицу и просмотреть ее содержимое, а при необходимости добавить запись. Пока последний пункт не стал реализовывать, так как у каждой таблицы свои поля (количество полей разное и тип данных и т.п.), долго сидеть придется. Да и в этом уроке этого делать не надо) В общем, результаты моих "изголений" :) можно увидеть на рисунках) 
18 Модель. Класс Клиента 00:24:57 32 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Реализовывать подготовленные методы. Писать SQL-команды. 
Сложности: Ничего сложного. Все просто. 
Комментарии: На первом скриншоте показана БД "Клиенты" до нажатия кнопки "Добавить нового клиента", а на втором скриншоте - после нажатия кнопки. Все успешно добавляется. Наконец-то мы начали реализовать в программе наши SQL-команды, ура!) 
19 Модель. Всё про Клиента 00:35:00 31 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 50 мин. [Показать отчёт]
Научился: Реализовывать запросы через методы для таблицы Клиент. 
Сложности: Ничего сложного. 
Комментарии: Очень понравился урок. Очень хорошо, что мы заранее написали все эти SQL-запросы, а теперь просто их вставляем в программу, немного корректируем и у нас уже все работает. Очень хорошая идея с XML-комментированием методов. Вы как-то, Евгений Витольдович, показывали на вебинаре эти фишки, когда делаем пометки к методам. Но вот по поводу returns чего-то у меня пока не получилось найти, где IntelliSense пишет, что возвращается. Может кто знает и подскажет? Буду премного благодарен. А вообще, потом как-нибудь нечаянно наткнусь) Такое часто случается. Что-то не знаешь как сделать, а потом "оп" и где-нибудь встретишь эту реализацию. 
20 Модель - Календарный год 00:29:48 27 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 50 мин. [Показать отчёт]
Научился: Продолжаем создавать методы для таблиц и создаем тесты) 
Сложности: Ничего сложного. Все понятно) 
Комментарии: Я помог своему брату установить язык C#, показал ему основные компоненты ( я про Windows Forms), основные действия объяснил. Теперь он сидит играется. Очень хорошо, что создали тест. Еще раз попрактиковался в создании тестов, теперь лучше понимаю, как их вообще создавать, как тестировать написанные методы. Очень хорошая идея Ильшата - это создание пользовательского конструктора, где мы могли бы прописать наше подключение к серверу. Отличный урок. К тому же уроки по 20-25 минут смотрятся очень легко и всегда имеют логическое завершение. На первом рисунке представлены тесты, что все они успешно пройдены. На втором рисунке представлены результаты запроса - количество записей в БД на определенный год, в данном случае на 1924 год. По мере прохождения последнего теста (он длится продолжительное время, так как добавляются записи в БД), я делал запросы к БД. Можно увидеть, что количество записей постепенно увеличивается, а последний результат выдал 0 записей - это сработал SQL-запрос на удаление всех записей на 1924 год. 
21 Модель - Календарные праздники 00:20:00 25 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 40 мин. [Показать отчёт]
Научился: Создавать тесты для проверки работоспособности программы. 
Сложности: Ничего сложного. Все отлично) 
Комментарии: Все-таки создание тестов это отличный вариант для проверки правильности работы программы. Мы с кнопками работать умеем, а с тестами не очень (я про себя). Очень интересный урок. Ура! Мы закончили с моделью "Календарь", переходим к следующей) 
22 Модель. Класс комнаты 00:16:39 25 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 40 мин. [Показать отчёт]
Научился: Работать с моделью комнаты)  
Сложности: Ничего сложного. 
Комментарии: Отличный видеоурок. Так как заготовки у нас есть и тем более мы ранее писали класс "Клиент", то можно часть методов взять оттуда и немного модифицировать.  
23 Модель. Удаление комнат. 00:14:41 24 чел. ★ 4.8 Done
  Отчёт отправил: 2773. Никита Решено за 10 мин. [Показать отчёт]
Научился: Доработал класс Room. 
Сложности: Ничего сложного. 
Комментарии: Все отлично!) 
24 Модель. Тестирование комнат. 00:30:31 22 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 1 час. 20 мин. [Показать отчёт]
Научился: Создавать модульные тесты. 
Сложности: Сделать, чтобы все тесты корректно отрабатывали. 
Комментарии: Все нормально. У меня получилось разбить метод для тестирования таблицы "Room" на отдельные составляющие - методы. И все благополучно работает. 
25 Модель. Бронирование. 00:29:40 22 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 1 час. 20 мин. [Показать отчёт]
Научился: Создавать класс Book (регистрация клиентов). Реализовывать в нем SQL-запросы. 
Сложности: Ничего сложного. 
Комментарии: Я ошибся в названии полей и долго не мог понять, почему не работает метод SelectBook(long bookId), потом разобрался наконец-то. И еще при вызове этого метода нужно в запросе указать в списке возвращаемых полей поле Id, то есть "SELECT id, client_id, book_date, from_day, till_day, adults, childs, status, info FROM Book WHERE id = 'число';". А то у меня выдавало ошибку при тестировании этого запроса. Писало, что такого поля (id) в таблице нет. Я иногда медитирую. Сейчас пока медитировать не буду, еще не устал) 
26 Модель. Статусы заказов. 00:14:52 21 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 50 мин. [Показать отчёт]
Научился: Еще ближе на 1 шаг продвинулся по созданию проекта. 
Сложности: Ничего сложного. 
Комментарии: Я добавил перечисление "Статусы", не знаю пригодится или нет. Но решил так поступить, потом, если что уберу.  
27 Модель. Список заказов. 00:13:17 20 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 20 мин. [Показать отчёт]
Научился: Дополнили таблицу "Book" SQL-запросами и протестировали их. 
Сложности: Ничего сложного, все понятно.  
Комментарии: Отличный урок. 
28 Модель. Карта отеля 1 00:22:41 19 чел. ★ 5 Done
  Отчёт отправил: 2773. Никита Решено за 40 мин. [Показать отчёт]
Научился: Продолжаем дальше реализовать SQL-запросы в классах) 
Сложности: Ничего сложного. 
Комментарии: Отличный урок) Я добавил в класс MySQL метод DateToString и изменил в остальных классах методы, где мы конвертировали поле в дату, теперь вызывается функция из класса) 
29 Модель. Карта отеля 2 00:18:56 19 чел. ★ 4.9 Done
  Отчёт отправил: 2773. Никита Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Дорабатывать классы. 
Сложности: Ничего сложного. 
Комментарии: Метод DateToString() я добавил в класс MySQL еще в тот раз и переделал вызов функций. Так что на этот раз пришлось только дописать метод SelectMap. 
30 Модель. Карта отеля 3 00:16:56 19 чел. ★ 4.9 Done
  Отчёт отправил: 2773. Никита Решено за 30 мин. [Показать отчёт]
Научился: Ничего нового не было, просто доделали методы в классе Map)) 
Сложности: Все просто и легко. Все понятно. 
Комментарии: Отлично, мы наконец-то завершили работу с SQL-запросами, с нашими моделями. Очень хорошо получилось, потому что было очень наглядно и все подробно объяснено, последовательно и заранее продумано. Теперь перейдем к созданию визуальной части приложения. Ура) 
31 Вид. Список форм. 00:12:00 9 чел. ★ 5 Open
  Итого:   31 видеоурок общей продолжительностью 10 час. 16 мин. 7 чел. ★ 4.95  
  Финалисты:   Денис,   Иван,   Николай (nick27m),   Валентин,   Lik_Kirill,   Frank,   Rita .

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Новый класс + тесты
Трудности: Все понятно
Замечаний нет
Научился: Рисовать формы на бумаге
Трудности: ничего
СПАСИБО ЗА УРОК Жду продолжения