В какой программе сделать базу данных

В качестве примера спроектируем несложную базу данных информационной системы кинотеатра. При этом, решим следующие задачи:

  • анализ предметной области для определения состава и содержания информации, обрабатываемой информационной системой, а также пользовательских потребностей;
  • построение концептуальной модели предметной области, заключающееся в выявлении сущностей и связей между ними, а также отображение этой информации в виде ER-диаграммы;
  • физическое проектирование базы данных и ее реализация в MS SQL Server.

1 Анализ предметной области

Зачастую, кинотеатр состоит из нескольких залов разной конфигурации, а посетителю предоставляется возможность выбора билета, для этого ему отображается текущее состояние зала. Выбранные места посетитель сообщает кассиру, который вводит их в систему и места помечаются как «проданные». Это «основной» сценарий использования информационной системы, однако надо учесть следующее:

  1. репертуар и расписание проката кинотеатра должен кто-то вносить в систему — соответствующую роль назовем «Менеджер»;
  2. посетитель и кассир должны иметь возможность просматривать расписание, при этом интересно расписание, начиная с некоторого момента времени (например, текущего времени). Составлять оно может по-разному:
  1. расписание показа всех фильмов, упорядоченное по времени;
  2. расписание прокатов в отдельных залах кинотеатра;
  3. расписание проката определенного фильма.

Из этого описания понятны основные функции системы, изображенные на рисунке с помощью нотации диаграммы прецедентов UML. На диаграмме не отображена роль администратора базы данных, так как администратор обычно взаимодействует с системой не через интерфейс, а через выполнение SQL-запросов.

Как в Excel сделать Работа с базами данных

Несмотря на то, что мы не будет разрабатывать интерфейс информационной системы и текстовые описания прецедентов, дальше нас будут интересовать данные, необходимые для выполнения того или иного прецедента, а для этого надо выделить и описать сущности. Иначе, невозможно определить «какие данные должен вводить менеджер при добавлении фильма». Основные сущности, данные которых потребуются во время работы, показаны на рисунке, при этом используется нотация диаграммы классов UML. Каждый прямоугольник соответствует одной сущности, внутри записаны поля и типы данных.

Каждая сущность, кроме hall_row содержит поле id, которое идентифицирует объект. У сущности hall_row поле id не нужно, так как в одном и том же зале кинотеатра (id_hall) не могут повторяться номера рядов (number).

Когда пользователь выберет зал и прокат — система должна отобразить заполненность зала, при этом надо отобразить конфигурацию зала с пометкой занятых и свободных мест. Под конфигурацией зала тут имеется ввиду, что разные залы имеют разный размер, а ряды зала могут иметь различное количество мест. Поэтому в базе данных зал (hall) составляется из рядов (hall_row), одним из параметров которых является вместимость (capacity).

Создание базы данных MySQL Workbench

2 Построение концептуальной модели

Выше были отображены основные сущности, но не отображены роли пользователей, хотя их тоже должна хранить система. Они показаны ниже на ER-диаграмме в нотации Чена [1].

На диаграмме выделены роли кассира и менеджера, а также основные отношения между сущностями. На диаграмме нет роли администратора, но его роль заключается в:

  1. создании всех таблиц базы;
  2. добавлении залов и рядов в них;
  3. добавлении кассиров и менеджеров.

На диаграмме не отражена роль посетителя, так как:

  1. билет не содержит информации о том, кто его купил (посетитель может подарить билет другу);
  2. система вообще не хранит информацию о посетителях;
  3. покупку билета он осуществляет через общение с кассиром вне системы;
  4. никакие данные в базе посетитель самостоятельно изменить не может.

На диаграмме проставлены кратности связей, например, видно, что один менеджер может добавить много (N) прокатов. В этой базе не оказалось связей типа N:M, сложных или рекурсивных связей — такие связи являются препятствиями в проектировании и решаются изменением ее структуры.

Для формирования схемы данных необходимо сначала дополнить ER-диаграмму реквизитами сущностей (уточнить ее) — результат приведен на рисунке.

