Химикотехнологичен и металургичен



Дата29.08.2016
Размер180.71 Kb.
#7730


ХИМИКОТЕХНОЛОГИЧЕН И МЕТАЛУРГИЧЕН

УНИВЕРСИТЕТ

гр. София

катедра "ПИИС"




К У Р С О В П Р О Е К Т

Дисциплина „ИИСБД”


Изготвил: . Проверил:

Име, Презиме, Фамилия гл.ас. Б. Славов

Фак №
О


ЦЕНКА:
гр. София

2009г.
СЪДЪРЖАНИЕ

І . Описание на схема за БД 3

Първичен Ключ 4

Вторичен Ключ 6

ІІ. Построяване на Таблици 8

Alter Table 9

Delete Table 9

Insert Into 10

Select 11

С предикат за сравнение 11

С предикат Null 13

С предикат Like 14

С предикат Between 15

С предикат In 15

С предикат Exist 15

III. Заключение 16

В изготвения проект се разглежда работата в магазин от веригата Virgin Megastoresр намиращ се във търговски комплекс в Абу Даби. Предмета на дейност на магазина е продажба на билети, книги, CD, DVD, компютърен софтуеър и др. Разглеждаме SQL база данни за улесняване на персонала при търсене и намиране на определени артикули в базата данни на магазина.



Релационен модел на ДБ

Този модел позволява моделиране на данните. Релацията е група от колонии редове събрани във структура на таблица. Данните се запазват в редове. Всеки ред представлява запис от свързани данни.

Фиг 4-1 предлага преглед на типовете ограниченя, които могат да бъдат създадени. Най – отгре са разположени трите вида команди . Както показва Фиг. 4-1 съществуват 5 различни типа команди: NOT NULL, UNIQUE,

PRIMARY KEY, FOREIGN KEY CHECK. В SQL език UNIQUE команди и PRIMARY

KEY са двете, считащи се за универсални команди, а FOREIGN KEY команди се считат като справочни команди.

PRIMARY KEY или Първичен Ключ
Обикновено това е номер. Това поле е първичният ключ на таблицата. В първичният ключ не се допускат повторения на стойности, защото по този начин би се нарушила уникалността на записа.
Ако полето на първичния ключ на една таблица се съдържа и в друга таблица, за втората то е вторичен ключ.

Преди да се създаде с помощта на компютъра базата от данни, тя трябва да се проектира. Проектирането включва основно броя и вида на таблицата, както и полетата, които ще съдържат всяка таблица. Трябва да се вземат предвид някои съществени особености на релационните база от данни, така че да се постигне максимална простота на работа с данните при пълно съответствие с изискванията на заданието към БД. Преди всичко, всички полета в таблицата трябва да зависят само от първичният ключ, а не от съдържанието на други полета. С други думи, след определянето на полето за първичен ключ, всички останали полета са свързани единствено с него.


Както бе споменато Add UNIQUE и PRIMARY KEY също както UNIQUE са част от уникалните SQL ограничения, позволяващи съществуването на единствини стойности в определена колона, и двата вида могат да бъдат приложени за една или повече колони, и и двата типа могат да бъдат определени като ограничение за колона или таблица. Всъщност PRIMARY KEY, има 2 ограниения, които могат да се приложат само за:
● Колона, която е определена само със първчен ключ PRIMARY KEY не може да съдържа нулеви стойности. Няма значение дали колоната е дефинирана като NOT NULL или не, колоната не може да съдържа нулеви стойности заради първичния ключ (PRIMARY KEY).
● За всякя таблица може да бъде зададен само един първичен ключ (PRIMARY KEY).

Причината за тези ограничения е ролата, която изпълнява Първичния ключ в таблицата (уникален идентификатор). Всяка колона на таблицата трябва да е уникална. Това е важно защото SQL не може да направи разлика между две колони които са еднакви, и така не може да се ъпдейтва или изтрива едната колона без да се направи същото и със другата. Първичния ключ за една Дата База (ДБ) се избира от създаващия ДБ от няколко налиични ключа, наречени candidate key . Това представлява набор от една или повече колони, които определят всеки ред.

