Добавлен: 29.03.2023
Просмотров: 53
Скачиваний: 1
Однако в FoxPro не происходит объявления типа переменных, это лишает возможности контролировать правильность обращения к переменной и, главное, под переменную отводится максимальное кол-во памяти, в связи с этим программы, написанные на Visual FoxPro крайне ресурсоемкие. К тому же программа, созданная на Visual FoxPro, требует наличие библиотек поддержки, что является причиной увеличения размера поставляемой программы.
Свободная система управления базами данных. MySQL является собственностью компании Sun Microsystems, которая осуществляет разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией. Так же компания MySQL AB разрабатывает функциональность по заказу лицензионных пользователей. Достоинства MySQL:
- Возможность работы с большим количеством платформ;
- Возможность взаимодействия с интерфейсом программного приложения API и поддержка множества языков программирования, в том числе С++, а также C, PHP, Delphi, Java, Perl, Python, Ruby, Smalltal, Tcl и т.д.;
- Высокая скорость работы за счёт упрощения некоторых стандартов;
- Имеется множество функций, которые обеспечивают безопасность.
Однако в MySQL нет каскадного обновления данных, отсутствует графический интерфейс пользователя, а также нет возможности использования триггеров для автоматизации контроля за работой БД.
Система управления базами данных Microsoft Access, которую фирма Microsoft неизменно включает в состав профессиональной редакции Microsoft Office, занимает одно из ведущих мест среди систем для проектирования, создания и обработки баз данных.
Достаточно простой графический интерфейс, благодаря которому имеется возможность создания не только базы данных, но и разработки приложений, которые используют встроенные средства. Также имеется множество Мастеров, выполняющих большую часть работы за пользователя при работе с данными и разработке приложений, с помощью которых можно избежать однотипных действий и существенно облегчить работу пользователю. Microsoft Access полностью совместим с операционной системой Windows.
На основе проведенного анализа СУБД Microsoft Access отлично подходит для создания нашей базы данных.
Исходя из основных задач, для которых предназначена информационная система можем выделить следующие сущности:
- Заказы;
- Клиент;
- Товары.
Между этими сущностями можно установить следующие логические отношения:
- Клиенты могут оформить один или более Заказов;
- Заказ должен быть оформлен только одним Клиентом;
- Заказы могут включать один или более Товаров;
- Товары могут быть включены в один или более Заказов.
Сущность Заказы будет включать следующие атрибуты:
- Номер заказа;
- Код клиента;
- Код товара;
- Количество;
- Дата оформления;
- Способ оплаты.
Сущность Клиент будет включать следующие атрибуты:
- Код клиента;
- Фамилия;
- Имя
- Отчество;
- Телефон;
- Дата рождения;
- Город;
- Район;
- Адрес;
- e-mail.
Сущность Товары будет включать следующие атрибуты:
- Код товара;
- Категория;
- Тип;
- Производитель;
- Наименование;
- Вес;
- Цена.
Как видим, первоначальное построение модели вызывает повторяющиеся записи, а также не находится в третьей нормальной форме. Для приведения к 3НФ необходимо добавить сущности для повторяющихся записей Способ оплаты, Категория, Тип, Производитель, которые будут содержать порядковый номер и соответствующий атрибут. А также необходимо разбить сущность Заказы на 2 сущности: Заказы и Детали заказов. В Детали заказов перенесем атрибуты: Номер заказа, Код товара, Количество.
Выделим сущности и их атрибуты:
- Клиент (ID_карты, Фамилия, Имя, Отчество, Телефон, Дата рождения, Город, Район, Адрес, e-mail);
- Заказы (Номер_заказа, ID_карты, Дата, Оплата);
- Способ оплаты (Код, Способ);
- Детали заказов (Код, Номер_заказа, Код_товара, Количество);
- Товары (Код_товара, Категория, Тип, Производитель, Наименование, Вес, Цена);
- Категория (Код, Категория);
- Тип (Код типа, Тип животного);
- Производитель (Код, Производитель).
Определим для каждого атрибута ограничения.
Каждый клиент имеет уникальный номер карты лояльности, как правило, этот номер ограничен количеством цифр. Каждый магазин выбирает на свое усмотрение количество цифр в своих картах. Как правило, оно изменяется от 3 до 12 цифр. Для нашей базы данных выберем 6 цифр.
Атрибуты Фамилия, Имя, Отчество, Город, Район, Адрес, e-mail, Способ, Категория, Тип животного, Производитель содержат текстовые символы. Длина их колеблется от 15 до 50 единиц. Данные атрибуты могут включать символы как русского, так и английского алфавита, а также цифры и знаки препинания.
Атрибуты Дата и Дата рождения являются типа Дата и время, должны быть ранее сегодняшней даты.
Атрибуты Номер_заказа и Коды в сущностях являются ключевыми, а значит уникальны. Для большого количества записей следует указать тип Счетчик. А если предполагается небольшое количество записей в сущности, то целесообразно сократить объем памяти для данного поля и выбрать тип Байт.
Атрибут Количество указывает на количество заказанного товара, является целым числом, предположительно от 1 до 100. В нашей базе данных укажем тип Байт.
Атрибут Вес является числом вещественным с тремя знаками после запятой, так как в нашей базе данных вес указываем в кг.
Атрибут цена является числом вещественным с двумя знаками после запятой. В нашей базе данных в MS Access мы можем указать, что это Денежный формат.
Концептуальная модель для перечисленных объектов реализована с помощью PowerDesigner. Созданная модель «сущность-связь» представлена на рисунке 1.
Рисунок 1. Концептуальная модель
Физическое проектирование базы данных заключается в описании структуры базы данных для конкретной выбранной системы управления базами данных с учетом ее ограничений. Выбранная СУБД – MS Access.
В первую очередь необходимо на основе построенной логической модели базы данных описать структуру каждой таблицы: указать имена полей, определить типы данных, описать свойства полей.
Описание структуры каждой таблицы представлены в таблицах 1-8.
Таблица 1
Описание структуры таблицы «Тип»
Имя поля |
Тип данных |
Размер поля |
Описание |
Код типа |
Числовой |
Байт |
Ключевое поле |
Тип животного |
Текстовый |
30 |
Обязательное поле: Да |
Таблица 2
Описание структуры таблицы «Способ оплаты»
Имя поля |
Тип данных |
Размер поля |
Описание |
Код |
Счетчик |
Ключевое поле |
|
Способ |
Текстовый |
20 |
Обязательное поле: Да |
Таблица 3
Описание структуры таблицы «Производитель»
Имя поля |
Тип данных |
Размер поля |
Описание |
Код |
Числовой |
Байт |
Ключевое поле |
Производитель |
Текстовый |
20 |
Обязательное поле: Да |
Таблица 4
Описание структуры таблицы «Категории»
Имя поля |
Тип данных |
Размер поля |
Описание |
Код |
Счетчик |
Ключевое поле |
|
Категории |
Текстовый |
20 |
Обязательное поле: Да |
Таблица 5
Описание структуры таблицы «Товары»
Имя поля |
Тип данных |
Размер поля |
Описание |
---|---|---|---|
Код_товара |
Счетчик |
Ключевое поле |
|
Категория |
Числовой |
Длинное целое |
Обязательное поле: Да Тип элемента управления: Поле со списком Тип источника строк: Таблица или запрос Источник строк: SELECT [Категории].[Код], [Категории].[Категория] FROM Категории; Присоединенный столбец: 1 Число столбцов: 2 Ширина столбцов: 0см; 2,54см Ограничиться списком: Да |
Тип |
Числовой |
Байт |
Обязательное поле: Да Тип элемента управления: Поле со списком Тип источника строк: Таблица или запрос Источник строк: SELECT [Тип].[Код типа], [Тип].[Тип животного] FROM Тип; Присоединенный столбец: 1 Число столбцов: 2 Ширина столбцов: 0см; 2,54см Ограничиться списком: Да |
Производитель |
Числовой |
Байт |
Обязательное поле: Да Тип элемента управления: Поле со списком Тип источника строк: Таблица или запрос Источник строк: SELECT [Производитель].[Код], [Производитель].[Производитель] FROM Производитель; Присоединенный столбец: 1 Число столбцов: 2 Ширина столбцов: 0см; 2,54см Ограничиться списком: Да |
Наименование |
Текстовый |
100 |
Обязательное поле: Да |
Вес |
Числовой |
Одинарное с плавающей точкой |
|
Цена |
Денежный |
Обязательное поле: Да Правило проверки: >0 |
Таблица 6
Описание структуры таблицы «Клиенты»
Имя поля |
Тип данных |
Размер поля |
Описание |
---|---|---|---|
ID_карты |
Текстовый |
6 |
Ключевое поле Маска ввода: 000000;; |
Фамилия |
Текстовый |
20 |
Обязательное поле: Да |
Имя |
Текстовый |
20 |
Обязательное поле: Да |
Отчество |
Текстовый |
20 |
|
Телефон |
Текстовый |
16 |
Обязательное поле: Да Маска ввода: "+79"00\-000\-00\-00;; |
Дата рождения |
Дата и время |
Краткий формат даты |
Правило проверки: <Дата() |
Город |
Текстовый |
20 |
|
Район |
Текстовый |
20 |
|
Адрес |
Текстовый |
50 |
Обязательное поле: Да |
|
Текстовый |
50 |
Обязательное поле: Да |
Таблица 7
Описание структуры таблицы «Заказы»
Имя поля |
Тип данных |
Размер поля |
Описание |
Номер_заказа |
Счетчик |
Ключевое поле |
|
ID_карты |
Текстовый |
6 |
Обязательное поле: Да Тип элемента управления: Поле со списком Тип источника строк: Таблица или запрос Источник строк: SELECT [Клиент].[ID_карты], [Клиент].[Фамилия], [Клиент].[Имя] FROM Клиент ORDER BY [Фамилия], [Имя]; Присоединенный столбец: 1 Число столбцов: 3 Ширина столбцов: 2,54см;2,54см;2,54см Ограничиться списком: Да |
Дата |
Дата и время |
Краткий формат даты |
Обязательное поле: Да |
Оплата |
Числовой |
Длинное целое |
Обязательное поле: Да Тип элемента управления: Поле со списком Тип источника строк: Таблица или запрос Источник строк: SELECT [Способ оплаты].[Код], [Способ оплаты].[Способ] FROM [Способ оплаты]; Присоединенный столбец: 1 Число столбцов: 2 Ширина столбцов: 0см; 2,54см Ограничиться списком: Да |
Таблица 8
Описание структуры таблицы «Детали заказов»
Имя поля |
Тип данных |
Размер поля |
Описание |
Код |
Счетчик |
Ключевое поле |
|
Номер_заказа |
Числовой |
Длинное целое |
Обязательное поле: Да Тип элемента управления: Поле со списком Тип источника строк: Таблица или запрос Источник строк: SELECT [Заказы].[Номер_заказа], [Заказы].[ID_карты], [Заказы].[Дата] FROM Заказы ORDER BY [Номер_заказа]; Присоединенный столбец: 1 Число столбцов: 3 Ширина столбцов: 2,542см;2,542см;2,542см Ограничиться списком: Да |
Код_товара |
Числовой |
Длинное целое |
Обязательное поле: Да Тип элемента управления: Поле со списком Тип источника строк: Таблица или запрос Источник строк: SELECT [Товары].[Код_товара], [Товары].[Категория], [Товары].[Тип], [Товары].[Наименование], [Товары].[Вес], [Товары].[Цена] FROM Товары ORDER BY [Категория], [Тип], [Наименование], [Вес]; Присоединенный столбец: 1 Число столбцов: 6 Ширина столбцов: 1см;2,542см;2,542см; 2,542см;2,542см;2,542см Ограничиться списком: Да |
Количество |
Числовой |
Целое |
Обязательное поле: Да Правило проверки: >0 |