В ходе анализа этой диаграммы были найдены несколько недочетов, допущенных при выделении сущностей системы:

  • система не должна позволять продавать несколько билетов на одно и то же место при одном показе фильма. Это значит, что вторичным ключем для Билета должен быть кортеж (id_screening, row, seat). Однако, тогда нет необходимости в id билета — на билеты не ссылается ни одна таблица, это поле может быть удалено. Изначально id был добавлен потому, что обычно на билетах в кинотеатрах печатается номер;
  • билет хранит поле id_hall, это было сделано для того, чтобы посетитель кинотеатра мог найти свой кинозал. Однако, билет, выдаваемый пользователю — это не тоже самое, что информация о билетах, хранимая в базе данных. Билет базы данных хранит также поле id_screening, а Показ уже ссылается на id_hall. Таким образом, в базе нет смысла хранить id_hall в таблице билетов.

Исправленная ER-диаграмма приведена ниже:

Таблица менеджеров и кассиров не объединены в таблицу Users так как вопросы разграничения прав доступа в различных СУБД решаются по-разному. Так, в MS SQL пользователи добавляются с помощью специальных запросов типа:

CREATE LOGIN Manager_Name WITH PASSWORD=’Some Passwrd’;

Читайте также:
Как вступить в программу по замене лифтов

при этом вообще нет необходимости хранить информацию об их логинах и паролях в таблицах. Однако, вопросы разграничения доступа решаются позже — на этапе физического проектирования.

3 Физическое проектирование

ER-диаграмма отражает основные таблицы, связи и атрибуты, на ее основе можно построить модель БД. На ER-диаграммы нет стандарта, но есть ряд нотаций (Чена, IDEFIX, Мартина и т.п.) [2], но на модель предметной области не удалось найти ни стандарта, ни нотаций. Однако, в ходе построения такой диаграммы обязательно выделяются ключевые поля (внешние и внутренние), иногда — индексы и типы данных. Схема базы данных, приведенная на рисунке, выполнена с использованием открытого инструмента plantuml [3], при этом:

  1. для связей используется нотация Мартина («вороньи лапки»);
  2. таблицы изображены прямоугольниками, разделенными на 3 секции:
  1. имя таблицы;
  2. внутренние ключи (помечаются маркером);
  3. остальные поля, при этом обязательные поля помечаются маркером.

3.1 Составление и нормализация реляционных отношений

Схема отношения «Билеты» (tickets):

Значение по умолчанию

Ключ или индекс

первичный ключ (составной)

первичный ключ (составной)

первичный ключ (составной)

Схема отношения «Прокаты» (screening):

Значение по умолчанию

Ключ или индекс

Первичный ключ, уникальный

Внешний ключ к hall

Внешний ключ к film

Схема отношения «Кинозалы» (hall):

Значение по умолчанию

Ключ или индекс

Схема отношения «Ряд кинозала» (hall_row):

Значение по умолчанию

Ключ или индекс

первичный ключ (составной)

первичный ключ (составной)

Схема отношения «Фильмы» (film):

Значение по умолчанию

Ключ или индекс

При выборе типов данных и описании их размеров использовалась документация [4]. Для ряда полей, где известно что значениями будут целые числа в небольшом диапазоне используется тип smallint. Для строковых полей используется varchar, однако мог бы использоваться и тип char, критично это только для поля film.description. Дело в том, что описания фильмов бывают длинными, поэтому при создании таблицы надо указать заранее «достаточный» размер поля, например 2000 символов. Однако, согласно документации, при использовании типа char, под все описания фильмов будет выделено 2000 символов, а при использовании varchar более короткие описания будут потреблять меньше памяти — ровно столько, сколько необходимо.
Разработанная схема БД находится в:

  1. первой нормальной форме, так как в качестве доменов выступают только скалярные значения и информация в таблицах не дублируется. Почти во всех таблицах есть идентификатор (id), а в остальных — в качестве первичного ключа выступает кортеж (набор полей);
  2. во второй и третьей нормальных формах, так как каждый не ключевой атрибут неприводимо и нетранзитивно зависит от первичного ключа. Для всех таблиц нашей БД это очевидно — количество мест в ряду зависит только от пары (номер зала, номер ряда) и никаким другим образом вывести его из информации в базе нельзя.

