ALTE DOCUMENTE
|
|||||
Ce o sa invat?
In aceasta lectie vei invata sa:
De ce sa invat?
Modelul conceptual de date va fi transformat intr-un design al bazelor de date relationale. Aceasta inseamnaca entitatile noastre, atributele, relatiile si identificatorii unici vor fi tradusi ca obiecte intr-o baza de date relationala.
De aceea este necesar sa intelegi structura acestor obiecte.
Spune-mi, arata-mi
O baza de date relationala e o baza de date care e vazuta de utilizator ca o colectie de tabele bidimensionale.
Tabelul de mai jos contine datele angajatilor.
Limbajul structurat de interogare ( SQL=Structured Query Language ) permite accesarea datelor intr-o baza de date relationala intr-un mod eficient. In loc de a cauta in 919g61j fiecare rand inregistrarea pentru angajatul cu numarul 200, folosim urmatoarea afirmatie:
SELECT last_name, department_id
FROM employees
WHERE employee_id = 200;
Rezultatul este urmatorul:
Pentru a gasi toti angajatii din departamentul 90, scriem o instructiune SQL diferita:
SELECT *
FROM employees
WHERE department_id=90;
Rezultatul este urmatorul:
Chei primare
O cheie primara (PK=Primary Key) este o coloana sau un set de coloane care identifica in mod unic fiecare rand intr-un tabel.
Fiecare tabel trebuie sa aiba o cheie primara si aceasta trebuie sa fie unica.
Nici o parte a cheii primare nu poate fi nula!
Un tabel poate avea mai mult de o coloana sau o combinatie de coloane pe post de cheie primara a tabelului. Fiecare dintre acestea se numeste “cheie candidat”.
Selecteaza una dintre cheile candidat pentru a fi cheie primara a tabelului. Celelalte candidate devin chei alternative sau chei unice (UK=Unique Key).
Chei straine
O cheie straina (FK=Foreign Key) este o coloana sau o combinatie de coloane intr-un tabel, care se refera la o cheie primara in acelasi tabel sau in altul.
Daca o cheie straina e parte a unei chei primare atunci acea cheie straina nu poate fi nula!
Integritatea coloanei
O coloana trebuie sa contina numai valori in concordanta cu formatul definit de date al coloanei!
Sumar al regulilor integritatii datelor (Data-Integrity Rules)
Regulile integritatii datelor (cunoscute de asemenea ca si constrangeri “constraints” ) definesc afirmatia relationala corecta pentru o baza de date.
Regulile integritatii datelor asigura faptul ca utilizatorii pot aplica doar operatiile care lasa baza de date intr-o forma corecta.
Tipul Constrangerii |
Explicatia |
Exemplu |
Integritatea entitatii (Entity Integrity) |
O cheie primara trebuie sa fie unica si nici o parte a acesteia nu poate fi nula |
Coloana emp_no din tabelul EMPLOYEES nu poate fi nula |
Integritatea Referentiala (Referential Integrity) |
O cheie straina trebuie sa se potriveasca valorii unei chei primare existente (altfel sa fie nula) |
Valorile pentru coloana dept_no din tabelul EMPLOYEES trebuie sa se potrivesasca unei valori a coloanei dept_no din tebeluul DEPARTMENTS |
Integritatea Coloanei (Column Integrity) |
O coloana trebie sa aiba doar valori in concordanta cu formatul definit de date al coloanei |
Valoarea in coloana balance a tabelului ACCOUNTS trebuie sa fie numerica |
Reguli de integritate definite de utilizator (User-Defined Integrity) |
Datele stocate in baza de date trebuie sa fie in accord cu regulile afacerii |
Daca valoarea coloanei balance din tabelul ACCOUNTS e sub 1.00 trebuie sa trimitem o scrisoare detinatorului contului (aceasta va avea nevoie de programare in plus) |
Ce voi invata?
In aceasta lectie, vei invata:
De ce sa invat?
Cand proiectezi o casa, eventual vei vrea sa o vezi construita. Chiar daca nu faci constructia respectiva, vei avea nevoie sa intelegi termenii folositi de constructori pentru ai ajuta sa transforme proiectul tau in realitate.
Designul initial din data de baza poate fi folosit pentru discutii viitoare dintre designer, administratorul bazei de date si dezvoltatorii aplicatiei.
Spune-mi / Arata-mi
Revizuirea tabelelor relationale
Un tabel este o structura simpla in care datele sunt organizate si stocate. In exemplul de mai jos tabelul EMPLOYEES este folosit pentru a stoca informatiile angajatiilor.
Tablele au coloane si randuri. In exemplu de mai jos, fiecare rand descrie prezenta angajatiilor. Fiecare coloana este folosita pentru a stoca un anumit tip de valori, cum ar fi numarul angajatilor, prenumele si numele.
Coloana cu employee_id este o cheie primara. Fiecare angajat are un numar unic de identificare in acest table. Valoarea in coloana cu cheiile primare distinge fiecare individ.
Payroll_id este o cheie unica. Asta inseamna ca sistemul nu permite doua randuri cu acelasi payroll_id.
Coloana cu cheie straina se refera la un rand din alt tabel. In acest exemplu , department_id se refera la un rand din tabelul DEPARTAMENTS.
In acest caz, noi stim ca Dana Smith lucreaza in departamentul 10. Daca am fi vrut sa stim mai multe despre departamentul Danei Smith, ne-am fi uitat in randul din tabelul DEPARTAMENT care are department_id=10.
Spune-mi / Arata-mi
Modelul conceptual (ER diagram) este transformat intr-un model fizic. Implementarea fizica va fi o baza de date relationala.
Terminologia Maparii
Trecand de la a analiza (modelul conceptual) la design (implementare fizica) inseamna deasemnea schimbarea terminologiei.
O entitate devine tabel
O instanta devine un rand
Un atribut devine o coloana
Un UID primardevine o cheie primara
Un UID secundar devine o cheie unica
O relatie este transformata intr-o coloana cu chei straine si o constrangere a cheii straine.
ANALIZA DESIGN
ER Diagram Design fizic
Entitate Tabel
Instanta Rand
Atribut Coloana
UID primar Cheie primara
UID secundar Cheie unica
Relatie Cheie straina
Primul rand al tabelului diagrama contine numele tabelului si un nume scurt.
Coloana Key Type trebuie sa contina valori ale ”pk” pentru cheia primara, “uk” pentru cheie unica si “fk” pentru coloana cheie straina.Va fi goala daca acea coloana nu este parte a nici unei chei.
Coloana Optionality trebuie sa contina ”*” daca acea coloana este obligatorie sau “o” daca este optionala. Acest lucru este similar cu diagrama entitate.
A treia coloana este pentru coloana
de nume.
Conventii de denumire pentru tabele si coloane
Numele tabelului este pluralul numelui entitatii.
Numele coloanelor este identic cu numele atributelor cu exceptia caracterelor speciale si spatiilor care sunt inlocuite cu linii de subliniere. Pentru numele coloanelor sunt folosite adesea abrevierile nu numele atributelor.
Ex.: first name devine first_name sau fname.
Conventii de nume: Nume scurte
Un nume scurt unic, pentru orice table este folositor la denumirea coloanei cheii straine.
Reguli pentru a forma un astfel de nume:
Pentru numele entitatilor cu mai mult de un cuvant, ia:
primul caracter al primului cuvant
primul caracter al celui de-al doilea cuvant
ultimul caracter al ultimului cuvant.
Ex.: JOB ASSIGNMENT are ca nume scurt JAT.
Pentru numele entitatilor format dintr-un cuvant dar mai mult de o silaba, ia:
primul caracter al primei silabe
primul caracter a celei de-a doua silabe
ultimul caracter al ultimei silabe.
Ex. : EMPLOYEE are ca nume scurt: EPE si CLIENT are ca nume scurt: CET.
Pentru numele entitatiilor formate dintr-o singura silaba dar mai mult decat o litera:
prima litera
a doua litera
ultima litera.
Ex. : FLIGHT are ca nume scurt: FLT.
Restrictii de denumire in Oracle
Numele tabelelor si coloanelor:
trebuie sa inceapa cu o litera
pot contine pana la 30 de caractere alfanumerice
nu pot contine spatii sau caractere speciale cum ar fi “!” dar “$”, “#” si “_” sunt premise.
Numele tabelelor trebuie sa fie unice in contul unui utilizator intr-o baza de date Oracle.
Numele coloanelor trebuie sa fie unice in tabel.
Unele cuvinte au un inteles special intr-o baza de date Oracle si in limbajul de programare SQL. Aceste cuvinte se numesc cuvinte “rezervate”. Este bine sa evitati folosirea lor in denumirea tabelelor sau coloanelor .
Ex.
.: - TABLE
NUMBER
SEQUENCE
ORDER
VALUES
LEVEL
- TYPE
Lista completa poate fii gasita pe Technet (otn.oracle.com).
Terminologia
Termenii cheie folositi in aceasta lectie includ:
transformare
plan
cuvinte rezervate
In aceasta lectie ai invatat:
sa faci distinctie intre modelele de relatie a entitatilor si modelele bazei de date
sa descrii maparea terminologiei intre modelul conceptual si un model de baza de date relationare
sa intelegi si sa aplici conventiile de denumire ale Oracle-lului pentru tabele si coloane folosite in modelele relationare
sa transformi o entitate intr-un tabel de diagrama .
Norme pentru relatiiS
O relatie creaza una sau mai multe chei straine la ambele capete ale tabelului.
Se folosesc prescurtarile numelui tabelului pentru cheile straine.
Cheile straine sunt obligatorii sau obtionale, depinzand de tipul relatiei.
O relatie M:M este rezolvata intersectand-o cu o entitate, care mapeaza la un tabel de intersectie. Acest tabel de intersectie va contine coloanele FK-urilor (chei straine) care se refera la tabelele initiale.
Transformand o relatie 1:1 creezi o cheie straina si o cheie unica (UK). Toate coloanele acestei chei straine sunt de asemenea parti a cheii unice.
Daca relatia este obligatorie la un capat, cheia straina (FK) este creata in tabelul corespondent. In acest exemplu bcp_ code este coloana cheie straina in SODA_BOTTLES care se refera la cheia primara (PK) a coloanei BOTTLE_CAPS. Bcp_code va fi de asemenea unic in tabelul SODA_BOTTLES.
Daca relatia este optionala la ambele capete, poti alege care tabel primeste cheia straina. Nu sunt reguli absolute, dar aici sunt niste indrumari:
Implementeaza cheia straina in tabelul cu cele mai putine randuri pentru a economisi spatiu
Implementeaza cheia straina unde are sens afacerea.
In exemplul urmator, o agentie de inchiriat masini va fi mai interesata de masini decat de spatii, si deci are rost sa pui cheia straina in tabelul CARS. Dar, intr-o afacere cu parcari, telul principal este locul de parcare. Asadar, locul cheii straine va fi in tabelul SPACES.
Daca relatia este obligatorie la ambele capete, ai aceiasi limita in baza de date ca la relatia M:1 care este obligatorie la un capat. Prin urmare, ai nevoie sa scrii un cod aditional pentru a o aplica.
Entitatea care are arcul va mapa un tabel care contine cheile straine ale tabelelor de la „un” capat al relatiei.
Chiar daca relatia in arc este obligatorie la multe capete, cheia straina rezultata (FK) trebuie sa fie optionala (pentru ca una din ele va fi intotdeauna necompletata, nescrisa).
De cand arcul reprezinta relatiile exclusive, este nevoie de codul aditional pentru a impune faptul ca doar una din cheile straine (FK) are o valoare pentru fiecare rand in tabel. Pentru a verifica o constrangere stocata in baza de date se poate realiza foarte usor:
Daca relatiile erau in intregime optionale, vei adauga:
Codul verifica daca exista o valoare pentru id-ul PUBLIC SPACE (spatiul public) (pse_id), atunci coloana pentru id-ul PRIVATE HOME (phe_id) trebuie sa fie goala. Daca id-ul PUBLIC SPACE este nul, atunci trebuie sa fie o valoare pentru id-ul PRIVATE HOME. Daca relatia este complet optionala atunci codul aditional permite ambelor id-uri sa fie nule (PUBLIC SPACE, PRIVATE HOME). (evenimentul nu se tine in nicio locatie).
Termenii cheie utilizati in aceasta lectie include:
o Relatiile netransferabile
o Relatiile cascade barate
o Intersectia entitatii
In aceasta lectie vei invata sa:
redactezi si sa aplici tabelul, coloana, identificatorii, relatia si regulile de constrangere integrale pentru maparea implementarilor supertipului
redactezi si sa aplici tabelul, coloana, identificatorii, relatia si regulile de constrangere integrale pentru maparea implementarilor subtipului
redactezi si sa aplici tabelul, coloana, identificatorii, relatia si regulile de constrangere integrale pentru maparea implementarilor arcelor supertipurilor si subtipurilor
De ce sa inveti?
Un tamplar care iti construieste casa pe care ai visat-o poate presupune ca tu vei
folosi becuri diferite peste tot in casa. Oricum, daca tu nu ii oferi informatii despre locul unde ar trebui instalate anumite becuri, ai putea sa descoperi ca ai un dormitor prea luminat si o bucatarie prost luminata.
Maparea supertipurilor si a subtipurilor asigura ca informatia potrivita sa fie stocata cu fiecare tip.
Spune-mi/Arata-mi
Implementarea supertipurilor: Tabelul singular
Aceasta alegere realizeaza un singur tabel pentru implementarea entitatii supertip si subtipurile sale. Aceasta se mai numeste “implementarea tabelului singular”.
Reguli
1. Tabele: Un singur tabel este creat, independent de numarul subtipurilor.
2. Coloane: Tabelului singular i se atribuie o coloana pentru toate atributele supertipului, cu optionalitatea originala.
Tabelul primeste de asemenea o coloana pentru fiecare atribut ce apartine
Subtipului, dar toate coloanele devin optionale.
In plus, ar trebui creata o coloana obligatorie cu rol de coloana de separare ca sa se faca diferenta intre diferitele subtipuri ale entitatii. Valoarea pe care o poate lua este din setul prescurtarilor de subtipuri (FTE, PTE, OTR). Aceasta coloana de separare este de obicei denumita <table_short_name>_type, in exemplul epe_type.
3. Identificatori: Identificatorii unici se transforma in chei primare si unice.
4. Relatii: Relatiile la nivelul supertipului se transforma ca de obicei. Relatiile la nivelul subtipului sunt implementate ca si coloane optionale de chei straine.
5. Constrangeri de integralitate: O constrangere de verificare este necesara pentru a asigura faptul ca pentru fiecare subtip toate coloanele care provin din atribute obligatorii nu sunt nule.
In modelul entitatii relationale (ER), salariul este obligatoriu pentru angajatii cu norma deplina si rata pe ora este obligatorie pentru angajatii cu jumatate de norma. Cand supertipul ANGAJAT este implementat ca tabel singular in modelul relational, aceste atribute devin optionale. O constrangere de verificare este necesara pentru a impune regulile afacerii modelate in ERD.
In exemplu, codul pentru constrangerea de verificare ar arata asa:
CHECK(epe_type=’FTE’ si salariul nu este nul si hourly_rate este nul si agy_id este nul)
OR (epe_type=’PTE’ si salariul este nul si hourly_rate nu este nul si agy_id nu este nul)
Codul verifica daca este un angajat cu norma intreaga (epe_type=’FTE’), atunci trebuie sa existe o valoare in coloana salariului si coloanele hourly_rate si agy_id trebuie sa fie goale. In schimb, daca este un angajat cu jumatate de norma(epe_type=’PTE’), atunci trebuie sa existe o valoare in hourly_rate si un agy_id, dar la salariu trebuie sa ramana gol.
Selectie de date pentru ANGAJATI
Cand sa alegi tabelul singular/implementarea supertipului?
Implementarea tabelului singular este o implementare comuna si flexibila. Este aceea pe care ai considera-o prima si este relevanta acolo unde:
Majoritatea atributelor sunt la nivel de supertip
Majoritatea relatiilor sunt la nivel de supertip
Regulile afacerii sunt aceleasi pentru subtipuri, la nivel global
Implementarea subtipului: Tabel dublu
Acesta se mai numeste si “implementare a tabelului dublu”. Creezi un tabel
pentru fiecare subtip. Deci, in realitate, ai putea avea mai mult de 2 tabele, daca ai avea mai mult de 2 subtipuri.
Reguli
1. Tabele: Un tabel pentru subtipul de nivel unu.
2. Coloane: Fiecare tabel primeste o coloana pentru toate atributele supertipului cu optionalitatea originala.
3. Fiecare tabel primeste de asemenea o coloana pentru fiecare atribut care apartine subtipului, cu optionalitatea originala.
4. Identificatori: UID-ul primar la nivel de supertip creeaza o cheie primara pentru fiecare tabel. Identificatorii unici secundari ai supertipului devin chei unice in fiecare tabel.
5. Relatii: Toate tabelele primesc o cheie straina pentru o relatie la nivel de supertip, cu optionalitatea originala. Pentru relatiile la nivele de subtip, cheia straina este implementata in tabelul in care a fost mapata. Optionalitatea originala este pastrata.
In exemplu, un tabel separat ar fi creat pentru TRICOURI si PANTOFI.
Cand sa iei in considerare implementarea subtipului
Subtipurile au foarte putine in comun. Exista cateva atribute la nivel de supertip si cateva la nivel de subtip.
Majoritatea relatiilor sunt la nivel de subtip.
Regulile afacerii si functionalitatea sunt diferite intre subtipuri
Tabelele sunt folosite in mod diferit – de exemplu, un tabel este folosit pentru interogatii, in timp ce altul este reinnoit.
O entitate supertip si
subtipurile sale pot fi modelate ca o relatie intre arce.
|
Implementarea supertipului si subtipului (Arc)
Aceasta alegere realizeaza un tabel pentru fiecare entitate. Tabelul supertip are o cheie straina pentru fiecare tabel de subtip. Aceste chei straine reprezinta relatii exclusive. Ele sunt optionale pentru ca doar una dintre ele poate avea o valoare pentru fiecare rand din tabel.
Reguli:
1. Tabele: Se creeaza atatea tabele pentru cate subtipuri sunt, precum si unul pentru supertip.
2. Coloane: Fiecare tabel primeste o coloana pentru toate atributele entitatii pe care se bazeaza, cu optionalitatea originala.
3. Identificatori: UID-ul primar al nivelului de supertip creeaza o cheie primara pentru fiecare dintre tabele. Toti ceilalti identificatori unici devin chei unice in tabelele lor corespunzatoare.
4. Relatii: Toate tabelele primesc o cheie straina pentru o relatie relevanta la nivelul entitatii, cu optionalitatea originala.
Constrangeri de integralitate: Doua coloane aditionale sunt create in tabel, bazate pe supertip. Sunt coloane ale cheilor straine ce se refera la tabelele care implementeaza subtipurile. Coloanele sunt optionale deoarece cheile straine sunt intr-un arc. O constrangere de verificare aditionala este necesara pentru a implementa arcul. Coloanele cu chei straine sunt de asemenea chei unice pntru ca ele implementeaza o relatie obligatorie
Implementarea supertipurilor si subtipurilor
Aceasta alegere produce un tabel pentru fiecare entitate. Tabelul supertip are o cheie straina pentu fiecare tabel subtip. Aceste chei straine reprezinta relatii exclusive. Ele sunt sunt optionale pentru ca doar una dintre ele poate avea o valoare pentru fiecare rand al tabelului.
Reguli:
Coloanele sunt optionale deoarece cheile straine sunt in arc. O constrangere de verificare suplimentara este necesara pentru implementarea arcelor. Cheile straine sunt de asemenea chei unice pentru ca ele implementeaza o relatie obligatorie 1:1.
Cand ai in considerare punerea in aplicare atat a unui supertip cat si a unui subtip (arc)
Aceasta implementare este rar folosita, dar este potrivita cand:
subtipurile au foarte putine in comun si fiecare tabel reprezinta o informatie care poate fi folosita independent.
regulile si modul de functionare a afacerii sunt destul de diferite dintre toate tipurile.
Modul in care sunt utilizate tabelele este diferit.
Terminologie
Termenii cheie folositi in aceasta lectie sunt:
Implementarea supertipurilor
Implementarea subtipurilor
Implementarea arcelor.
In aceasta lectie ai invatat sa
stabilesti si sa aplici un tabel, o coloana, identificatori, relatii, si integritatea regulilor de constrangere pentru maparea implementarii supertipurilor.
stabilesti si sa aplici un tabel, o coloana, identificatori, relatii, si integritatea regulilor de constrangere pentru maparea implementarii subtipurilor.
stabilesti si sa aplici un tabel, o coloana, identificatori, relatii, si integritatea regulilor de constrangere pentru maparea implementarii arcelor supertipurilor si subtipurilor.
Introducere in Aplicatiile Oracle Express (OAE)
Ce voi citi?
In aceasta lectie veti citi despre:
- logati in OAE
- creezi tabelul MUSIC folosind inscriptii dovedite
- introduce cateva exemple de date in tabelul MUSIC creat in aceasta lectie
- interogarea tabelului MUSIC pentru a vedea noile date
- rafinati interogarea
De ce citesc asta?
Tu ai elaborat planurile pentru casa visata si atunci transformi aceasta intr-un model fizic. Urmatorul pas este sa actualizezi constructia casei.Vei avea nevoie de instrumente pentru a face asta.
Aplicatiile Oracle Express (OAE) sunt un instrument care va permite sa construiti tabele in bazele de date Oracle.
In aceasta lectie ati citit despre:
- logati in OAE
- creezi tabelul MUSIC folosind inscriptii dovedite
- introduce cateva exemple de date in tabelul MUSIC creat in aceasta lectie
- interogarea tabelului MUSIC pentru a vedea noile date
- rafinati interogarea
Ce voi invata?
In aceasta lectie, vei invata sa:
• Solicitare tabelul de muzica; sa aplice regulile de SQL pentru a afisa toate coloanele si un subset de coloane specificate de criterii
• Adauga date noi, cu o valoare diferita in 'tip' coloana de la masa MUSIC
• Extindere criterii interogarea SQL pentru a afisa numai acele randuri in tabelul de muzica care au un nou tip
De ce inveti?
Ce se intampla daca de fiecare data cand te-ai imbracat pentru scoala, tu a trebuit sa iei toate hainele tale de la fiecare masa de toaleta si dulapul in casa intreaga ta? S-ar putea sa intarzii la scoala si ai avea cu siguranta o multime pentru a curata sus! Accesarea datelor intr-o baza de date este un proces similar, daca nu va limita ceea ce cautati cu criterii.
In cazul in care regasirea informatiilor de la o baza de date, va trebui de multe ori pentru a gasi un subset de date, pe baza unor criterii specifice. A deveni familiar cu SQL va va ajuta sa obtineti informatiile de care aveti nevoie.
Spune-mi / Arata-mi
Comanda DESCRIBE afiseaza structura tabelului. Sintaxa este:
DESCRIBE <table name>;
SELECT * comanda returneaza toate randurile dintr-un tabel. Sintaxa este:
SELECT * FROM <table name>;
Pentru a reveni un subset de date, sa modifice declaratia SELECT. Sintaxa este:
SELECT nume <column 1, coloana Nume 2, etc.>
DIN <table <nume
UNDE <condition>;
Using the INSERT command, you can add a row of data to the table. The syntax is:
INSERT INTO <table name>
VALUES (value 1, value 2, value 3, etc);
Terminologia
Termenii cheie utilizati in aceasta lectie includ:
Modification
Subset
Syntax
Sumar
• Solicitare tabelul de muzica; sa aplice regulile de SQL pentru a afisa toate coloanele si un subset de coloane specificate de criterii
• Adauga date noi, cu o valoare diferita in 'tip' coloana de la masa MUSIC
• Extindere criterii interogarea SQL pentru a afisa numai acele randuri in tabelul de muzica care au un nou tip
|