Пример разработки РБД
Пусть необходимо разработать БД где будут учтены: товары, сорта товаров, количество товара, цена товара, дата поступления, дата покупки, фирмы поставщики товаров, покупатели….
Разделим информацию по сущностям.
Первая сущность, (стержневая) назовем ее – «Поставщик», включает в себя следующие объекты.
· Название фирмы поставщика.
· Факс фирмы.
Втораясущность (стержневая) назовем ее – «Товар», включает в себя следующие объекты.
· Вид товара.
· Сорт товара.
Третья сущность назовем ее – «Клиенты», включает в себя следующие объекты.
· Название клиента.
Учитывая назначение БД, нормализуем сущности, и с учетом обеспечения целостности БД, составим структуру реляционных отношений.
| Поставщик | |||||||
| 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; просмотров: 990;

PK_Ф