Таким образом, схема базы данных находится в нормальной форме Бойса-Кодда [5].

3.2 Инсталляция MS SQL Server и создание пустой базы

Был скачан и проинсталлирован MS SQL Server 2014 [6], так как работа выполнялась на 32х-разрядном компьютере, а более новые версии программы не поддерживают такую архитектуру. При установке была выбрана «Установка нового изолированного экземпляра SQL Server» с параметрами по умолчанию. Как показано на рисунке, при установке задано имя экземпляра «my_project».

В результате, на компьютер была установлена программа SQL Server Management Studio, внутри которой выбирается имя сервера, как показано ниже:

После выбора сервера в обозревателе объектов отобразились компоненты сервера, в том числе вкладка «базы данных». В контекстом меню был выбран пункт добавления базы, в качестве имени указано «my_db», как показано на рисунке:

3.3 Формирование таблиц

После создания базы данных в обозревателе объектов появилась возможно добавить в базу данных таблицы. На рисунке ниже показан процесс добавления таблицы hall — видно, что указываются имена полей и их типы, а для ключевого поля указано «начальное значение» и «шаг приращения».

Ключевые поля добавляются в таблицы с помощью контекстоного меню, выпадающего после клика по полю правой кнопкой. Однако, для таблиц с составными и внешними ключами, например hall_row сделать это через графический интерфейс не получилось. В нем были созданы только заготовки таблиц, для них были сгенерированы скрипты T-SQL и дополнены соответствующими параметрами. Для генерации T-SQL скрипта для таблицы в меню выбирается «создать скрипт для таблицы -> используя DROP и CREATE». Сгенерированные скрипты были поправлены, в результате получено следующее:

USE [my_db] GO DROP TABLE [dbo].[hall_row] GO DROP TABLE [dbo].[tickets] GO DROP TABLE [dbo].[screening] GO DROP TABLE [dbo].[hall] GO DROP TABLE [dbo].[film] GO CREATE TABLE [dbo].[film]( id int IDENTITY(1,1) NOT NULL, name varchar(255) NOT NULL, description varchar(2000) NOT NULL, CONSTRAINT [PK_film] PRIMARY KEY CLUSTERED ( id ASC ) ) GO CREATE TABLE [dbo].[hall]( id int IDENTITY(1,1) NOT NULL, name nvarchar(100) NOT NULL, CONSTRAINT [PK_hall] PRIMARY KEY CLUSTERED ( id ASC ) ) GO CREATE TABLE [dbo].[screening]( id int IDENTITY(1,1) NOT NULL, hall_id int NOT NULL, film_id int NOT NULL, time datetime NOT NULL, FOREIGN KEY (hall_id) REFERENCES hall (id), FOREIGN KEY (film_id) REFERENCES film (id), CONSTRAINT [PK_screening] PRIMARY KEY CLUSTERED ( id ASC ) ) GO CREATE TABLE [dbo].[hall_row]( id_hall int NOT NULL, number smallint NOT NULL, capacity smallint NOT NULL, FOREIGN KEY (id_hall) REFERENCES hall (id), CONSTRAINT [PK_hall_row] PRIMARY KEY CLUSTERED ( id_hall, number ) ) GO CREATE TABLE [dbo].[tickets]( id_screening int NOT NULL, row smallint NOT NULL, seat smallint NOT NULL, cost int NOT NULL, FOREIGN KEY (id_screening) REFERENCES screening (id), CONSTRAINT [PK_ticket] PRIMARY KEY CLUSTERED ( id_screening, row, seat ) ) GO

Читайте также:
Bios это программа тестирования компьютера

Измененный скрипт был запущен в MS SQL Management Studio, в результате были обновлены таблицы. Затем, на их основе сгенерирована схема базы данных:

3.4 Наполнение базы

Для наполнения базы был создан такой запрос (приведен фрагмент):

