day 2 · 2013. 12. 28. · instructor: sanda popescu. sectiunea 10. intelege constrangerile care...

Post on 29-Oct-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

DAY 2

Instructor: Sanda Popescu

Sectiunea 10

Intelege constrangerile care pot

rezulta din nevoia de a pastra

datele si timpul .

Ex : Considera o scoala care are

cateva chioscuri(cabine) cu

trasaturi particulare.Managerul

scolii angajeaza voluntari sa

lucreze in diferite schimburi la

diferite chioscuri. Un chiosc este

pazit de un singur voluntar la un

moment dat. Anumiti voluntari pot

lucra mai multe ore, altii pot lucra

putine ore, depinde de timpul lor

liber.Managerul trebuie sa stie in

avans care timp nu este acoperit

de voluntari

MODELAREA SCHIMBĂRILOR – TIMPUL

Evident: (valoarea)

schimbul “end date”

trebuie sa fie mai

tarziu decat “start

date”

Schimburile nu se

suprapun in timp,

“start time” pentru

un schimb la un

voluntar nu poate fi

intre orice “start

time” si “end time”

al altui voluntar in

aceeasi chiosc

(cabina?) Aceeasi

remarca si pentru

“end time”

“start time” pentru un schimb poate fi

modificat mai devreme, mai putin

cand schimbul a inceput deja

Acesta este un exemplu de

nontransferabilitate conditionala

Modelând acest tip de relaţii de multe ori sunt

implicate unele constrângeri care pot fi greu de

implementat. De exemplu, un assigment(datorie)

start date country poate fi după start date

country şi înainte de end date country. Aceasta

poate fi modelată în baza de date prin

contrângeri de tip CHECK.

Exemple unde se recomanda sa fie

modelate prin constrangeri de tip

CHECK

Exercitiul1. Modelarea timpului

Importanta schimbarii pretului

Schimbarea pretului este considerata

de asemenea necesara in modelarea

afacerii

Ex: Modificarea preturilor intrun

magazin sunt afisate pe o tabla,

atentionandu-te cand sa cumperi si

cand sa vinzi.

Ce factori vei lua in considerare?

Un produs poate avea mai multe preţuri,

depinde la ce moment a fost examinat. Relaţia

barată îmi arată că #start date nu este

suficientă pentru a identifica în mod unic un

preţ, este nevoie şi de #id_product.

ISTORICUL PRETURILOR

Productie - Pret

Deseori afacerile au nevoie

sa pastreze inregistrarile a

schimbarii preturilor .In acest

model, vei intelege ca

fiecare Cumparare(achizitie)

este dintro singura productie.

Pretul care a fost platit

poate fi cautat din

corespondenta datei primei

cumparari si data ultimei

cumparari

Cand un sistem permite utilizatorului sa modifice sau sa

stearga o informatie particulara, te va intreba daca ai

nevoie sa pastrezi valorile vechi (inregistrarile). Acest

lucru se numeste “logging” sau “journaling” (arhiva)

In mod uzual o arhiva consta in informatii privind inceputul si

sfarsitul modificarii valorilor. Bineinteles aceste informatii pot fi

expandate daca tu doresti.

Modificarea brusca sau uzuala a pretului sau inaintea

unei crize anuntate de Rezerva Federala, sunt cateva

lucruri pe care trebuie sa le iei in considerare cand decizi

sa cumperi sau sa vinzi.

Daca pretul combustibilului are un trend ascendent, tu

poti sa iei o decizie in ceea ce priveste tipul de masina

achizitionat avand oportunitatea de a vedea modificarile

anterioare , tu vei sti ce sa faci

Un antreprenor care are un contract de 5 ani

ptr.construirea unui pod, foloseste f.multe

materiale de constructie(ciment,…).Ce se intimpla

daca antreprenorul nu ia in calcul evolutia

preturilor la materiale?

Exercitiul 2.Modelarea pretului

SUD - EST

NORD- VEST

1. Se preiau toate coloanele, se pastreaza

optionalitatea pentru supertype

2. coloanele subtipurilor optionalitate

3. Se adauga o coloana epe_type,pentru a

sti ptr.care subtip introducem date

4. Se transforma relatiile in FK

5. Se adauga o constrangere de tip CECK

ptr. a specifica faptul ca sunt mandatorii

coloanele salary/ hourly_rate

O baza de date relationala permite

