Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Проектирование таблиц базы данных.




После того как исходную структуру БД мы привели к третьей нормальной форме, у нас получилось в сумме четыре таблицы:

 

Таблица 1

AngPROGRAMMA
Название поля Тип данных Правило целостности
nazvanie VARCHAR2(20) PRIMARY KEY
firma VARCHAR2(20) FOREIGN KEY AngPROIZVODITEL
tip VARCHAR2(20)  
podderjka VARCHAR2(20)  

 

В таблице 1 будет храниться информация о программах. Эта таблица имеет следующие поля:

nazvanie – первичный ключ таблицы - должен быть уникальным;

firma – определяет фирму программы;

tip – определяет тип программы (текстовый редактор, СУБД и т.п.);

podderjka – определяет поддержку тех или иных продуктов.

Используемые типы данных:

VARCHAR2(L) - символьные данные фиксированной длины L байт.

 

Таблица 2

AngPROIZVODITEL
Название поля Тип данных Правило целостности
firma VARCHAR2(20) PRIMARY KEY
strana VARCHAR2(20)  
svyaz NUMBER  

 

В таблице 2 будет храниться информация о производителях. Эта таблица имеет следующие поля:

firma-первичный ключ таблицы- должен быть уникальным;

strana – страна-производитель;

svyaz – информация для связи с фирмой.

Используемые типы данных:

VARCHAR2(L) - символьные данные фиксированной длины L байт;

NUMBER - число.

 

Таблица 3

AngVERSIYA
Название поля Тип данных Правило целостности
nazvanie VARCHAR2(20) PRIMARY KEY FOREIGN KEY AngPROGRAMMA
versiya NUMBER PRIMARY KEY
naznachenie VARCHAR2(20)  
dataV NUMBER  
stoimost NUMBER stoimost>0

 

В таблице 3 будет храниться информация о версиях программы. Эта таблица имеет следующие поля:

nazvanie – первичный ключ таблицы - должен быть уникальным;

versiya – первичный ключ таблицы - должен быть уникальным;

naznachenie – определяет назначение программы;

dataV – определяет год выпуска программы;

stoimost-определяет стоимость продукта, определенно больше ноля.

Используемые типы данных:

VARCHAR2(L) - символьные данные фиксированной длины L байт;

NUMBER - число.

 

Таблица 4

AngTEXNXARAKT
Название поля Тип данных Правило целостности
nazvanie VARCHAR2(20) PRIMARY KEY FOREIGN KEY AngVERSIYA
versiya NUMBER PRIMARY KEY FOREIGN KEY AngVERSIYA
tipSistTreb VARCHAR2(20) PRIMARY KEY
znachenieSistTreb NUMBER  
yazik VARCHAR2(20)  

 

В таблице 4 будет храниться информация о технических характеристиках программы. Эта таблица имеет следующие поля:

nazvanie – первичный ключ таблицы - должен быть уникальным;

versiya – первичный ключ таблицы - должен быть уникальным;

tipSistTreb – первичный ключ таблицы - должен быть уникальным;

znachenieSistTreb – определяет значение каждого системного требования программы;

yazik -определяет язык программы.

Используемые типы данных:

VARCHAR2(L) - символьные данные фиксированной длины L байт;

NUMBER - число.

 

Реализация серверной части.

Создание таблиц.

Запросы SQL для создания таблиц выглядят следующим образом:

CREATE TABLE AngPROGRAMMA

(nazvanie VARCHAR2(20) CONSTRAINT pkluch_nazvanie PRIMARY KEY,

firma VARCHAR2(20) CONSTRAINT fkluch_firma REFERENCES AngPROIZVODITEL(firma),

tip VARCHAR2(20),

podderjka VARCHAR2(20))

 

CREATE TABLE AngPROGRAMMA - данный запрос создаёт таблицу ПРОГРАММА.

Далее в скобках указывается, из каких полей будет состоять данная таблица и какой тип данных каждого из полей:

поле nazvanie является первичным ключом и имеет тип VARCHAR2(20), т.е. строка длиною 20 символов;