INSERT INTO [dbo].[film] (name, description) VALUES (‘Багратион’, ‘«Багратион» — советский двухсерийный историко-биографический фильм 1985 года о жизни прославленного российского полководца Петра Ивановича Багратиона — героя Отечественной войны 1812 года. Совместное производство «Грузия-фильм» и «Мосфильм». Режиссёры Гиули Чохонелидзе и Караман Мгеладзе. Премьера — декабрь 1985 года. ‘) INSERT INTO [dbo].[hall] (name) VALUES (‘красный зал’) INSERT INTO [dbo].[hall] (name) VALUES (‘желтый зал’) INSERT INTO [dbo].[hall] (name) VALUES (‘синий зал’) INSERT INTO [dbo].[hall_row] (id_hall ,number ,capacity) VALUES (1, 1, 10) INSERT INTO [dbo].[hall_row] (id_hall ,number ,capacity) VALUES (1, 2, 15) INSERT INTO [dbo].[hall_row] (id_hall ,number ,capacity) VALUES (1, 3, 20) INSERT INTO [dbo].[screening] (hall_id ,film_id, time) VALUES (1, 1, ‘20210101 10:35:00 AM’) INSERT INTO [dbo].[screening] (hall_id ,film_id, time) VALUES (1, 1, ‘20210101 00:00:00 AM’) INSERT INTO [dbo].[screening] (hall_id ,film_id, time) VALUES (1, 2, ‘20210101 1:35:00 PM’) INSERT INTO [dbo].[tickets] (id_screening ,row ,seat ,cost) VALUES (1, 2, 3, 150) INSERT INTO [dbo].[tickets] (id_screening ,row ,seat ,cost) VALUES (1, 3, 3, 200) INSERT INTO [dbo].[tickets] (id_screening ,row ,seat ,cost) VALUES (1, 3, 5, 150) % .

Запрос выполняется успешно, а результаты его выполнения проверялись с помощью SELECT-запросов:

3.5 Проектирование наиболее востребованных запросов

Как отмечалось в разделе 1, при продаже билета посетитель кинотеатра устно передает кассиру номер и место. Кассир вводит эти данные в систему, которая не должна позволить продать билеты на несуществующие места. Для этого программа-клиент кассира должна получить вместимость ряда конкретного зала. Чтобы получить количество мест во втором ряду третьего зала надо выполнить запрос:

SELECT capacity FROM hall_row WHERE id_hall = 3 AND number = 2

программа клиент получит набор строк, соответствующих условию запросу. Если запрос выполнился успешно — в этом наборе всегда будет одна строка, иначе — пустое множество строк.

Затем, программа-клиент должна проверить не продано ли это место. Для этого можно выполнить отдельный SELECT, но можно попробовать выполнить INSERT INTO и если место было ранее продано — запрос завершится с ошибкой, ведь на таблицу билетов наложены соответствующие ограничения.

Чтобы сформировать расписание показов фильмов, прокатываемых с определенного момента (обычно в запрос будет поставляться текущее время) можно использовать такой запрос:

SELECT * FROM film, screening WHERE time > ‘20210101 11:00:00 AM’ AND screening.film_id = film.id;

в данном случае в запросе используется две таблицы, которые связываются по идентификатору. Выбираются названия фильмов, показ которых начинается после 11 часов 01.01.2021. Результат выполнения запроса:

Для получения расписания проката в конкретном зале кинотеатра надо добавить в запрос связь с третьей таблицей и ограничения на эту таблицу:

SELECT film.name, hall.id, screening.time FROM film, screening, hall WHERE time > ‘20210101 11:00:00 AM’ AND screening.film_id = film.id AND screening.hall_id = hall.id AND hall.id = 2;

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

Для получения расписания проката конкретного фильма — можно вставить в запрос его идентификатор:

SELECT film.name, hall.name, screening.time FROM film, screening, hall WHERE time > ‘20210101 11:00:00 AM’ AND screening.film_id = film.id AND screening.hall_id = hall.id AND film.id = 2;

