Проектирование реляционной базы данных
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
вигателя и некоторые другие. Свойства сущностей, которые необходимо учитывать при разработке можно для удобства объединить в таблицу:
Таблица 1.
СущностьСвойстваЗавод№, наименование, бренд, адрес, странаБренд№, названиеМарки№, название, год выпускаСтрана№, названиеПрайс№ Автосалона, Марка, Тип комплектацииАвтосалон№, Название, Адрес, ТелефонКомплектация№, Название
Для разработки схемы данных необходимо установить, какие связи имеются между сущностями и их свойствами и какого типа эти связи.
I. Завод - Бренд
Каждый автозавод может относиться только к одному бренду. Вероятно, к каждому бренду может относиться несколько автозаводов, поэтому между этими сущностями существует связь один-ко-многим (1:M), которую можно изобразить следующим образом:
II. Завод - Марка
Каждый автозавод может выпускать несколько марок автомобилей, каждая марка автомобиля может выпускаться на нескольких автозаводах. Поэтому здесь связь многие-ко-многим
III. Завод - Страна
Каждый автозавод находится в одной стране:
IV. Автосалон - Марка
В каждом автосалоне могут продаваться несколько марок автомобилей разных брендов. Каждая марка автомобиля может продаваться в нескольких автосалонах:
3. РАЗРАБОТКА СХЕМЫ ДАННЫХ
Схему реляционной базы данных изобразим в виде таблиц и связей между ними. При этом таблицы будут являться реализацией сущностей, а поля таблицы - свойствами сущностей. Помимо этого, выделим из перечисленных в таблице 1 свойств такие, которые будут уникальным образом идентифицировать каждый экземпляр сущности (запись в таблице). С учетом выше изложенного схему данных исследуемой предметной области представим на рисунке 1.
Разработанная схема данных содержит восемь таблиц и может быть реализована при помощи SQL. На этапе физического моделирования базы данных описываются типы данных для каждого вида хранимой информации, а также способы и место их физического размещения. При этом необходимо для каждого поля таблицы определить тип данных, который наиболее подходит для хранения соответствующей информации, какие поля не могут содержать пустые значения (NULL).
Типы integer not null, varchar(*) not null, numeric(*,*) not null означают, что поля могут быть длинными целыми числами, не содержащими NULL. Тип varchar(*) означает, что поля содержат строку символов переменной длины. Тип numeric(*,*) означает, что поля содержат масштабируемые целые числа. Тип date означает, что поля содержат календарную дату. Тип money означает что поле содержит денежный тип данных.
Поля, выделенные на схеме данных ключом, будут являться первичными ключами (PRIMARY KEY) таблиц. Поля оканчивающиеся на _id, будут являться внешними ключами, и будут иметь связи с другими таблицами.
Рисунок 1 - Логическая схема реляционной базы данных.
) Таблица Avtozavod(Заводы):
поля id, br_id, strana_id не могут содержать NULL;
поля ID, br_id, strana_id содержат целые числа.
поля id являются первичным ключом, а br_id, strana_id внешним ключем и имеют связь с другими таблицами.
С учетом перечисленных требований оператор SQL, создающий таблицу буде выглядеть следующим образом:
create table avtozavod
(id integer not null,varchar(30),_id integer not null,varchar(70),_id integer not null,key (ID),key (br_id) references brend,key (strana_id) references strana);
2) Таблица brend(Бренды):
поле ID является обязательным для заполнения и первичным ключом.
поле NAZV - строки переменной длины.
С учетом перечисленных требований оператор SQL, создающий таблицу выглядит следующим образом:
create table brend
(ID integer not null,varchar(20) not null,key (ID));
3) Таблица az_m (Завод производитель):
все поля таблицы являются обязательными для заполнения;
поля zavod_id, marki_id содержит целые числа и являются внешним ключом.
create table az_m
(zavod_id integer not null,_id integer not null,key (zavod_id, marki_id),key (zavod_id) references avtozavod,key (marki_id) references marki)
4) Таблица Marki(Марки):
поле id является обязательным для заполнения;
- поле id, god_v содержит целые числа, nazv - строки переменной длины.
С учетом перечисленных требований оператор SQL, создающий таблицу будет выглядеть следующим образом:
create table marki
(id integer not null,varchar(30),_v integer,key(id));
) Таблица price (Прайс Лист):
-Поля as_id, marki_id, equipment_id являются обязательными для заполнения и первичными ключами.
- поля as_id, marki_id, equipment_id содержит целые числа, поле zena денежный тип данных.
Оператор SQL создающий таблицу с учетом этих требований выглядит следующим образом:
create table price1
(as_id integer not null,_id integer not null,_id integer not null,money,key(as_id, marki_id, equipment_id),key(as_id) references avto_salon,key(marki_id) references marki,key(equipment_id) references equipment);
6) Таблица Avto_salon (автосалон):
поле id является обязательным для заполнения;
- поле id содержит целые числа, поле nazv, adres, numer - строка переменной длины. Следующий оператор SQL создает эту таблицу:
Create table avto_salon
(id integer not null,
nazv varchar(30),varchar(70),varchar(30),key (id));
) Таблица equipment (Комплектация):
- поле id является обязательным для заполнения;
поле id содержит целые числа, поле nazv- строка переменной длины. Следующий оператор SQL создает эту таблицу:table equipment
(id integer not null,varchar(30),key (id));
8) Таблица strana (Страна):
поле id является обязательным для заполнения;
поле id содержит целые числа, поле nazv- строка переменной длины.
Следующий оператор SQL создает эту таблицу:
Create table strana
(id integer not null,varchar(30),key (id));
4. ВЕДЕНИЕ БАЗЫ ДАННЫХ
Для использования созданной в предыдущем разделе структуры базы данных разработаем соответствующие операт