Отчёт по лабароторным работам
.doc
Детали узла _______
Наименование устройства_______ Серийный номер_______
Шифр узла_______ Стоимость_______
Наименование детали |
Код детали |
Количество |
Материал |
|
|
|
|
Запросы
-
Составить список деталей, содержащих драгоценные металлы.
-
Составить список устройств, включающих узлы, содержащие болты и гайки.
-
Определить узлы, среднее количество деталей, в которых больше 10.
-
Определить устройства, содержащие драгоценные металлы, стоимость которых превосходит 3000 руб.*
-
Удалить информацию о деталях содержащих титан.
-
Добавить информацию о детали.
-
Заменить стоимость в рублях на стоимость в долларах.
Выделение информационных элементов.
Выделим информационные элементы в документе «Список междугородних телефонных переговоров». Целесообразно имена элементов задавать латинскими буквами.
Стоимость –stoimost- является вычислимым полем.
Серийный номер устройства - sernomustr
Наименование устройства - naimenustr
Шифр узла - shifruzla
Наименование детали - naimendet
Код детали - koddetali
Количество деталей -kolvodet
Материал -material
Введем также элементы Наименование узла-naimuzla
Построение функциональных зависимостей.
Основной ключ:
-
зависимости от основного ключа: (fd1) sernomustr, shifruzla, koddetali-> naimustr,ctoimost,naimendetali,kolvodet,material, naimuzla
-
Частичные зависимости: (fd2) koddetali->naimendet, material;
(fd3)sernomustr->naimenustr,ctoimost;
(fd5)shifruzla-> kolvodet,koddetali, naimenuzla
-
Транзитивные зависимости: (fd4)naimenustr->shifruzla.
Нормализация
-
Sermon
ustr
Naimen
det
Kod
detali
material
ctoimost
Naimen
ustr
Shifr
Uzla
Naimen
uzla
Kolvo
det
Fd1
Fd2
Fd3
Fd4
Fd 5
После нормализации схема данных получила следующий вид:
ER – диаграмма
Запросы:
-
SELECT KodDetali.koddetali, KodDetali.naimendet, KodDetali.mater
FROM KodDetali
WHERE (((KodDetali.mater)="Золото" Or (KodDetali.mater)="Серебро" Or (KodDetali.mater)="Платина"));
2. SELECT SerNomUstr.sernomustr, SerNomUstr.naimustr, ShifrUzla.shifruzla, KodDetali.koddetali, KodDetali.naimendet
FROM SerNomUstr, KodDetali INNER JOIN ShifrUzla ON KodDetali.koddetali = ShifrUzla.koddetali
WHERE (((KodDetali.naimendet)="Болт" Or (KodDetali.naimendet)="Гайка"));
3. SELECT ShifrUzla.shifruzla, Avg(ShifrUzla.kolvodet) AS [Avg-kolvodet]
FROM ShifrUzla
GROUP BY ShifrUzla.shifruzla
HAVING (((Avg(ShifrUzla.kolvodet))>10));
4. SELECT SerNomUstr.sernomustr, NaimUstr.naimustr, KodDetali.mater, SerNomUstr.stoimost
FROM KodDetali INNER JOIN ((SerNomUstr INNER JOIN (NazvanieUzla INNER JOIN NaimUstr ON NazvanieUzla.shifruzla = NaimUstr.shifruzla) ON SerNomUstr.sernomustr = NaimUstr.naimustr) INNER JOIN ShifrUzla ON NazvanieUzla.shifruzla = ShifrUzla.shifruzla) ON KodDetali.koddetali = ShifrUzla.koddetali
WHERE (((KodDetali.mater)="Золото" Or (KodDetali.mater)="Серебро" Or (KodDetali.mater)="Платина") AND (([SerNomUstr]![stoimost])>3000));
5. DELETE KodDetali.mater, KodDetali.naimendet, KodDetali.koddetali
FROM KodDetali
WHERE (((KodDetali.mater)="Титан"));
6. Для полноценного добавления новой детали во все таблицы было создано два запроса:
INSERT INTO KodDetali ( koddetali, naimendet, mater )
SELECT NovaiaDetal.koddetli, NovaiaDetal.naimdet, NovaiaDetal.mater
FROM NovaiaDetal;
INSERT INTO ShifrUzla ( kolvodet, shifruzla, koddetali )
SELECT NovaiaDetal.kolvodet, NovaiaDetal.sifruzla, NovaiaDetal.koddetli
FROM NovaiaDetal;
7.UPDATE SerNomUstr SET SerNomUstr.stoimost = [SerNomUstr]![stoimost]*25;