Если вдруг нас интересуют фильмы, названия которых соответствует определенному шаблону — можно использовать оператор LIKE . Так, приведенный ниже запрос выбирает все фильмы, прокатываемые с определенного момента, названия которых начинаются с символа ‘Б’ , шаблон ‘%’ задает в T-SQL любое количество любых символов.

SELECT film.name, hall.name, screening.time FROM film, screening, hall WHERE time > ‘20210101 11:00:00 AM’ AND screening.film_id = film.id AND screening.hall_id = hall.id AND film.name LIKE ‘Б%’;

Чтобы вывести расписание прокатов, упорядоченное по залу и дате нужно применить конструкцию ORDER BY :

SELECT film.name, hall.name, screening.time FROM film, screening, hall WHERE time > ‘20210101 11:00:00 AM’ AND screening.film_id = film.id AND screening.hall_id = hall.id ORDER BY hall.name, screening.time;

Список полезной литературы

  1. Учимся проектированию Entity Relationship — диаграмм // Хабр URL: https://habr.com/ru/post/440556/ (дата обращения: 02.01.2021).
  2. Технологии баз данных. Лекция 3. Модель «Сущность-связь». URL: https://docplayer.ru/27886777-Model-sushchnost-svyaz-tehnologii-baz-dannyh-lekciya-3.html (дата обращения: 02.01.2021).
  3. Entity Relationship Diagram. URL: https://plantuml.com/ru/ie-diagram (дата обращения: 03.01.2021).
  4. Transact-SQL Reference (Database Engine) // Microsoft Docs URL: https://docs.microsoft.com/ru-ru/sql/t-sql/language-reference?view=sql-server-ver15 (дата обращения: 05.01.2021).
  5. Нормализация отношений. Шесть нормальных форм // Хабр URL: https://habr.com/ru/post/254773/ (дата обращения: 05.01.2021).
  6. Материалы для скачивания по SQL Server // Microsoft URL: https://www.microsoft.com/ru-ru/sql-server/sql-server-downloads (дата обращения: 05.01.2021).
  7. Другой пример проектирования базы данных (MySQL). URL: https://pro-prof.com/forums/topic/db_example

Источник: pro-prof.com

Создание базы данных в MySQL

Инструкция о том, как создать новую базу данных в MySQL несколькими способами, добавить пользователей и выдать им полномочия на доступ к базе.

Эта инструкция — часть курса «MySQL для новичков».

Смотреть весь курс

Введение

В этой небольшой инструкции мы покажем, как создать новую базу данных в MySQL несколькими способами, как добавить пользователей и выдать им полномочия на доступ к базе.

Читайте также:
Финансово правовые программы это какие

Подготовка

Перед началом работы у вас должен быть установлен и настроен MySQL-сервер. В этой статье мы не будем показывать, как это сделать. Если у вас еще нет готового сервера, почитайте нашу статью, там мы пошагово описали процесс установки и первоначальной настройки MySQL.

Как сделать простую базу данных

IT

Автор soviks На чтение 5 мин. Просмотров 77.2k. Опубликовано 12.02.2010

Есть разные по сложности базы данных, мы создадим самую простую. Создавать базу данных мы будем в Access, это программа не требует много времени в освоении. Мы будем создавать простую базу данных “Библиотека фильмов”, на этой основе можно создавать и другие базы данных. И так, для начала установите на свой компьютер офисное приложение, и начнем работать. Запускаем программу и нажимаем на панели инструментов “создать” новая база данных.

Как сделать простую базу данных

Открывается окно и нам, предлагают создать нашу базу данных. Далее вы должны определиться, как вы назовете базу и в какой папке будите создавать, когда определились, нажимаем на кнопку “создать”.

Как сделать простую базу данных

Теперь мы будем создавать таблицу. Нужно выбрать объект “таблицы” создание таблицы в режиме конструктора и щелкнуть левой кнопкой мыши.

Как сделать простую базу данных

Перед нами появилась таблица, которую мы должны заполнить.

Как сделать простую базу данных

Я предлагаю заполнить поля таким образом:

Как сделать простую базу данных