Например Фиг. 4-4, при нея едиствния подходящ candidate key във таблица CD_ARTISTS е колоната ARTIST_ID. Така всяка стойност на колоната ще бъде уникална, дори стойностите във колоните ARTIST_NAME и AGENCY да се дублират, реда ще бъде уникален, защото стойността на ARTIST_ID е уникална.

За да е определи Първичния ключ трябва да се използва PRIMARY KEY constraint за да се определи коя колона ще служи за Първичен Ключ.




Например за да се определи Първичния ключ за таблица 4-4 се използва сленото:

CREATE TABLE CD_ARTISTS

( ARTIST_ID INT PRIMARY KEY,

ARTIST_NAME VARCHAR(60),

AGENCY_ID INT );

Този метод създава първичен ключ за колоните ARTIST_ID и ARTIST_NAME.




FOREIGN KEY или Външен Ключ
Външния Ключ се различава от първичния по това, че се отнася за начина по който данните от една таблица са свързани с данните от друга таблица.

На Фиг. 4-5,е показано как FOREIGN KEY трябва да бъде конфигуриран в колоната PUBLISHER_ID във таблицата CD_TITLES.

Когато се създава Външен Ключ трябва да се има впредвид следното:

● Използваните колони трябва да се дефинират първо със UNIQUE или PRIMARY KEY

● FOREIGN KEY може да бъде създаден като колона или таблица. Ако е създаден като колона, може да се включи само една колона. А ако е създаден като таблица може да включва една или повече колони.


Ако искаме да добавим външен ключ към колоната ще използваме следната команда:
{ | } [ NOT NULL ]

REFERENCES [ ( ) ]

[ MATCH { FULL | PARTIAL | SIMPLE } ]

[ ]


Или
CREATE TABLE CD_TITLES

( CD_TITLE_ID INT,

CD_TITLE VARCHAR(60),

PUBLISHER_ID INT REFERENCES CD_PUBLISHERS );


Ако искаме да представим външния ключ като таблица използваме:
[ CONSTRAINT ]

FOREIGN KEY ( [ {, } . . . ] )

REFERENCES [ ( ) ]

[ MATCH { FULL | PARTIAL | SIMPLE } ]

[ ]
Или
CREATE TABLE CD_TITLES

( CD_TITLE_ID INT,

CD_TITLE VARCHAR(60),

PUBLISHER_ID INT,

CONSTRAINT FK_PUBLISHER_ID FOREIGN KEY (PUBLISHER_ID)

REFERENCES CD_PUBLISHERS (PUBLISHER_ID) );



CREATE TABLE
Създаване на таблица ARTISTS
CREATE TABLE ARTISTS

( ARTIST_ID INT,

ARTIST_NAME VARCHAR(60),

ARTIST_DOB DATE,

POSTER_IN_STOCK BOOLEAN );



Създаване на таблици
1. Първата таблица, която създаваме е COMPACT_DISCS. Тя включва 3 колони, 2 от които са INT тип и една VARCHAR(60). Тази таблица ще съдаржа данни за дисковете в наличност. Колоната COMPACT_

DISC_ID ще съдаржа номерата на всяко описано CD. Колоната CD_TITLE ще съдържа действителните имена на CD-та. Колоната LABEL_ID ще съдаржа номера идентифициращи компанията издател.


CREATE TABLE COMPACT_DISCS

( COMPACT_DISC_ID INT,

CD_TITLE VARCHAR(60),

LABEL_ID INT );





3. Последната таблица, която ще създадем е MUSIC_TYPES. Тя включва колоната TYPE_ID, която идентифицира всякя категория музика; и колоната TYPE_NAME, която показва истинските имена на категориите музика.
CREATE TABLE MUSIC_TYPES

( TYPE_ID INT,

TYPE_NAME VARCHAR(20) );
ALTER TABLE
С командата ALTER TABLE мжем а моделираме таблицата по различен начин , примерен модел:
ALTER TABLE

ADD [COLUMN]

| ALTER [COLUMN]

{ SET DEFAULT | DROP DEFAULT }