tabelelor sa fie relationate dupa un camp

comun.Cel putin 2 tabele pot fi considerate

o baza de date relationala daca impart un

camp comun. In realitate bazele de date

folosite in afaceri au multe tabele, fiecare

tabela impartind un camp comun cu o alta

tabela.

INTRODUCERE IN SQL

Pentru a accesa date din baza

de date, nu ai nevoie sa stii

unde este localizata acea data

localizata fizic, ci trebuie sa

specifici drumul de acces la

tabela

RDBMS - relational

database

management system

SGBD – sistem de

gestiune a bazelor de

date

Declaratiile SQL sunt grupate in cateva

categorii care depind de functiile pe care

le indeplinesc.Pe parcursul acestui curs

vei invata cum sa folosesti limbajul SQL

ca sa folosesti aceste declaratii.

Regasirea datelor dintro baza de date se

face utilizand cuvantul cheie SELECT

Taietura verticala

Taietura orizontala (where)

Obs.: tabelele vor avea o coloana cu acelasi tip

de date( relationare dupa un camp comun)

SECTIUNE 16

Clauza=? Este o parte a unei

declaratii SQL, un cuvant cheie

Ex:- SELECT, FROM,…

Declaratie=? Cel putin 2 clauze

Separator “;” intre clauze, dar

nu este obligatorie folosirea lui

-Prioritatea operatorilor

Pentru a intelege valoarea NULL , trebuie

sa stii ce e si ce nu e NULL.

NULL e o valoare care e inaccesibila,

necunoscuta , neatribuita sau inaplicabila

Uneori tu nu stii valoarea pentru o coloana

Bazele de date relationale folosesc un loc

(placeholder) in care se pastreaza

necunoscutele (NULL)

ATENTIE! Orice expresie aritmetica ,

care are cel putin un operand = NULL

va returna NULL

-Redenumeste coloana

-Este utilizat cu calcule

-Urmeaza imediat dupa numele coloanei

-Poate avea optional cuvantul cheie AS intre

numele coloanei si alias

-Necesita “ “ daca numele alias-ului contine

spatii sau caracetere speciale sau sunt case-

senzitive

-Obs. : implicit numele coloanei va fi afisat in

UPPER CASE si centrat

SECTIUNEA 17

Concatenarea inseamna a conecta

impreuna, in serie.

In SQL, aceasta operatie poate sa

faca legatura dintre coloane,

expresii aritmetice, constante

pentru a crea o expresie

caracteristica

Concatenarea este folosita entru a

putea crea un text (un string)

Aliasul coloanei este util cand

folosim operatorul de concatenare

astfel incat coloanele ascunse nu

apar nu apar implicit in linia

SELECT

Calificatorul DISTINCT afecteaza toate coloanele

listate si va returna toate combinatiile distincte

a coloanelor din lista SELECT

Obs. : nu se foloseste alias in WHERE

[x,y]BETWEEN X AND Y

Echivalent cu

Obs. Atunci cand caracterele

wildcard %, _ fac parte din sirul

cautat se folosesc secventele

ESCAPE (\ , ?, & )

Caracterul utilizat in ESCAPE

reprezinta delimitatorul ce va fi

plasat in fata unui wildcard pentru a

specifica faptul ca acesta nu mai are

rol de caracter special ci de caracter

obisnuit

SECTIUNE 18

Observatii ORDER BY:

-este intotdeauna ultima

- implicit face sortare crescatoare

- este de asemenea posibil ca in clauza

ORDER BY sa fie folosita o coloana care

nu este listata in clauza SELECT

-Se poate folosi aliasul unei coloane

- se poate utiliza si ORDER BY n

(dupa a n a coloana) din lista SELECT

Ex: Order By 2

Ordinea

de

executie

- specifica coloanele

Opereaza pe o singura

linie si returneaza un

singur rezultat

Opereaza pe grupuri de

linii si returneaza un

rezultat pentru fiecare grup

1. What clause restricts rows used by a SQL query?

R. the WHERE clause

2. What is a condition?

R: a proposition on which another proposition depends; is composed

of column names, expressions, constants, and a comparison operator

3. All character strings and date values are enclosed in _______? Give an

example.

R : Single-quotes ‘the cat’ ‘29-SEP-63’

4. On what clause can an alias not be used?

R: an alias cannot be used in the WHERE clause

5. List and describe the two wildcard symbols used with the ESCAPE Option.