Вы можете заполнять как вам угодно. Тип данных должен соответствовать тому, что вы хотите заполнять. Например, если год то это естественно будет числовой тип данных, если хотите прикрепить объект (рисунок) то это OLE. Далее нажимаем на “файл” “сохранить как” задаем имя и сохраняем таблицу.

Как сделать простую базу данных

Ключевые поля задавать не надо, нам они для этой базы данных не нужны. Теперь, когда таблица создана, переходим к созданию формы. Для этого выбираем “формы” “создать”. В качестве источника выбираем нашу таблицу.

Как сделать простую базу данных

Перед нами появилась область данных, где мы и будем конструировать свою форму. Если вы хотите растянуть область, то поднесите курсор к краю появиться крестик, и вы можете растянуть область.

Как сделать простую базу данных

Дальше нам нужно перенести объекты на область данных. Для того что бы это сделать необходимо навести курсор на те данные которые мы перетаскиваем. Нажать и, не отпуская левой кнопки мыши перенести на область данных.

Как сделать простую базу данных

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

Как сделать простую базу данных

Располагать объекты можно как угодно, а также растягивать и перемещать по отдельности. Далее нам нужно придать нашей форме красочный вид. Сначала мы зальем фон, для этого правой кнопкой мыши открываем меню, наводим курсор на цвет заливки и выбираем цвет. Теперь можно изменить цвет текста, для этого выделяем объект и на панели инструментов нажимаем кнопку, которая изменит цвет текста. Цвет текста можно менять сразу или по отдельности для каждого объекта.

Как сделать простую базу данных

Выделение объектов для изменения цвета текста происходит при нажатой левой кнопки мыши и растягиванием области. Вы можете поменять размер текста, нужно выделить объекты и изменить размер или шрифт.

Как сделать простую базу данных

Можно изменить цвет линий, для этого выделите объект на панели инструментов нажмите на кнопку изменяющую цвет линий.

Как сделать простую базу данных

Сейчас мы добавим в форму элемент флажок, и когда будем заполнять, базу данных будем ставить флажок если фильм в наличии, а если нет в наличии, то флажок оставлять пустым. Для добавления флажка в панели инструментов выбираем флажок и вставляем его в область данных.

Как сделать простую базу данных

Добавим дополнительные кнопки в форме, первыми двумя кнопками будут переход по записи. Для этого в панели инструментов нажимаем на кнопку и щелкаем на область данных.

Появляется окно, где нам нужно выбрать кнопку и действие, выбираем, предыдущая запись и нажимаем готово. Если вы хотите изменить в кнопки рисунок или еще чего-либо тогда “далее”. Кнопки можно свободно перемещать по области данных и располагать на свое усмотрение.

Как сделать простую базу данных

Вторую кнопку делаем также, только меняем действия. Менять “следующая запись”. Добавим поиск в базе данных. Нажимаем опять на кнопку и щелкаем по области. В результате у нас должны получиться три кнопки, если вы хотите, можете добавить еще.

Как сделать простую базу данных

Наша форма готова для заполнения, но для начала давайте ее сохраним. Наводим курсор на панель инструментов “Файл” “Сохранить как” даем название нашей форме и сохраняем ее. Теперь можно приступать к заполнению базы данных. Переключаемся в режим формы и заполняем данными.

Как сделать простую базу данных

В результате у нас получиться вот такая база данных.

Как сделать простую базу данных

Для того что бы вставить объект в поле OLE нужно в панели инструментов, в режиме формы, нажать добавить объект, можно добавлять рисунки, клипы и многое другое. Для перехода по записям используете кнопки, которые создали или кнопки, которые расположены в низу формы. В следующих моих статьях мы разберем очень сложные базы данных с запросами, макросами, отчетами.

Не забывайте что базы данных это удобная вещь, которая всегда может пригодиться в вашей жизни. Существует множество программ для создания базы данных, они могут пригодиться для тех, кто хочет создать свой интернет магазин, и для других целей. Если вы овладели опытом в создании базы данных, вы сможете прилично на этом заработать.

Источник: znaikak.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru