
- •Глава 1. База данных
- •1.1. База данных
- •1.2.Проблемы определения
- •1.3.Сверхбольшие базы данных
- •Глава 2 проектирование бд
- •2.1. Этапы проектирования данных
- •2.2. Нормализация баз данных
- •2.3. Типичная база данных до нормализации
- •2.4. Логическое проектирование базы данных
- •2.4.1. Первая нормальная форма
- •2.4.2. Вторая нормальная форма
- •2.4.3. Третья нормальная форма
- •Глава 3. Учёт сведений о проданных путёвках
- •3.1. Постановка задачи.
- •3.2. Описание проводимой работы. Создание таблиц и связей.
- •3.3. Запросы.
- •3.4. Формы, отчет и запросы.
2.2. Нормализация баз данных
Нормализация представляет собой процесс, направленный на уменьшение избыточности информации в базе данных. Кроме самих данных, в базе данных также могут быть нормализованы различные наименования, имена объектов и выражения. Нормализация — это процесс, направленный на уменьшение избыточности информации в реляционной базе данных.
2.3. Типичная база данных до нормализации
Ненормализованная база данных содержит информацию в одной или нескольких различных таблицах; при этом создается впечатление, что включение данных в ту или иную таблицу не обусловлено никакими видимыми причинами. Такое положение дел может оказывать негативное влияние на безопасность данных, рациональное использование дискового пространства, скорость выполнения запросов, эффективность обновления базы данных и, что, наверное, является наиболее важным, на целостность хранимой информации. База данных перед нормализацией представляет собой структуру, которая логически еще не разбита на более управляемые таблицы меньшего размера. На рис. 4.1 показана используемая в этой книге база данных до ее нормализации.
COMPANY_DATABASE |
|
emp_id last_name first_name middle_name address city state zip phone pager position date_hire pay_rate date_last_raise |
cust_id cust_name cust_address cust_city cust_state cust_zip cust_phone cust_fax ord_num qty ord_date prod_id prod_desc cost |
Рис.4.1База данных до нормализации
2.4. Логическое проектирование базы данных
При проектировании базы данных потребностям конечного пользователя должно быть уделено самое пристальное внимание. Не забывайте, что в конце концов база данных предназначена именно для него. Вы обязаны обеспечить конечному пользователю максимальные удобства при использовании им внешнего интерфейса (программы, которая предоставляет пользователю до-ступ к базе данных), однако всего этого, также как и оптимальной производительности системы, вряд ли можно добиться без учета его потребностей. Далее мы приводим некоторые соображения, которые обязательно следу-ет принимать во внимание при проектировании базы данных. Итак, вы четко должны представлять себе следующее:
Какая информация должна храниться в базе данных?
Каким образом пользователь будет обращаться к базе данных?
Какие привилегии требуются для того или иного пользователя?
Каким образом информация должна быть организована в базе данных?
К каким данным происходит наиболее частое обращение?
Каким образом данные связаны между собой?
Какие меры следует предпринять, чтобы обеспечить достоверность хранимой информации?
2.4.1. Первая нормальная форма
|
EMPLOYEE_TBL |
|
COMPANY_DATABASE |
|
CUSTOMER_TBL |
|||
|
|
emp_id last_name first_name middle_name address city state zip phone pager position date_hire pay_rate date_last_raise |
|
emp_id last_name first_name middle_name address city state zip phone pager position date_hire pay_rate date_last_raise |
cust_id cust_name cust_address cust_city cust_state cust_zip cust_phone cust_fax ord_num qty ord_date |
|
cust_id cust_name cust_address cust_city cust_state cust_zip cust_phone cust_fax ord_num qty ord_date |
|
|
|
|
|
|
prod_id prod_desc cost |
|
PRODUCTS_TBL |
|
|
|
|
|
|
|
|
prod_id prod_desc cost |
Рис. 4.2. Первая нормальная форма
Как видите, для построения первой нормальной формы нам потребовалось разбить данные на логические составляющие (таблицы), каждая из которых имеет первичный ключ и гарантирует отсутствие повторяющихся групп данных. Теперь вместо одной большой таблицы у нас есть несколько более управляемых таблиц меньшего размера: EMPLOYEE_TBL, CUSTOMER_TBL и PRODUCTS_TBL. Как правило, первичный ключ указывается в списке столбцов таб-лицы первым; в нашем случае первичными ключами являются, соответственно, столбцы EMP_ID, CUST_ID и PROD_ID.