поле firma является вторичным ключом, т.е. ссылка на соответствующее поле таблицы 2, и имеет тип данных VARCHAR2(20), т.е. строка длиною 20 символов;

поле tip имеет тип VARCHAR2(20), т.е. строка длиною 20 символов;

поле podderjka имеет тип данных VARCHAR2(20), т.е. строка длиною 20 символов.

Некоторые поля требуют установления ограничений целостности с помощью ключевого слова CONSTRAINT:

PRIMARY KEY – первичный ключ;

CHECK (<ЛВ>) – ограничение поля, где ЛВ – логическое выражение, определяющее это ограничение;

REFERENCES <ИТ> (<ПК>) – внешний ключ для связи с таблицей <ИТ> по ключу <ПК>;

FOREIGN KEY – вторичный ключ, т.е. ссылка на соответствующее поле другой таблицы.

Если таких полей несколько, то они перечисляются в скобках через запятую после ключевого слова CONSTRAINT и указанного ограничения целостности. Данная операция проводится после перечисления полей. Пример в таблицах 3 и 4.

 

Остальные таблицы создаются аналогично:

 

CREATE TABLE AngPROIZVODITEL

(firma VARCHAR2(20) CONSTRAINT pkluch_firma PRIMARY KEY,

strana VARCHAR2(20),

svyaz NUMBER)

 

CREATE TABLE AngVERSIYA

(nazvanie VARCHAR2(20) CONSTRAINT fkluch_nazvanie REFERENCES AngPROGRAMMA(nazvanie),

versiya NUMBER,

naznachenie VARCHAR2(20),

dataV NUMBER,

stoimost NUMBER(5) CONSTRAINT ch_stoimost CHECK (stoimost>0),

CONSTRAINT pkluch_AnzVERSIYA PRIMARY KEY (nazvanie,versiya))

 

CREATE TABLE AngTEXNXARAKT

(nazvanie VARCHAR2(20),

versiya NUMBER,

tipSistTreb VARCHAR2(20),

znachenieSistTreb NUMBER,

yazik VARCHAR2(20),

CONSTRAINT pkluch_AngTEXNXARAKT PRIMARY KEY (nazvanie,versiya,tipSistTreb),

CONSTRAINT fkluch_nazvanie_versiya FOREIGN KEY(nazvanie,versiya)

REFERENCES AngVERSIYA(nazvanie,versiya))

 

В ответ на данные запросы мы получим ответ сервера в виде фразы:

TABLE CREATED – таблица создана.

 

Запросы SQL для удаления таблиц выглядят следующим образом:

DROP TABLE AngTEXNXARAKT.

 

Для изменения данных в полях используется команда ALTER TABLE c добавлением фразы MODIFY, она изменяет следующие значения столбца: тип данных, размер, умалчиваемое значение, ограничение столбца NOT NULL. Во фразе MODIFY достаточно специфицировать имя столбца и модифицируемую часть определения.

Например:

Изменить стоимость программ с пятизначного числа на четырехзначное.

ALTER TABLE AngVERSIYA

MODIFY (stoimost NUMBER(4))

 

Для добавления нового столбца в таблицу используется команда ALTER TABLE c добавлением фразы ADD.

Например:

Добавить ограничение стоимости программ не равной нулю.

ALTER TABLE AngVERSIYA

ADD (CONSTRAINT nn_Stoimost NOT NULL Stoimost)

 

Работа с данными.

Запросы SQL на заполнение таблиц данными выглядят следующим образом.

Заполнение данными таблицы AngPROGRAMMA:

Для заполнения таблицы сначала вводится команда INSERT INTO, затем название таблицы, которую будем заполнять данными. В скобках перечислим название всех полей таблицы.

INSERT INTO AngPROGRAMMA (nazvanie,firma,tip,podderjka)

Затем используется команда VALUES, где в скобках, в кавычках через запятую указываются значения полей:

INSERT INTO AngPROGRAMMA (nazvanie,firma,tip,podderjka)

VALUES('WINDOWS','MICROSOFT','OC','MICROSOFT.RU')

INSERT INTO AngPROGRAMMA (nazvanie,firma,tip,podderjka)

VALUES('STUDENT','TRIADA','game','TRIADA.RU')

INSERT INTO AngPROGRAMMA (nazvanie,firma,tip,podderjka)

VALUES('MACINTOUCH','APPLE','OC','APPLE.RU')

INSERT INTO AngPROGRAMMA (nazvanie,firma,tip,podderjka)

VALUES('DELPHI','BORLAND','PL','BORLAND.RU')

INSERT INTO AngPROGRAMMA (nazvanie,firma,tip,podderjka)

VALUES('WEBCAMERA','TOSHIBA','camera','TOSHIBA.RU')

INSERT INTO AngPROGRAMMA (nazvanie,firma,tip,podderjka)

VALUES('NMAP','LINUX','SS','LINUX.RU')

 

Заполнение таблицы AngPROIZVODITEL:

INSERT INTO AngPROIZVODITEL(firma,strana,svyaz)

VALUES('MICROSOFT','USA',1234567)

INSERT INTO AngPROIZVODITEL(firma,strana,svyaz)

VALUES('TRIADA','Germany',7654321)

INSERT INTO AngPROIZVODITEL(firma,strana,svyaz)

VALUES('APPLE','ENGLAND',9876543)

INSERT INTO AngPROIZVODITEL(firma,strana,svyaz)

VALUES('BORLAND','USA',3456789)

INSERT INTO AngPROIZVODITEL(firma,strana,svyaz)

VALUES('TOSHIBA','Japan',5678900)

INSERT INTO AngPROIZVODITEL(firma,strana,svyaz)

VALUES('LINUX','USA',9119119)

 

Остальные таблицы заполняются аналогично.

 

Для изменения данных используется команда UPDATE, которая изменяет значения столбцов в таблице.

Пример 1:

Изменить дату выпуска путем увеличения на 2 только тех версий программ, стоимость которых меньше 10000 рублей.

UPDATE AngVERSIYA SET dataV=dataV+2

WHERE stoimost<10000

 

Пример 2:

Изменить язык программы на немецкий только тех программ, у которых хотя бы одно значение системных требований меньше 500.

UPDATE AngTEXNXARAKT SET yazik=german

WHERE znachenieSistTreb<500

 

Для удаления данных используется команда DELETE, которая удаляет значения столбцов в таблице.

Например:

Удаление данных тех программ, которые одновременно удовлетворяют двум условиям: версия программы меньше 5 и стоимость не превышает 8000.

DELETE FROM AngVERSIYA

WHERE versiya<5 AND stoimost<8000

 

Для выборки данных используется команда SELECT.

Пример 1:

Получить все сведения о программах, хранящихся в базе.

SELECT * FROM AngPROGRAMMA

 

Пример 2:

Получить названия программ, отсортированных по году выпуска.

SELECT nazvanie FROM AngVERSIYA

ORDER BY dataV

 

Пример 3:

Определить суммарную стоимость тех программ, которые выпущены не позднее 2005 года.

SELECT SUM(stoimost) FROM AngVERSIYA

WHERE dataV>2005

 

Пример 4:

Определить все программы, названия которых содержат комбинацию "NT".

SELECT nazvanie FROM AngPROGRAMMA

WHERE nazvanie LIKE '%NT%'

 

Пример 5:

Представить сведения о программах в виде: название программы, её стоимость; выполнив при этом суммирование стоимости программ с одним названием. Вывести сведения только о тех программах, суммарная стоимость которых больше 10000 рублей.

SELECT nazvanie SUM(stoimost) FROM AngPROGRAMMA, AngVERSIYA

WHERE AngPROGRAMMA. Nazvanie= AngVERSIYA. Nazvanie

GROUP BY nazvanie. AngPROGRAMMA

HAVING SUM(stoimost)>10000

 





Поделиться с друзьями:


Дата добавления: 2017-01-28; Мы поможем в написании ваших работ!; просмотров: 339 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Слабые люди всю жизнь стараются быть не хуже других. Сильным во что бы то ни стало нужно стать лучше всех. © Борис Акунин
==> читать все изречения...

2193 - | 2115 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.