R : percentage sign (%) – display all characters after this symbol

underscore(_) – display each individual characters

6. Where in a SELECT statement does the ORDER BY clause go? Give an

example.

R: Last line of a SELECT statement

SELECT *

FROM employees

ORDER BY 1;

EXERCITII RECAPITULATIVE

7. If the ORDER BY clause is not used how is the data displayed?

R: the sort order is undefined

8. What three ways can the sort condition of the ORDER BY clause be written? Give an example of each?

R: an expression, an alias, column position

SELECT employee_id, last_name, salary ‘SAL’

FROM employees

ORDER BY employee_id, ‘SAL’, 2;

9. Create a query to display the last name, salary, and commission for all employees who earn a

commission. Place the results in descending order by salary. Label the column headings.

R :SELECT last_name, salary, commission_pct

FROM employees

WHERE commission_pct IS NOT NULL;

10. Create a query to display the employees’ last name, job id, start date of employees hired between

February 11, 1997 and May 5, 1998. Place the results in order by start date. Label the column headings.

R :SELECT last_name “Last Name”, job_id “Job Title”, hire_date “Start Date”

FROM employees

WHERE hire_date BETWEEN ’11-FEB-97’ AND ’05-MAY-98’

ORDER BY hire_date;

11. Create a query to display all the information about employee King.

SELECT *

FROM employees

WHERE last_name LIKE ‘King’;

12. Create a query to display the last names of all employees where the third letter of the last name is ‘k’

and who have an ‘a’ in their last name.

SELECT last_name

FROM employees

WHERE last_name LIKE ‘_ _k%’

AND last_name LIKE ‘%a%’;

13. Which statement(s) below would likely fail?

SelectT * FROM employees; (two T’s in the select word)

SELECT * FROM “employees” (unless employees created with double quotes)

SELECT * FROM employ-

ees; ( numele tabelei pe 2 randuri)

Select * FROM employees

14. Literal values for text or dates must be enclosed within _single quotes___________.

15. A column may be sorted in an ORDER BY clause by: (circle all true answers)

a column name or expression in the select list.

a column alias in the select list.

a number representing the column position in the select list.

a column found in the data source but not in the select list.

16. (Projection / Selection) is done by listing column names in a select list of a query

17. For a column alias to contain a space or retain case, it must (choose the best answer):

Be enclosed within the ampersand symbol.

Be enclosed with single quotes.

Be enclosed within parenthesis

Be enclosed with double quotes

18. A SQL condition “Where manager id IN (100, 101, 201)” would be equivalent to three compound

conditions using the ( OR / AND ) operator

19. In the LIKE operator, which symbol is used to represent a single text character or numeric digit?("_ “,"/"

"&“, "%" )

20. By default in an ORDER BY clause, where would rows with a null value appear? (beginning of

result set, end of result set, not listed in result set)

21. The following query will return what values?

SELECT employee_id "number", salary "pay"

FROM employees

WHERE employee_id = 103 OR salary = 4000;

All employees plus those with employee id's of 103 whose salary is 4000.

Only employees with employee id's of 103 whose salary is 4000.

Any employee with an employee_id of 103 and also any employee whose salary is 4000.

Employees with an employee_id equal to " number" whose salary values are also equal to "pay".

22. In the following query, what will be evaluated first?

SELECT job_id, salary, hire_date

FROM employees

WHERE salary = 4000 OR job_id = 'AD_PRES' AND hire_date LIKE '03-JUN-04';

job_id = 'AD_PRES' AND hire_date LIKE '03-JUN-04';

salary = 4000 OR job_id = 'AD_PRES

salary = 4000

LIKE '03-JUN-04‘

23. What value(s) could be displayed?

SELECT prefix

FROM phone

WHERE prefix BETWEEN 360 AND 425

OR prefix IN(515, 206, 253)

AND BETWEEN 555 AND 904);

625

902

410

499

24. Which query will display of all employees whose last names start with "S" and have an 'ae'

anywhere in their last name?

a) SELECT last_name

FROM employees

WHERE last_name LIKE '_S%ae%';

b) SELECT last_name

FROM employees

WHERE last_name LIKE 'S_ae%';

c) SELECT last_name

FROM employees

WHERE last_name LIKE 'S&ae&';

d) SELECT last_name

FROM employees

WHERE last_name LIKE 'S%ae%';

?

top related