
- •Т.Е.Ильиных л.И.Шустова проектирование реляционных баз данных в нотациях idef1x
- •Содержание
- •Этапы проектирования базы данных
- •Инфологическое проектирование базы данных
- •Общие сведения
- •Описание бизнес компонентов и бизнес процессов
- •Сущность
- •Атрибут
- •Другие компоненты инфологической модели
- •Уровни представления данных
- •Этапы инфологического проектирования Инициирование проекта (фаза 0)
- •Определение сущностей (фаза 1)
- •Построение модели уровня сущностей (фаза 2)
- •Построение модели уровня ключей (фаза 3)
- •Построение полноатрибутной модели (фаза 4)
- •Нормализация данных
- •Даталогическое проектирование базы данных
- •Создание даталогической модели Общие сведения
- •Получение спецификаций внутренней схемы базы данных
- •Ограничения целостности
- •Результаты этапа даталогического проектирования
- •Имя таблицы
- •Основы нормализации отношений Общие сведения
- •Первая нормальная форма
- •Вторая нормальная форма
- •Третья нормальная форма
- •Нормальная форма Бойса – Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •Денормализация
- •Примеры проектирования баз данных различных бизнес приложений
- •Общие замечания
- •Проектирование базы данных "Школа" Постановка задачи
- •Инициирование проекта (фаза 0)
- •Определение множеств сущностей (фаза 1) Выделение множеств сущностей
- •Описание множеств сущностей
- •Пул сущностей
- •Построение модели уровня сущностей (фаза 2)
- •Концептуальная схема уровня сущностей
- •Построение модели уровня ключей (фаза 3) Разрешение неопределенных связей
- •Пул сущностей
- •Определение связей
- •Определение ключевых атрибутов и доменов
- •Изучаемый предмет/e5
- •Описание доменов
- •Описание атрибутов
- •Концептуальная схема
- •Построение полноатрибутной модели (фаза 4)
- •Описание доменов
- •Описание атрибутов
- •Явные ограничения целостности
- •Даталогическая модель
- •Проектирование базы данных "Обмен валюты" Постановка задачи
- •Инициирование проекта (фаза 0)
- •Определение множеств сущностей (фаза 1) Выделение множеств сущностей
- •Описание множеств сущностей
- •Пул сущностей
- •Фаза 2. Построение модели уровня сущностей Матрица связей
- •Матрица связей
- •Описание связей
- •Описание связей
- •Концептуальная схема уровня сущностей
- •Построение модели уровня ключей (фаза 3) Разрешение неопределенных связей
- •Пул сущностей
- •Определение связей
- •Определение ключевых атрибутов и доменов
- •Описание доменов
- •Описание атрибутов
- •Концептуальная схема
- •Построение полноатрибутной модели (фаза 4)
- •Описание доменов
- •Описание атрибутов
- •Явные ограничения целостности
- •Даталогическая модель
- •Проектирование базы данных "Торговля" Постановка задачи
- •Инициирование проекта (фаза 0)
- •Определение множеств сущностей (фаза 1) Выделение множеств сущностей
- •Описание множеств сущностей
- •Пул сущностей
- •Построение модели уровня сущностей (фаза 2)
- •Концептуальная схема уровня сущностей
- •Построение модели уровня ключей (фаза 3) Разрешение неопределенных связей
- •Пул сущностей
- •Описание связей
- •Определение ключевых атрибутов и доменов
- •Товар в списке цен/e5
- •Описание доменов
- •Описание атрибутов
- •Концептуальная схема
- •Построение полноатрибутной модели (фаза 4)
- •Описание доменов
- •Описание атрибутов
- •Явные ограничения целостности
- •Даталогическая модель
- •Список литературы
- •115409, Москва, Каширское ш., 31
Даталогическая модель
В соответствии с приведенной структурой, внутренняя схема разрабатываемой базы данных представлена в табл. 4.38 – 4.43.
Таблица 4.38
Группа товара/E1
Group
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Код группы |
IdGroup |
Номер |
Integer |
Not null |
PK |
|
Название |
Name |
Имя |
Varchar (50) |
Not null |
AK |
|
Базовый код группы |
IdBaseGrp |
Номер |
Integer |
Null |
FK |
Group; cascade |
Описание |
Description |
Описание |
Varchar (256) |
Null |
|
|
Описание таблицы на SQL:
Create table Group (
IdGroup integer not null,
Name varchar (50) not null,
IdBaseGrp integer,
Description varchar (256),
Primary key (IdClient)
);
Задание внешних ключей, ссылающихся на эту же таблицу, зависит от используемой СУБД. Возможно, потребуется использовать предложение ALTER TABLE (изменить таблицу [1, 16]):
Alter table Group
Foreign key (IdBaseGrp) references Group on delete cascade;
Commit;
Таблица 4.39
Товар/E2
Goods
Имя атрибута |
Имя колонки |
Домен |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Код товара |
IdGoods |
Номер |
Integer |
Not null |
PK |
|
Название |
Name |
Имя |
Varchar (50) |
Not null |
AK1 |
|
Артикул |
Article |
Символический номер |
Varchar (40) |
Not null |
AK2 |
|
Код группы |
IdGroup |
Номер |
Integer |
Not null |
FK |
Group; restrict |
Номер сертификата качества |
Certificate |
Номер |
Integer |
Null |
|
|
Фирма-производитель |
Producer |
Имя |
Varchar (50) |
Not null |
|
|
Описание |
Description |
Описание |
Varchar (256) |
Null |
|
|
Описание таблицы на SQL:
Create table Goods (
IdGoods integer not null,
Name varchar (50) not null,
Article varchar (40) not null,
IdGroup integer not null,
Certificate integer,
Producer varchar (50) not null,
Description varchar (256),
Primary key (IdGoods),
Foreign key (IdGroup) references Group on delete restrict
);
Commit;
Таблица 4.40
Продажа/E3
Sale
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Номер продажи |
IdSale |
Номер |
Integer |
Not null |
PK |
|
Номер списка цен |
IdPriceList |
Номер |
Integer |
Not null |
FK |
Pricelist; restrict |
Дата продажи |
SaleDate |
Дата |
Date |
Not null |
|
|
Время выписки |
Extract |
Время |
Time |
Not null |
|
|
Время оплаты |
Payment |
Время |
Time |
Null |
|
|
Время получения |
Receipt |
Время |
Time |
Null |
|
|
Описание таблицы на SQL:
Create table Sale (
IdSale integer not null,
IdPriceList integer not null,
SaleDate date not null,
Extract time not null,
Payment time,
Receipt time,
Primary key (IdSale),
Foreign key (IdPriceList) references Pricelist on delete restrict
);
Commit;
Таблица 4.41
Список цен/E4
Pricelist
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Номер списка цен |
IdPricelist |
Номер |
Integer |
Not null |
PK |
|
Категория |
Category |
Имя |
Varchar (50) |
Not null |
|
|
Дата |
PLDate |
Дата |
Date |
Not null |
|
|
Описание таблицы на SQL:
Create table Pricelist (
IdPricelist integer not null,
Category varchar (50) not null,
PLDate date not null,
Primary key (IdPricelist),
);
Commit;
Таблица 4.42
Товар в списке цен/E5
PricelistItem
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Номер списка цен |
IdPLItem |
Номер |
Integer |
Not null |
PK.1; FK1 |
Pricelist; restrict |
Код товара |
IdGoods |
Номер |
Integer |
Not null |
PK.2; FK2 |
Goods; restrict |
Цена |
Price |
Денежная сумма |
Decimal (6,2) |
Not null |
|
|
Описание таблицы на SQL:
Create table PricelistItem (
IdPLItem integer not null,
IdGoods integer not null,
Price decimal (6,2) not null,
Primary key (IdPLItem, IdGoods),
Foreign key (IdPLItem) references Pricelist on delete restrict,
Foreign key (IdGoods) references Goods on delete restrict
);
Commit;
Таблица 4.43
Товар в продаже/E6
SaleItem
Имя атрибута |
Имя колонки |
Имя домена |
Тип данных |
Признак обязательности |
Ключи |
Правило удаления |
Номер продажи |
IdSale |
Номер |
Integer |
Not null |
PK.1; FK1 |
Sale; restrict |
Код товара |
IdGoods |
Номер |
Integer |
Not null |
PK.2; FK2 |
Goods; restrict |
Количество |
Qty |
Число |
Integer |
Not null |
|
|
Описание таблицы на SQL:
Create table SaleItem (
IdSale integer not null,
IdGoods integer not null,
Qty integer not null,
Primary key (IdSale, IdGoods),
Foreign key (IdSale) references Sale on delete restrict,
Foreign key (IdGoods) references Goods on delete restrict
);
Commit;
Можно привести еще и схему базы данных:
Группа товара (Код группы, Название, Базовый код группы (FK), Описание)
Товар (Код товара, Название (AK1), Артикул (AK2), Код группы (FK), Номер сертификата качества, Фирма-производитель, Описание)
Продажа (Номер продажи, Номер списка цен (FK), Дата продажи, Время выписки, Время оплаты, Время получения)
Список цен (Номер списка, Категория, Дата)
Товар в списке цен (Номер списка цен (FK1), Код товара (FK2), Цена)
Товар в продаже (Номер продажи (FK1), Код товара (FK2), Количество)