Пример разработки РБД
Пусть необходимо разработать БД где будут учтены: товары, сорта товаров, количество товара, цена товара, дата поступления, дата покупки, фирмы поставщики товаров, покупатели….
Разделим информацию по сущностям.
Первая сущность, (стержневая) назовем ее – «Поставщик», включает в себя следующие объекты.
· Название фирмы поставщика.
· Факс фирмы.
Втораясущность (стержневая) назовем ее – «Товар», включает в себя следующие объекты.
· Вид товара.
· Сорт товара.
Третья сущность назовем ее – «Клиенты», включает в себя следующие объекты.
· Название клиента.
Учитывая назначение БД, нормализуем сущности, и с учетом обеспечения целостности БД, составим структуру реляционных отношений.
Поставщик | |||||||
PK_Ф | |||||||
Фирма | |||||||
Факс | Склад | Учет | |||||
PK_Скл | FK_Скл | ||||||
Товар | FK_Ф | Клиенты | FK_K | ||||
PK_T | FK_Т | PK_K | Дата | ||||
Вид_товара | FK_С | Клиент | Колич | ||||
Дата | |||||||
Сорт | Колич | ||||||
PK_C | Цена_за_ед | ||||||
Сорт_товара | |||||||
FK_T | |||||||
PК_Ф, PK_T, PK_C, PK_Скл, PK_K,первичные ключи в своих таблицах.
FК_Ф, FK_T, FK_C, FK_Скл, FK_K,внешние ключи.
В таблице «Склад», учитывается: какие товары, какого сорта, каким поставщиком, когда и в каком количестве были поставлены на склад, а так же цена за единицу товара.
В таблице «Учет» учитывается: когда, и в каком количестве, клиент приобрел товар. А наличие связи PK_Скл → FK_Скл сразу определяет полную характеристику приобретенного товара (вид, сорт, цена….).
Ниже приведена структура БД в заполненных таблицах.
СТРУКТУРА БАЗЫ ДАННЫХ
(в заполненных таблицах)
Поставщик | Товар | Сорт | Клиенты | |||||||||
PK_Ф | Фирма | Факс | PK_T | Вид_товара | PK_C | Сорт_товара | FK_T | PK_K | Клиент | |||
Викам | 456-34-22 | Яблоки | Голден | Буфет А… | ||||||||
Зенит | 233-45-76 | Груши | Рихард | Ресторан Н… | ||||||||
Грант | 467-12-31 | Апельсины | Шафран | Буфет С… | ||||||||
Зенит | 748-18-66 | Лада | Столовая 1 | |||||||||
Велеса | Ресторан У… | |||||||||||
Нэвел | Столовая 2 | |||||||||||
Браун | ||||||||||||
Валенсия | ||||||||||||
Склад | Учет | |||||||||||
FK_Ф | FK_Т | FK_С | Дата | Колич | Цена_за_ед | PK_Скл | FK_Скл | FK_K | Дата | Колич | ||
02.09.05 | 20.08.05 | |||||||||||
23.08.05 | 09.09.05 | |||||||||||
29.08.05 | 20.08.05 | |||||||||||
04.09.05 | 01.10.05 | |||||||||||
15.08.05 | 22.09.05 | |||||||||||
26.09.05 | 01.10.05 | |||||||||||
17.09.05 | 20.08.05 | |||||||||||
30.10.05 | 10.09.05 | |||||||||||
22.08.05 | 01.10.05 | |||||||||||
05.09.05 | 22.09.05 | |||||||||||
27.08.05 | 01.09.05 | |||||||||||
04.09.05 | 03.09.05 | |||||||||||
02.10.05 | 09.09.05 | |||||||||||
20.08.05 | ||||||||||||
09.09.05 | ||||||||||||
10.09.05 |
Поставщик | ||||||||||||||
PK_Ф |
| |||||||||||||
Фирма | ||||||||||||||
Факс | Склад | Учет | ||||||||||||
PK_Скл | FK_Скл | |||||||||||||
FK_Ф | Клиенты | FK_K | ||||||||||||
FK_Т | PK_K | Дата | ||||||||||||
Дата | Клиент | Колич | ||||||||||||
Колич | ||||||||||||||
Товар | Цена_за_ед | |||||||||||||
PK_T | ||||||||||||||
Вид_товара | ||||||||||||||
Сорт_товара | ||||||||||||||
Поставщик | Товар | Клиенты | ||||||||||||
PK_Ф | Фирма | Факс | PK_Т | Товар | Сорт | PK_K | Клиент | |||||||
Викам | 456-34-22 | Яблоки | Голден | Буфет А… | ||||||||||
Зенит | 233-45-76 | Яблоки | Рихард | Ресторан Н… | ||||||||||
Грант | 467-12-31 | Яблоки | Шафран | Буфет С… | ||||||||||
Зенит | 748-18-66 | Груши | Лада | Столовая 1 | ||||||||||
Груши | Велеса | Ресторан У… | ||||||||||||
Апельсины | Нэвел | Столовая 2 | ||||||||||||
Апельсины | Браун | |||||||||||||
Апельсины | Валенсия | |||||||||||||
Склад | Учет | |||||||||||||
FK_Ф | FK_Т | Дата | Колич | Цена_за_ед | PK_Скл | FK_Скл | FK_K | Дата | Колич | |||||
02.09.05 | 20.08.05 | |||||||||||||
23.08.05 | 09.09.05 | |||||||||||||
29.08.05 | 20.08.05 | |||||||||||||
04.09.05 | 01.10.05 | |||||||||||||
15.08.05 | 22.09.05 | |||||||||||||
26.09.05 | 01.10.05 | |||||||||||||
17.09.05 | 20.08.05 |
Язык SQL
Язык SQL является инструментом, предназначенным для обработки (чтения, удаления, изменения) данных, содержащихся в БД.
SQL - это сокращенное название языка запросов (Structured Query Language). Как следует из названия, SQL является языком программирования, который применяется для организации взаимодействия пользователя с базой данных.
Достоинства SQL
• независимость от конкретных СУБД;
• переносимость с одной вычислительной системы на другую;
• наличие стандартов;
• реляционная основа;
• высокоуровневая структура;
• возможность выполнения специальных интерактивных запросов:
• обеспечение программного доступа к базам данных;
• возможность различного представления данных;
Инструкция SELECT … FROM
По этой инструкции возвращаются данные из базы данных в виде набора записей.
Простейшая инструкция SELECT … FROM
Синтаксис
SELECT имена полей
FROMимена таблиц;
Элемент | Описание |
имена полей | Имена полей, из которых должны быть отобраны данные. Если включить несколько полей, они будут извлекаться в указанном порядке. |
имена таблиц | Имена одной или нескольких таблиц, которые содержат отбираемые данные. |
1. Простейший запрос для одной таблицы.
SELECT поле1, поле2,…,поле7
FROM таблица;
SELECT * (*-означает, что будут показаны все поля)
FROM таблица;
2. Простейший запрос для двух таблиц
SELECT таблица1.поле1, таблица2.поле1, … , таблица1.полеN
FROM таблица1, таблица2;
Примечание: Имя таблицы необходимо применять в том случае: если имена полей в таблицах одинаковы.
Использование псевдонимов таблиц
SELECT таблица1.поле1, таблица2.поле1 SELECT T1.поле1, T2.поле1
FROM таблица1, таблица2; FROM таблица1 T1, таблица2 T2;
Использование псевдонимов полей.
SELECT поле1, поле2, поле3 AS Фамилия
FROM таблица;
Внимание!!!
Имена полей, которые содержат пробелы или знаки препинания, необходимо заключать в квадратные скобки ([ ]). Например
SELECT [Год рождения] SELECT [Год рождения] AS Год
Пример:Простейший запрос для одной таблицы с использованием псевдонима поля.
SELECT [Фамилия студента] AS Фамилия, Оценка
FROM Студенты;
Студенты
Фамилия студента | Ак.Гр | Оценка | Фамилия | Оценка | |
Смирнов | Смирнов | ||||
Михайлов | Михайлов | ||||
Синицын | Синицын | ||||
Панов | Панов |
Применение вычислений в полях.
Арифметические выражения используются для расчета значений вычисляемых полей. При формировании вычисляемых полей следует придерживаться правил написания выражений. Выражение пишется вместо имени поля.
Пример
SELECT Товар, Количество * Цена
FROM Товары;
Товары
Товар | Количество | Цена | Товар | ??????? | |
Шампанское | Шампанское | ||||
Торт | Торт | ||||
Кока-кола | Кока-кола | ||||
Фанта | Фанта | ||||
Пиво | Пиво |
Если вычисляемому столбцу необходимо присвоить имя, то запрос выглядит следующим образом:
SELECT Товар, Количество * ЦенаAS Стоимость
FROM Товары;
Товары
Товар | Количество | Цена | Товар | Стоимость | |
Шампанское | Шампанское | ||||
Торт | Торт | ||||
Кока-кола | Кока-кола | ||||
Фанта | Фанта | ||||
Пиво | Пиво |
Инструкция SELECT...INTO…FROM
До сих пор инструкция SELECT создавала виртуальную таблицу, которая не сохранялась в базе данных. Для создания реальной таблицы как результат обработки существующих таблиц, используется запросSELECT...INTO…FROM
Синтаксис
SELECT поле1, поле2 ,...
INTO новая Таблица
FROM Таблица1,Таблица2…,
Ниже перечислены аргументы инструкции SELECT...INTО ….FROM:
Элемент | Описание |
поле1, поле2…………. | Имена полей, которые следует скопировать в новую таблицу. |
Новая Таблица…….. | Имя создаваемой таблицы. Это имя должно удовлетворять стандартным правилам именования. Если новая Таблица совпадает с именем существующей таблицы, возникает перехватываемая ошибка. |
Таблица1,Таблица2…, | Имена существующих таблиц, из которой отбираются записи. Это может быть одна таблица, несколько таблиц или запрос. |
Дата добавления: 2016-05-25; просмотров: 919;