Пример проектирования базы данных
Для демонстрации процесса проектирования баз данных создадим базу данных минеральных удобрений. В качестве источника данных используем сайт компании Фосагро.
На этапе концептуального проектирования определим основные сущности и мощности связей между сущностями. Можно выделить следующие сущности:
- производитель. В данной сущности будет хранится информация о предприятиях производителях минеральных удобрений
- удобрение. Основная сущность базы данных, которая будет агрегировать в себе информацию о свойствах и характеристиках удобрений, хранящихся в других сущностях
- химический состав. Данная сущность предназначена для хранения информации о процентном составе минеральных удобрений
- компоненты удобрений. Основным назначением данной сущности является хранение информации о химических соединениях, входящих в состав того или иного удобрения
- фасовка. В данной сущности агрегируется информация о способах фасовки того или иного минерального удобрения
- совместимость. Данная сущность предназначена для отображения возможности совместного использования разных видов удобрений
- сезонность. Данная сущность предназначена для отображения наиболее эффективного периода использования того или иного минерального удобрения
- свойства удобрения. Одна из основных сущностей базы данных, содержит информацию об основных свойствах того или иного минерального удобрения
- тип почвы. В данной сущности хранится информация о типах почв, для которых применимо то или иное минеральное удобрение
- применимость. Содержит информацию о культурах, для которых может использоваться минеральное удобрение
- преимущества. Содержит информацию об основных преимуществах использования того или итого минерального удобрения
- способ применения. Данная сущность предназначена для отображения рекомендательных способах применения того или иного минерального удобрения
- тип удобрения. Содержит информацию о типах удобрений
- агрегатное состояние. Содержит информацию об агрегатном состоянии того или иного минерального удобрения
- единицы измерений. Содержит информацию о единицах измерений, используемых в сущности химический состав
- единица удобрения. Данная сущность предназначена для агрегации информации о том, какая марка удобрения была произведена на тот или ином предприятии в том или ином агрегатном состоянии и расфасована в ту или иную упаковку
Описанную выше концептуальную модель можно представить следующим образом:
Физическая модель данных:
Таблица БД «FERTILIZER» (Удобрения)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER | SERIAL | Уникальный номер записи удобрение, первичный ключ <pk> |
NAME | VARCHAR(100) | Название |
BRAND | VARCHAR(100) | Марка |
DESCRIPTION | VARCHAR(4000) | Описание |
Таблица БД «FERT_PROPERTIES» (Свойства удобрений)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER | SERIAL | Уникальный номер записи удобрение, первичный ключ <pk>, ссылка на номер записи удобрения (внешний ключ <fk>) |
PH_MIN | NUMERIC(3,1) | Минимальное значение pH |
PH_MAX | NUMERIC(3,1) | Максимальное значение pH |
GRANULE_HARDNESS | VARCHAR(20) | Прочность гранул |
GRANOSOSTAV | VARCHAR(20) | Граносостав |
COLOR | VARCHAR(30) | Окрас |
Таблица БД «SEASONS» (Сезонность)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_SEASON | SERIAL | Уникальный номер записи сущности сезонность, первичный ключ <pk> |
SEASON | VARCHAR(20) | Сезонность |
Таблица БД «FERT_SEAS_REL»
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER | SERIAL | Уникальный номер записи сущности удобрение, часть составного первичного ключа <pk>, ссылка на номер записи сущности удобрения (внешний ключ <fk1>) |
ID_SEASON | SERIAL | Уникальный номер записи сущности сезонность, часть составного первичного ключа <pk>, ссылка на номер записи сущности сезонность (внешний ключ <fk2>) |
Таблица БД «ADVANTAGES» (Преимущества)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_ADVANTAGE | SERIAL | Уникальный номер записи сущности преимущества, первичный ключ <pk> |
ADVANTAGE | VARCHAR(4000) | Преимущество |
Таблица БД «FERT_ADV_REL»
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER | SERIAL | Уникальный номер записи сущности удобрение, часть составного первичного ключа <pk>, ссылка на номер записи сущности удобрения (внешний ключ <fk1>) |
ID_ADVANTAGE | SERIAL | Уникальный номер записи сущности преимущества, часть составного первичного ключа <pk>, ссылка на номер записи сущности преимущества (внешний ключ <fk2>) |
Таблица БД «CHEMICALS» (Компоненты)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_CHEM | SERIAL | Уникальный номер записи сущности компоненты, первичный ключ <pk> |
CHEM_NAME | VARCHAR (30) | Название химического соединения |
CHEM_FORMULA | VARCHAR (30) | Химическая формула |
NOTE | VARCHAR (500) | Примечание |
Таблица БД «UNITS» (Единицы измерений)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_UNIT | SERIAL | Уникальный номер записи сущности единицы измерений, первичный ключ <pk> |
UNIT | VARCHAR (30) | Единица измерений |
Таблица БД «CHEMICAL_COMPOSITION» (Химический состав)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_CHEM_COMP | SERIAL | Уникальный номер записи сущности химический состав, первичный ключ <pk> |
ID_FERTILIZER | SERIAL | Ссылка на уникальный номер записи сущности удобрения (внешний ключ <fk1>) |
ID_CHEM | SERIAL | Ссылка на уникальный номер записи сущности компоненты (внешний ключ <fk2>) |
ID_UNIT | SERIAL | Ссылка на уникальный номер записи сущности единицы измерений (внешний ключ <fk3>) |
AMOUNT | VARCHAR (20) | Количественное значение |
Таблица БД «PURPOSE» (Назначение)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_PURPOSE | SERIAL | Уникальный номер записи сущности назначение, первичный ключ <pk> |
PURPOSE | VARCHAR (4000) | Назначение |
Таблица БД «FERT_PURP_REL»
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER | SERIAL | Уникальный номер записи сущности удобрение, часть составного первичного ключа <pk>, ссылка на номер записи сущности удобрения (внешний ключ <fk1>) |
ID_PURPOSE | SERIAL | Уникальный номер записи сущности назначение, часть составного первичного ключа <pk>, ссылка на номер записи сущности назначение (внешний ключ <fk2>) |
Таблица БД «CULTURES» (Культуры)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_CULTURE | SERIAL | Уникальный номер записи сущности культуры, первичный ключ <pk> |
CULTURE | VARCHAR (20) | Культура |
Таблица БД «FERT_CULT_REL»
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER | SERIAL | Уникальный номер записи сущности удобрение, часть составного первичного ключа <pk>, ссылка на номер записи сущности удобрения (внешний ключ <fk1>) |
ID_CULTURE | SERIAL | Уникальный номер записи сущности культуры, часть составного первичного ключа <pk>, ссылка на номер записи сущности культуры (внешний ключ <fk2>) |
Таблица БД «SOIL_TYPE» (Тип почвы)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_SOIL_TYPE | SERIAL | Уникальный номер записи сущности тип почвы, первичный ключ <pk> |
SOIL_TYPE | VARCHAR (30) | Тип почвы |
Таблица БД «FERT_SOIL_TYPE_REL»
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER | SERIAL | Уникальный номер записи сущности удобрение, часть составного первичного ключа <pk>, ссылка на номер записи сущности удобрения (внешний ключ <fk1>) |
ID_SOIL_TYPE | SERIAL | Уникальный номер записи сущности тип почвы, часть составного первичного ключа <pk>, ссылка на номер записи сущности тип почвы (внешний ключ <fk2>) |
Таблица БД «FERT_CULT_REL»
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_USAGE | SERIAL | Уникальный номер записи сущности способ применения, первичный ключ <pk> |
USAGE | VARCHAR (1000) | Способ применения |
Таблица БД «FERT_USAGE_REL»
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER | SERIAL | Уникальный номер записи сущности удобрение, часть составного первичного ключа <pk>, ссылка на номер записи сущности удобрения (внешний ключ <fk1>) |
ID_USAGE | SERIAL | Уникальный номер записи сущности способ применения, часть составного первичного ключа <pk>, ссылка на номер записи сущности способ применения (внешний ключ <fk2>) |
Таблица БД «COMPATIBILITY» (Совместимость)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER_1 | SERIAL | Уникальный номер записи сущности удобрение, часть составного первичного ключа <pk>, ссылка на номер записи сущности удобрения (внешний ключ <fk1>) |
ID_FERTILIZER_2 | SERIAL | Уникальный номер записи сущности удобрение, часть составного первичного ключа <pk>, ссылка на номер записи сущности удобрения (внешний ключ <fk2>) |
Таблица БД «PACKAGE» (Фасовка)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_PACKAGE | SERIAL | Уникальный номер записи сущности фасовка, первичный ключ <pk> |
PACKAGE | VARCHAR (30) | Фасовка |
Таблица БД «MANUFACTURER» (Производитель)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_MAN | SERIAL | Уникальный номер записи сущности производитель, первичный ключ <pk> |
MAN_OWNER | VARCHAR (100) | ФИО собственника предприятия |
MAN_NAME | VARCHAR (100) | Название производителя |
INN | VARCHAR (12) | ИНН |
OKPO | VARCHAR (10) | ОКПО |
OKVED | VARCHAR (6) | ОКВЭД |
OKATO | VARCHAR (10) | ОКАТО |
OKONH | VARCHAR (6) | ОКОНХ |
REG_ADDRESS | VARCHAR (200) | Юридический адрес |
POST | VARCHAR (200) | Почтовый адрес |
PHONE | VARCHAR (20) | Телефон |
E_MAIL | VARCHAR (200) | Адрес электронной почты |
FAX | VARCHAR (20) | Факс |
DESCRIPTION | VARCHAR (1000) | Описание предприятия |
NOTE | VARCHAR (500) | Примечание |
Таблица БД «AGGREGATE_STATE» (Агрегатное состояние)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_AGG_STATE | SERIAL | Уникальный номер записи сущности агрегатное состояние, первичный ключ <pk> |
AGG_STATE | VARCHAR (50) | Агрегатное состояние |
Таблица БД «FERTILIZER_UNIT» (Единица удобрения)
Атрибут | Тип данных | Пояснение |
---|---|---|
ID_FERTILIZER | SERIAL | Уникальный номер записи сущности удобрение, часть составного первичного ключа <pk>, ссылка на номер записи сущности удобрения (внешний ключ <fk1>) |
ID_MAN | SERIAL | Уникальный номер записи сущности производитель, часть составного первичного ключа <pk>, ссылка на номер записи сущности производитель (внешний ключ <fk2>) |
ID_PACKAGE | SERIAL | Уникальный номер записи сущности фасовка, часть составного первичного ключа <pk>, ссылка на номер записи сущности фасовка (внешний ключ <fk3>) |
ID_AGG_STATE | SERIAL | Уникальный номер записи сущности агрегатное состояние, часть составного первичного ключа <pk>, ссылка на номер записи сущности агрегатное состояние (внешний ключ <fk4>) |