| DROP [COLUMN] { CASCADE | RESTRICT }
1. Създаваме таблица с име COMPACT_DISC_TYPES, която ще включва колони COMPACT_DISC_ID и TYPE_ID. И двете колони ще са от типа INT.
CREATE TABLE COMPACT_DISC_TYPES

( COMPACT_DISC_ID INT,

TYPE_ID INT );
2 . Изтриваме таблицата от ДБ
DROP TABLE COMPACT_DISC_TYPES CASCADE;
3. Възтановяваме таблицата отново, но този път ще съдържа и трета колона, с име CD_TITLE от типа VARCHAR(60).

CREATE TABLE COMPACT_DISC_TYPES

( COMPACT_DISC_ID INT,

CD_TITLE VARCHAR(60),

TYPE_ID INT );
4. Изтриваме колоната CD_TITLE
ALTER TABLE COMPACT_DISC_TYPES

DROP COLUMN CD_TITLE CASCADE ;


5. Таблицата COMPACT_DISC_TYPESсега съдържа колоните COMPACT_DISC_ID и TYPE_ID.
DELETE
От всички клаузи DELETE е най-простата. Съдържа общо 2 команди, от които само едната е главна.
DELETE FROM

[ WHERE ]


Клаузата DELETE FROM изисква да се покаже от къде точно трябва да се изтрие информацията. Каузата WHERE, която е подобна на тази от UPDATE, изисква да се посочат определени условия. Ако не се прибави WHERE във командата DELETE, ще се изтрият всички редове в таблицата. В тази клауза могат да се изтриват само редове.

Като приложим DELETE за таблицата CD_INVENTORY за да изтрием всички редове използваме:


DELETE FROM CD_INVENTORY;
Ако изкаме да изтрием само опеделена част от таблицата, трябва да включим клаузата WHERE. Например да изтрием редовете където стойността на MUSIC_TYPE е Country:
DELETE FROM CD_INVENTORY

WHERE MUSIC_TYPE = 'Country';



INSERT INTO
INSERT INTO ни позволявя да добавяме различна информация в таблиците от ДБ.
“Inserting Values from a SELECT Statement”

INSERT INTO

[ ( [ { , } . . . ] ) ]

VALUES ( [ { , } . . . ] )


Когато използваме Insert командата, трябва да се спазват следните правила:

● Ако имената на колоната не са означени във клаузата INSERT INTO, тогава за всяка колона трябва да има отделна стойност, и те трябва да са във същия ред във който са дефинирани в таблицата.


● Ако имената на колоните са посочени във командата INSERT INTO, тогава трябва да има точно една стойност за посочена колона, и тези стойности трябва да са във същия ред, в който са дефинирани във INSERT INTO.
● Ттрябва да се въведат стойности за всяка колона в таблицата, освен в колоните, които позволяват нулеви или null сойности или имат дефинирани стойности.
● Трябва да се използва командата NULL (or null) като стойност в VALUES клауза, за да се посочат нулеви стойности за всяка колона, която позволава.
Използваме таблицата CD_INVENTORY:
CREATE TABLE CD_INVENTORY

( CD_NAME VARCHAR(60) NOT NULL,

MUSIC_TYPE VARCHAR(15),

PUBLISHER VARCHAR(50) DEFAULT 'Independent' NOT NULL,

IN_STOCK INT NOT NULL );
Тук се поставят стойности за всяка комона от таблицата CD_INVENTORY
INSERT INTO CD_INVENTORY

VALUES ( 'Patsy Cline: 12 Greatest Hits', 'MCA Records', 32 );


Тук имаме само три стойности, но ни липсва четвъртата, която е MUSIC_TYPE.
INSERT INTO CD_INVENTORY

VALUES ( 'Out Of Africa', null, 'MCA Records', 29 );


За PUBLISHER, и IN_STOCK колоните на таблицата CD_INVENTORY са следните:
INSERT INTO CD_INVENTORY ( CD_NAME, PUBLISHER, IN_STOCK )

VALUES ( 'Fundamental', 'Capitol Records', 34 );


INSERT INTO CD_INVENTORY ( CD_NAME, MUSIC_TYPE, IN_STOCK )

