Базы данных и My Visual Database. Давайте представим, что вы ведете учет чеголибо в обычной Excel таблице, как показано на рисунке 1
Скачать 3.69 Mb.
|
1. Введение. 1.1 Введение. Давайте представим, что вы ведете учет чего-либо в обычной Excel таблице, как показано на рисунке 1. Рис.1 И казалось бы, этого вполне достаточно, для полноценного учета. Но, к сожалению, такой подход имеет ряд проблем, которые мы сейчас разберем. Допустим, вы предприниматель, предоставляющий строительную технику в аренду другим компаниям и ведете учет в простой табличке, как уже было показано на рис.1 Проблема 1. В первую очередь обратите внимание, что произойдет, если у какой-либо компании изменится номер телефона? Допустим, что компания "KH Services" изменила телефон на 7 495 555-65-65. Чтобы содержать таблицу актуальной, необходимо сделать изменения в трех строках (а если их уже 500?). Если мы не сделаем этого, наши данные будут противоречивыми, впоследствии мы не сможем определить, какой из телефонных номеров является актуальным. Проблема 2. Мы можем сделать опечатку в названии компании и случайно записать KJ Service вместо KH Service. Впоследствии будет не ясно, либо это новый клиент, либо была сделана опечатка. Такая ошибка не могла бы возникнуть, если бы мы выбирали компанию из списка. Проблема 3. У вас не получиться вести учет совместно c несколькими людьми. Например, вашему бухгалтеру необходим учет счетов и платежей, а сотрудники отдела проката хотят вести учет заказов и встреч с клиентами, но например бухгалтерия не хотела бы, чтобы сотрудники отдела проката имели доступ к данным о платежах. Более серьезные проблемы начинаются, когда приходит время проанализировать накопившиеся данные, например: - подсчитать доход за необходимый промежуток времени. - подсчитать количество арендованной техники определенной фирмой. - узнать какая техника в настоящий момент свободна и т.д. И когда в вашей таблице накопится много информации, подобные проблемы обязательно возникнут, а также и другие в зависимости от специфики вашей учетной деятельности. 1.2 База данных Теперь, когда нам ясны проблемы ведения учета в одной таблице, разберемся, как же организовать все правильно. Для полноценного ведения учета необходимо использовать так называемую «Базу данных». Что такое база данных? Вы можете представить ее себе как несколько Excel таблиц, которые связаны между собой особым образом. Также каждая таблица создается, под конкретную сущность, но об этом более подробно в следующей главе. 1.3 Выявление сущностей Как вы видите, в таблице на рис.1, все свалено в кучу, все сущности, такие как: - клиент (столбец: "Имя клиента", "Телефон") - арендуемая техника (столбец: "Название техники", "Цена за день") - прокат (столбец: "Дата начала", "Дата конца", "Стоимость") ВАЖНО! Перечисленные выше сущности являются самостоятельными и каждая такая сущность должна иметь свою собственную таблицу. Этот процесс также называется нормализацией. Как результат, вместо одной таблицы, у нас будет 3, как показано на рис.2 Рис.2 Таблица Client – содержит всех наших клиентов и их телефонные номера. Таблица Equipment – содержит наименования техники, которой мы располагаем, а также ее стоимость за 1 день аренды. Таблица Rent – содержит информацию о сроках арендованной техники. Теперь описанные выше проблемы в главе 1.1 решены: 1. Когда у компании сменится телефонный номер, его нужно будет изменить только в одной строке, в таблице с именем Сlient 2. Нет необходимости каждый раз вручную писать название компании, избежав, таким образом опечатки. Мы просто выберем необходимую компанию из списка. 3. Разные пользователи базы данных могут иметь доступ только к определенным таблицам, например только менеджер может добавить новую компанию в качестве клиента в таблицу Сlient Сущность - это важная вещь или объект, сведения о котором нужно сохранить. 1.4 Связывание таблиц и внешние ключи Как вы могли заметить, теперь у нас 3 отдельные таблицы, которые между собой никак не связаны и глядя на них совершенно не ясно, какую технику взяла компания в аренду и на какие сроки. А чтобы стало ясно, в таблицу необходимо добавить связи. После того, как мы добавим необходимые связи, наши таблицы будут выглядеть так, как показано на рис.3 Рис.3 Давайте подробней разберемся со связями, глядя на рис.3 Обратите внимание, теперь каждая таблица имеет столбец с именем id. Благодаря этому столбцу, каждая запись в таблице имеет уникальный идентификатор, правильно называть его «Первичный ключ». При добавлении новой записи в таблицу, ей автоматически присвоится уникальный идентификатор. В таблице Rent вы также можете заметить появление столбцов id_Client и id_Equipment, это «внешние ключи». Именно с помощью Первичных ключей и Внешних ключей образуются связи между таблицами. Связи между таблицами, пожалуй, одна из самых важных тем в базах данных. Далее все просто, внешний ключ id_Client таблицы Rent указывает на первичный ключ таблицы Client. Таким образом, мы знаем, к какому клиенту относиться каждая запись в таблице Rent. Чтобы было совсем наглядно, взгляните на рис.4 Рис.4 Т.е. для записи в таблице Rent с идентификатором 6, соответствует клиент «euroasfalt», который взял в аренду технику «Бульдозер ТМ-10». 1.5 Типы данных Прежде чем приступить к созданию первого приложения для работы с базой данных, нам осталось рассмотреть еще одну тему. Речь идет о типах данных используемых в столбцах. На первый взгляд может показаться, что все данные в таблицах это просто текст, но это не так. Каждый столбец в таблице соответствует, какому либо типу данных, перечислим их: текстовый (просто любой текст, например фамилия или название компании) целочисленный (без дробной части, например количество чего либо) число с плавающей запятой (например число 3,14) денежный (например 25.00 руб) логический (принимает значение Да или Нет) дата (например 02.06.2016) время (например 19:57:00) дата и время (например 02.06.2016 19:57:00) файл (позволяет сохранить файл непосредственно в базе данных) изображение (позволяет сохранить фотографию в базе данных) внешний ключ (о нем мы говорили в разделе 1.3) Поэтому когда вы будете создавать столбцы в таблице, вам необходимо выбрать его тип. Зачем они нужны? Это помогает более рационально хранить данные и обеспечивает более высокую работу базы данных. Также это позволяет избежать ошибок. Допустим, если столбец принадлежит целочисленному типу, пользователь не сможет сохранить там какой либо текст. 2. Практика. 2.1 Создание первого приложения для работы с БД. Теперь мы знаем достаточно теории о базах данных, чтобы сделать свое собственное приложение для работы с ней. Более опытный читатель, возможно, вспомнит о языке SQL запросов, о котором еще не было сказано ни слова, но к счастью современные инструменты разработки позволяют первое время обойтись и без него. Но если вы решите более серьезно заняться базами данных, то несомненно вам продеться ознакомиться с SQL. Для наших практических задач я остановил свой выбор на использовании довольно простой среды разработки баз данных, в которой собрано все, для того чтобы немедленно приступить к созданию структуры базы данных и приложению, которое будет работать с ней. Посетите сайт http://myvisualdatabase.com/ для получения последней версии My Visual Database. Программа, к сожалению, не бесплатная, но имеет ознакомительный период, которого нам будет достаточна для учебных целей. Но можно найти более раннюю бесплатную версию по данной ссылке: http://myvisualdatabase.com/download/myvisualdb1.44.exe Кратко о возможностях программы: Создание структуры БД Создание форм для работы с БД Отчетная система для печати и анализа Скриптовый язык, позволяющий реализовать любой нестандартный функционал Поддержка СУБД SQLite и MySQL Возможность создания простого web доступа к БД Создание полноценного Windows приложения После установки My Visual Database она немедленно готова к работе, дополнительная настройка не требуется (рис.5) Рис.5 Внешний вид программы My Visual Database Теперь мы можем приступить к созданию нашего первого приложения. В качестве примера создадим уже рассмотренный выше учет строительной техники. Прежде чем приступить к созданию приложения, сохраните проект в отдельную папку (меню: Файл > Сохранить как…), назовем наш проект например Rent (рис.6) Рис.6 Сохранение проекта Как мы помним из первой главы книги, база данных состоит из таблиц и столбцов, именно их нам сейчас и предстоит создать. Начнем с создания таблиц: Equipment'>Client Equipment Rent На вкладке «Таблицы базы данных» нажмите кнопку «Новая таблица» чтобы создать нашу первую таблицу Client, таким же образом создайте таблицы Equipment и Rent После создания таблиц, у нас должно получиться, как показано на рис. 7 Рис.7 Снова обратите внимание на рисунок 7, у каждой созданной таблицы сверху есть кнопка «Новое поле», используя эту кнопку необходимо создать поля для таблиц. Давайте создадим первое поле. Нажмите кнопку «Новое поле» в таблице Client, затем из появившегося меню выберите тип ТЕКСТ и введите название поля Name. Таким же образом создайте все перечисленные ниже поля для остальных таблиц. Не забудьте правильно выбрать тип поля. Таблица Client: Name (имя клиента, тип ТЕКСТ) Phone (телефон клиента, тип ТЕКСТ) Таблица Equipment Tech (название техники, тип ТЕКСТ) CostPerDay (цена за 1 день, тип ДЕНЬГИ) Таблица Rent DateStart (дата начала аренды, тип ДАТА) DateEnd (дата конца аренды, тип ДАТА) TotalCost (общая стоимость, тип ДЕНЬГИ) Результат вашей работы должен быть таким, как показано на рис.8 Рис.8 Возможно, вы помните, что каждая таблица должна содержать поле с именем id, в котором хранится уникальный идентификатор для каждой записи. Вам не нужно беспокоиться об этом, программа создает его автоматически, но не показывает данное поле в таблицах. Структура БД почти готова, осталось создать только два внешних ключа в таблице Rent, которые будут связываться с таблицами Client и Equipment. Это необходимо, чтобы, когда мы будем создавать новую запись об аренде, мы смогли бы выбрать клиента и арендованную им технику из списка и этот выбор будет сохранен именно во внешних ключах. Создание внешних ключей происходит почти также как и создание полей. В таблице Rent нажмите кнопку «Новое поле» и из появившегося меню выберите пункт «Связь», затем выберите из списка таблицу Client и нажмите «ОК» как показано на рис. 9 Рис.9 Тоже самое проделайте для создания внешнего ключа на таблицу Equipment. Опять в таблице Rent нажмите кнопку «Новое поле» и из появившегося меню выберите пункт «Связь», затем выберите из списка теперь уже таблицу Equipment и нажмите «ОК» Окончательный вид таблиц и полей показан на рис.10 Рис.10 На этом наша структура базы данных полностью готова. Далее нам необходимо создать пользовательский интерфейс для взаимодействия с базой данных, чтобы мы могли создавать, редактировать и удалять записи. Также необходимо чтобы приложение умело искать записи по различным критериям. Уже сейчас вы можете запустить ваше приложение, нажав кнопку на панели инструментов и перед вами появится окно Form1, на котором пока ничего нет. После первого же запуска приложения, в папке проекта вы найдете exe файл, т.о. ваш проект становится самостоятельным приложением, которое готово работать на любом компьютере без установки каких либо дополнительных компонентов. Давайте определимся, какие формы нам необходимы. 1. Form1 Форма для поиска. Эта же форма будет главной, именно она будет появляться при запуске вашего приложения. 2. frmRent Форма для создания и редактирования записи об аренде. Данная форма будет записывать данные в таблицу БД Rent. 3. frmClientList Форма со списком клиентов. 4. frmClient Форма создания и редактирования клиента. Данная форма будет записывать данные в таблицу БД Client. 5. frmTechList Форма со списком строительной техники. 6. frmTech Форма создания и редактирования информации о строительной техники. Данная форма будет записывать данные в таблицу БД Equipment. Как правило, для каждой таблицы БД необходимо две формы, одна для вывода всех записей из нее и вторая для создания или редактирования записей для данной таблицы. Для создания интерфейса вам доступны компоненты, которые вы можете видеть на панели инструментов (рис.11) Рис.11 Почти все компоненты стандартные и, как правило, применяются в большинстве Windows приложений. Но на всякий случай перечислим их и дадим краткое описание: - надпись (Label). Позволяет поместить надпись на форме. Как правило, компонент не несет какой либо функциональности. - кнопка (Button). Важный и часто используемый компонент. Например, может служить для сохранения записи в базу данных. - текстовое поле (TextBox). Служит для ввода числовой и текстовой информации. - многострочное текстовое поле (Memo). Также служит для ввода текстовой информации. - выпадающий список (ComboBox). Позволяет выбрать какое либо значение из списка. - флажок (CheckBox). Имеет два состояние, установлен либо сброшен. - дата/время (DateTimePicker). Служит для ввода даты или времени. - рисунок БД (DBImage). Позволяет сохранить рисунок в базу данных. - файл БД (DBFile). Позволяет сохранить файл в базу данных. - календарь (Calendar). Служит исключительно для выбора даты. - таблица (TableGrid). Позволяет вывести записи из базы данных в табличном виде. - счетчик (Counter). Позволяет присвоить записи уникальный номер. - панель (Panel). Декоративный элемент интерфейса. - группа (Group). Декоративный элемент интерфейса. - вкладки (PageControl). Позволяет создавать переключаемые вкладки, на каждой вкладке можно разместить другие компоненты. - рисунок (Image). Позволяет разместить на форме любой рисунок. Приступим к созданию первой формы, которая будет служить нам для поиска записей. Также на форме будут размещены кнопки, позволяющие вызвать форму для создания или редактирования записи. Для создания формы будет достаточно следующих компонентов: Перейдите на вкладку Form1 как показано на рисунке 11а. Рис.11а Выбрав нужный компонент на панели, нажмите левой кнопкой мыши на форме Form1 в том месте, где желаете поместить данный компонент. Разместив на форме компонент или , вам необходимо изменить текст на нем, сделать это можно с помощью свойства Caption на панели «Свойства компонента» (рис.12) Рис.12 Поместите все компоненты на форму Form1 как показано на рисунке 13. Для вашего удобства цветными линиями обозначены, куда и какие именно компоненты необходимо расположить на форме. Рис.13 Форма для поиска готова. На данной форме вы сможете найти все записи об аренде конкретного клиента, либо конкретной техники, также найти записи по дате начала либо конца аренды. Вызвать форму для создания записи о новой аренде, редактирования существующей либо удалить запись об аренде. Также на форме есть кнопки «Клиенты» и «Техника», данные кнопки необходимы для вызова формы со списком всех клиентов и техники соответственно. Ради любопытства можете нажать кнопку , чтобы снова запустить наш проект и посмотреть, как он будет выглядеть. Так как пока компоненты на форме не настроены, при нажатии на них, ничего не произойдет. Приступим к созданию второй формы, которая необходима для создания либо редактирования записи об аренде. Напомню, как правило, используется одна и та же форма, как для создания, так и для редактирования записи. Создайте вторую форму, нажав кнопку . Введите название формы frmRent Поместите компоненты на форму frmRent, как показано на рисунке 14. Рис.14 Создадим третью форму с именем frmClientList, нажав кнопку На создаваемой форме мы сможем видеть всех наших клиентов, а так же вызвать форму для создания нового клиента либо редактирования существующего. Поместите компоненты на данную форму как показано на рисунке 15. Рис.15 Создадим четвертую форму с именем frmClient, нажав кнопку Данная форма предназначена для создания записи о новом клиенте, либо редактировании существующего. Поместите компоненты на данную форму как показано на рисунке 16. Рис.16 Создадим пятую форму с именем frmTechList, нажав кнопку На создаваемой форме мы сможем видеть всю технику, которой вы располагаете, а так же вызвать форму для добавления новой техники, если вдруг такая появилась, либо редактировать информацию о существующей. Поместите компоненты на данную форму как показано на рисунке 17. Рис.17 Создадим шестую, последнюю форму в нашем проекте, с именем frmTech, нажав кнопку Данная форма предназначена для создания записи о новой технике, если такая появилась, либо редактирования существующей. Поместите компоненты на данную форму как показано на рисунке 18. Рис.18 Если вы запустите проект, нажав на кнопку , и попробуйте понажимать кнопки на форме, то заметите, что ничего не происходит. Причина в том, что компоненты на наших созданных формах пока не настроены, а для кнопок не присвоены действия. Поэтому переходим к последнему этапу создания приложения, к настройке компонентов на форме. Как правило, настройка компонентов сводится к тому, чтобы кнопкам присвоить действие, а компонентам предназначенные для ввода информации (такие как: и т.д.) указать, к какой таблице БД и к какому полю они принадлежат. Начнем с кнопок . Задать действие для кнопки необходимо через панель «Свойства компонента», используя свойство |