VALUES ( 'Orlando', 'Soundtrack', 5 );


Може да се добавят всички 5 колони наведнъж със клаузата INSERT INTO. Но за това се изисква да се спазват тония брой на стойностите, същия ред на колоните. Следващия пример с INSERT добавя стойностите във всички колони от таблицата CD_INVENTORY:
INSERT INTO CD_INVENTORY ( CD_NAME, MUSIC_TYPE, PUBLISHER, IN_STOCK )

VALUES ( 'Court and Spark', 'Pop', 'Asylum Records', 22 );



SELECT
Клаузата SELECT като цяло изглежда по следния начин:
SELECT [ DISTINCT | ALL ] { * |
[ { ,
} . . . ]

[ WHERE ]

[ GROUP BY ]

[ HAVING ]

[ ORDER BY ]




С предикати за сравнение Compare Data
В предиката за сравнение се включва клаузата WHERE. Този предикат е от типа, който сравнява стойността от дадена колона със зададена стойност.
Ще използваме таблицата CDS_ON_HAND, за да приложим предиката за сравнение.


Първо ще приложим клаузата WHERE, със оператор equal за сравняване на стойностите във колоната CD_TITLE със едно от заглавията на CD:

SELECT CD_TITLE, COPYRIGHT

FROM CDS_ON_HAND

WHERE CD_TITLE = 'Past Light';


Това ще покаже един ред със само 2 стойности:
CD_TITLE COPYRIGHT

---------- ---------

Past Light 1983
Сега променяме SELECT със оператор за не равно not equal:
SELECT CD_TITLE, COPYRIGHT

FROM CDS_ON_HAND

WHERE CD_TITLE <> 'Past Light';
Тук резултата ще е със 6 реда:

Ако приложим оператор за по-малко less than и по – голямо greater than. Може да ги съчетаем със думата AND:


SELECT CD_TITLE, INVENTORY

FROM CDS_ON_HAND

WHERE INVENTORY > 2

AND INVENTORY < 25;


Като резултат от това ще се появят 4 реда:


Ако използваме клауза WHERE, можем да посочим не само една колона:
SELECT CD_TITLE, INVENTORY

FROM CDS_ON_HAND

WHERE INVENTORY > 2

AND INVENTORY < 25

AND RETAIL_PRICE <> 16.99;
Като резултат получаваме следните 3 реда:

Следващия оператор е за по – млако или равно less than or equal to и за по – голямо или равно greater than or equal:


SELECT CD_TITLE, COPYRIGHT

FROM CDS_ON_HAND

WHERE COPYRIGHT >= 1971

AND COPYRIGHT <= 1989;


Излиза ни следният резултат:




С предикат NULL
NULL предикат се използва когато стойността е не дефинирана или не се знае. Този предикат показва, че няма стойност, това е различно от нулева или празна стойност. Този предикат се добавя към клауза WHERE както останалите предикати и се отнася за стойността, за колоната за която се пита.

Използваме таблицата ARTISTS_BIO.

Първо използваме SELECT, кето ни дава стойности NULL за колоната PLACE_OF_BIRTH:
SELECT *

FROM ARTISTS_BIO

WHERE PLACE_OF_BIRTH IS NULL;

Резултатът е 2 реда:



Можем да комбинираме 2 колони PLACE_OF_BIRTH и YEAR_BORN


SELECT *

FROM ARTISTS_BIO

WHERE PLACE_OF_BIRTH IS NULL

AND YEAR_BORN IS NULL;

Резултата е следния:
PERFORMER_NAME PLACE_OF_BIRTH YEAR_BORN

---------------- -------------- ---------

William Ackerman NULL NULL
При предиката NULL може да се използва ключова дума NOT, която да изведе данните обратни на предиката. Например ако скаме да покажем всички редове, които включват налични данни за колоната PLACE_OF_BIRTH, различни от стойност null.

SELECT *


FROM ARTISTS_BIO

WHERE PLACE_OF_BIRTH IS NOT NULL;

Резултатът е следния:




С предикат LIKE
Използвайки предикат LIKE, можем да търсим стойности близки до тези, които знаем.

Предиката LIKE използва 2 специални символа,знака за процент (%) и долна черта ( _ ). Знака за процент представлява нула или повече неизвестни символа, а знака долна черта само един неизвестен симмвол.


Ще използваме предикат LIKE за да намерим заглавие на CD ввключващо думите Best или Greatest. Предиката ще се отнася за колоната CD_TITLE на таблицата COMPACT_DISCS.
SELECT CD_TITLE, IN_STOCK

FROM COMPACT_DISCS

WHERE CD_TITLE LIKE ('%Greatest%')

OR CD_TITLE LIKE ('%Best%');


Резултата ще е три реда, които ще съдържат от колоната CD_TITLE думите Greatest и Best.

С предикат BEETWEN

Предиката BETWEEN се използва със ключова дума AND за да дефинира границата на стойностите, които могат да бъдат включени в търсенето. Когато се използва предикта BETWEEN, трябва да се уточни избраната колона, най – никсата и най – високата стойности.

От таблицата ARTIST_ID:
SELECT ARTIST_ID, ARTIST_NAME

FROM ARTISTS

WHERE ARTIST_ID BETWEEN 2004 AND 2014;
Резултатът е 11 реда.


С предикат IN
Предиката IN позволява дали стойностите от дадена таблица се намират в различен списък в друга колона на друга табллица. В първия случай се уточнява името на колоната, думата IN, и списъка от стойности, които се сравняват с тези от дадената колона. Във втория случай се посочва името на колоната, думата IN, и запитване във връзка с втората таблица.
Ще използваме предиката IN за да изискаме данни от таблица COMPACT_DISCS. Искаме да видим CD побликувани от Decca Record Company. За да разберем кои са тези CD-та, правим запитване отнасящо се за данните от таблица CD_LABELS.
SELECT CD_TITLE, IN_STOCK

FROM COMPACT_DISCS

WHERE LABEL_ID IN

( SELECT LABEL_ID

FROM CD_LABELS

WHERE COMPAMY_NAME = `Decca Record Company` ) ;

Резултата от това запитване ще включва 2 реда. Като и двата реда ще ще иат стойност за LABEL_ID от 833.
С предикат EXIST
Предиката EXISTS е подобен на IN, той сравнява две колони в различни таблици.

Добавяме към предиката EXISTS, запитваща клауза WHERE, която сравнява стойностите на LABEL_ID в таблица COMPACT_DISCS със стойността на LABEL_ID във таблица CD_LABELS.


SELECT CD_TITLE, IN_STOCK FROM COMPACT_DISCS

WHERE EXISTS

( SELECT LABEL_ID FROM CD_LABELS

WHERE COMPACT_DISCS.LABEL_ID = CD_LABELS.LABEL_ID

AND LABEL_ID > 830 );

Заключение

Работата в посочения обект след въвеждането на SQL БД се улесни, и по този начин могат да бъдат обслужени много повече клиенти и за по – кратко време. Това допринесе и за увеличаване на оборота на фирмата след нейното внедряване.



Задание за курсов проект

дисциплина

„ИИСБД”
Курсовият проект трябва да съдържа следните раздели:
I. Заглавна страница.

II. Съдържание.

III.Увод.

IV.Описание на концептуалната схема на БД.

V. Описание на логическата схема на БД с език SQL.

VI.Заключение.
ИЗИСКВАНИЯ:
I раздел:

Класически оформена заглавна страница;


II раздел:

Класическо оформление на съдържание на документ(като на книга, реферат, учебник и т.н.), включващо номерация на страници и раздели;


III раздел:

Кратко описание на предметната област, която ще се разглежда в курсовия проект. Запознаване с предмета на дейност и обектите в нея.


IV раздел:

Построяват се ел.таблици за всеки отделен обект от предметната област с включено описание на идентификаторите(имената) на колоните и типа на данните. Построяват се графично взаимовръзките между полетата(колоните) от таблиците(първични и външни ключове), Към този раздел могат да се включат и входните данни, с които ще се работи при изграждането на лог.схема на език SQL. Този раздел трябва да включва:



  • Обобщена таблица на обектите от предметната област;

  • Графично представяне на всички таблици и взаимовръзките между тях - първични и външни ключове


Примерно съдържание:


  • Обобщена таблица на обектите от предметната област

Име на таблица

Име на колона

Идентификатор

Тип

Кратко описание

Customer

Пореден номер

CustNo

NUMBER

Първичен ключ

...........

.............

...................

................

....................

Orders

Пореден номер

OrderNo

NUMBER

Първичен ключ

Orders

Пореден номер

CustNo

NUMBER

Външен ключ от customer

...........

.............

...................

................

....................




  • Графично представяне на всички таблици и взаимовръзките между тях - първични и външни ключове



V раздел:

Съставят се заявки на език SQL съгласно изградената концептуална схема. Използват се инструкциите на език SQL:



  1. CREATE TABLE

  2. ALTER TABLE

  3. INSERT INTO

  4. UPDATE

  5. DELETE

  6. SELECT

с предикати за сравнение(=,<=,>=,<>,<,>);

с предикат NULL

с предикат LIKE;

с предикат BEETWEN;

с предикат IN;

с предикат EXIST;


забележка:

  • За всяка отделна таблица в проекта се прилагат всички гореописани инструкции на език SQL;

  • Всяка изпълнена инструкция носи определен брой точки.


VI раздел:

Съставя се кратко заключение върху създадения курсов проект. Посочват се ползите от изграждането на БД за дадената предметна област. Какви резултати се очаква да се постигнат от внедряването на базата данни.




ОЦЕНКА на ПРОЕКТА!
Формула за оценяване:

Оценка на проекта = Сума от всички точки по разделите
Всеки раздел получава определен брой точки след като се прегледа съдържанието му за пълнота, логическа свързаност и изпълнение на изискванията дадени по-горе. Оценката на проекта се формира по следния начин:

+ (0.5т.) – Заглавна страница;

+ (0.5т.) – Съдържание;

+ (0.5т.) – Увод;

+ (1.0т.) – Описание на концептуалната схема на БД като:

+ (0.5т.) - Обобщена таблица на обектите от предметната

област;

+ (0.5т.) - Графично представяне на всички таблици и



взаимовръзките между тях - първични и

външни ключове;

+ (3.0т.) – Описание на логическата схема на БД с език SQL като:

+ (0.2т.) за инструкция CREATE TABLE;

+ (0.2т.) за инструкция ALTER TABLE;

+ (0.2т.) за инструкция INSERT INTO;

+ (0.2т.) за инструкция UPDATE;

+ (0.2т.) за инструкция DELETE;

+ (1.8т.) за инструкция SELECT като:

+(0.3т.)-с предикати за сравнение

(=,<=,>=,<>,<,>) като:

+ (0.05т.) за предикат =

+ (0.05т.) за предикат <=

+ (0.05т.) за предикат >=

+ (0.05т.) за предикат <>

+ (0.05т.) за предикат <

+ (0.05т.) за предикат >

+ (0.3т.) - с предикат NULL;

+ (0.3т.) - с предикат LIKE;

+ (0.3т.) - с предикат BEETWEN;

+ (0.3т.) - с предикат IN;

+ (0.3т.) - с предикат EXIST;

+ (0.2т.) за инструкция DROP TABLE;

+ (0.5т.) – Заключение.




Каталог: depts -> piis
piis -> За образователно-квалификационна степен бакалавър за всички специалности
piis -> Отчетна карта на катедра /секция/ пиис към 31. 10. 2012 г
depts -> Конспект по Аналитична химия с инструментални методи за студентите от II курс, специалности бт и ек
depts -> Конспект по дисциплината " аналитична химия с инструментални методи "
depts -> Професионална автобиография доц д-р инж. Михаил Неделчев Камбуров Професионален опит
depts -> Автобиография проф д-р Нели Владова Георгиева
depts -> Конспект по "Основи на генното инженерство"
depts -> Автобиография доц д-р инж. Десислава Антонова Маринкова-Калоянова

Изтегляне 180.71 Kb.

Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница