1,120 matches
-
surogat”. O tabelă poate avea mai multe atribute sau mai multe grupuri de atribute, care să îndeplinească simultan condițiile pentru a fi cheie primară a tabelei. Acestea se numesc „chei candidate”, însă doar cea care este aleasă ca identificator al tabelei este denumită cheie primară. În notația utilizată în paragrafele următoare, cheia primară va fi scrisă cu caractere îngroșate și/sau subliniată cu o linie continuă. 2.1.2. Cheia externă Termenul „cheie externă” (foreign key), folosit de Codd în articolul
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
caractere îngroșate și/sau subliniată cu o linie continuă. 2.1.2. Cheia externă Termenul „cheie externă” (foreign key), folosit de Codd în articolul din 1970, se referă la atributele sau grupurile de atribute care pun în legătură rândurile unei tabele cu rândurile altei tabele. În cazuri excepționale, pot exista chei externe care pun în legătură rândurile unei tabele cu ale ei însăși, privite dintr-o anumită perspectivă. Altfel spus cheia externă este un atribut sau un grup de atribute ale
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
key), folosit de Codd în articolul din 1970, se referă la atributele sau grupurile de atribute care pun în legătură rândurile unei tabele cu rândurile altei tabele. În cazuri excepționale, pot exista chei externe care pun în legătură rândurile unei tabele cu ale ei însăși, privite dintr-o anumită perspectivă. Altfel spus cheia externă este un atribut sau un grup de atribute ale unui tabel definit sub formă de cheie primară în alt tabel (sau chiar în același tabel) și servește
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
primare cu care se află în legătură. Conceptul de integritate referențială este unul din conceptele fundamentale, care asigură coerența datelor stocate în baza de date. În figura 2.2 se observă modul de acțiune a integrității referențiale. Atributul CNPAngajat din tabela Lucreaza nu poate lua valori decât dintre valorile atributului CNPAngajat din tabela Angajat. Cu alte cuvinte, nu se poate înregistra un angajat la un contract dacă angajatul nu este înregistrat în tabela Client. În figura 2.3 este prezentat un
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
unul din conceptele fundamentale, care asigură coerența datelor stocate în baza de date. În figura 2.2 se observă modul de acțiune a integrității referențiale. Atributul CNPAngajat din tabela Lucreaza nu poate lua valori decât dintre valorile atributului CNPAngajat din tabela Angajat. Cu alte cuvinte, nu se poate înregistra un angajat la un contract dacă angajatul nu este înregistrat în tabela Client. În figura 2.3 este prezentat un alt exemplu privind modul de acțiune a integrității referențiale. Atributul CUIClient din
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
de acțiune a integrității referențiale. Atributul CNPAngajat din tabela Lucreaza nu poate lua valori decât dintre valorile atributului CNPAngajat din tabela Angajat. Cu alte cuvinte, nu se poate înregistra un angajat la un contract dacă angajatul nu este înregistrat în tabela Client. În figura 2.3 este prezentat un alt exemplu privind modul de acțiune a integrității referențiale. Atributul CUIClient din tabela Contract nu poate lua valori decât dintre valorile atributului CUIClient din tabela Client. Cu alte cuvinte, nu se poate
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
Angajat. Cu alte cuvinte, nu se poate înregistra un angajat la un contract dacă angajatul nu este înregistrat în tabela Client. În figura 2.3 este prezentat un alt exemplu privind modul de acțiune a integrității referențiale. Atributul CUIClient din tabela Contract nu poate lua valori decât dintre valorile atributului CUIClient din tabela Client. Cu alte cuvinte, nu se poate înregistra un contract cu un client care nu este înregistrat în tabela Client. În notația utilizată în paragrafele următoare, cheia externă
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
contract dacă angajatul nu este înregistrat în tabela Client. În figura 2.3 este prezentat un alt exemplu privind modul de acțiune a integrității referențiale. Atributul CUIClient din tabela Contract nu poate lua valori decât dintre valorile atributului CUIClient din tabela Client. Cu alte cuvinte, nu se poate înregistra un contract cu un client care nu este înregistrat în tabela Client. În notația utilizată în paragrafele următoare, cheia externă va fi subliniată cu linie întreruptă/punctată. 2.1.3. Restricții de
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
modul de acțiune a integrității referențiale. Atributul CUIClient din tabela Contract nu poate lua valori decât dintre valorile atributului CUIClient din tabela Client. Cu alte cuvinte, nu se poate înregistra un contract cu un client care nu este înregistrat în tabela Client. În notația utilizată în paragrafele următoare, cheia externă va fi subliniată cu linie întreruptă/punctată. 2.1.3. Restricții de integritate Datele stocate într-o bază de date trebuie să fie coerente, să corespundă realității. În acest sens, restricțiile
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
îi corespund mai multe valori ale cheii externe din tabelul cu care se află în legătură. m-n (mai mulți la mai mulți) - această relație nu poate fi exprimată ca o relație simplă între două tabele, ci doar prin intermediul unei tabele de legătură, care va „împărți” relația m-n în două legături: 1-n și n-1. 2.1.5. Anomalii de actualizare și anomalii de stocare Pentru a nu deveni un coșmar atât pentru cei care o utilizează, cât și
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
ale aceleiași informații în cadrul aceluiași tabel pot genera multe probleme: - Risipă de spațiu de stocare - chiar dacă problema spațiului de stocare ar fi rezolvată prin achiziționarea unor echipamente de stocare de mare capacitate, o problemă tot rămâne: prelucrările efectuate pe o tabelă de dimensiuni foarte mari poate fi mult mai lentă (în funcție și de SGBD-ul utilizat) decât dacă tabela ar avea dimensiuni mai mici. - Producerea unor erori în date și/sau risipă de timp - repetarea aceleiași informații în mai multe
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
stocare ar fi rezolvată prin achiziționarea unor echipamente de stocare de mare capacitate, o problemă tot rămâne: prelucrările efectuate pe o tabelă de dimensiuni foarte mari poate fi mult mai lentă (în funcție și de SGBD-ul utilizat) decât dacă tabela ar avea dimensiuni mai mici. - Producerea unor erori în date și/sau risipă de timp - repetarea aceleiași informații în mai multe rânduri ale unei tabele poate pune probleme serioase și operatorului care introduce date. În cazul în care nu sunt
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
mari poate fi mult mai lentă (în funcție și de SGBD-ul utilizat) decât dacă tabela ar avea dimensiuni mai mici. - Producerea unor erori în date și/sau risipă de timp - repetarea aceleiași informații în mai multe rânduri ale unei tabele poate pune probleme serioase și operatorului care introduce date. În cazul în care nu sunt puse la dispoziție, prin intermediul interfeței cu utilizatorul, facilități pentru cazurile de repetare a aceleași informații în cadrul mai multor rânduri, operatorul ar trebui să introducă/modifice
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
pune probleme serioase și operatorului care introduce date. În cazul în care nu sunt puse la dispoziție, prin intermediul interfeței cu utilizatorul, facilități pentru cazurile de repetare a aceleași informații în cadrul mai multor rânduri, operatorul ar trebui să introducă/modifice în tabelă fiecare apariție a informației. Spre exemplu, dacă ar introduce o factură cu 100 de produse ar trebui să introducă DataFacturării, CUIClient și DenumireClient de 100 de ori! Nu în ultimul rând, trebuie spus că în cazul în care greșește o
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
factură, într-o singură cantitate). (SerieFactura, NrFactura, CodProdus)→Pret; unei singure combinații de valori din grupul (SerieFactura, NrFactura, CodProdus) îi poate fi asociată o singură valoare din atributul Pret. Aceste dependențe funcționale nu sunt însă și complete (totale), deoarece în tabela ProduseFacturate, avem și următoarea dependență funcțională între un atribut din grupul (SerieFactura, NrFactura, CodProdus) și un alt atribut: CodProdus→DenumireProdus. Dependențele funcționale (SerieFactura, NrFactura, CodProdus) → Cantitate și (SerieFactura, NrFactura, CodProdus) → Pret sunt dependențe funcționale complete doar dacă tabela ProduseFacturate nu
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
deoarece în tabela ProduseFacturate, avem și următoarea dependență funcțională între un atribut din grupul (SerieFactura, NrFactura, CodProdus) și un alt atribut: CodProdus→DenumireProdus. Dependențele funcționale (SerieFactura, NrFactura, CodProdus) → Cantitate și (SerieFactura, NrFactura, CodProdus) → Pret sunt dependențe funcționale complete doar dacă tabela ProduseFacturate nu ar avea în componență și atributul DenumireProdu. Înțelegerea corectă a dependențelor funcționale complete prezintă interes în interpretarea corectă a 2NF, așa cum se va vedea în paragrafele următoare. 3.4. Dependența funcțională tranzitivă Considerăm trei atribute sau grupuri de
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
sau nedescompunerea unui atribut în componente rămâne la latitudinea proiectanților bazelor de date, în funcție de cerințe. Cea de-a doua condiție din 1NF, referitoare la eliminarea grupurilor repetitive de atribute, poate fi înțeleasă prin câteva exemple edificatoare. Considerăm, spre exemplu, următoarea tabelă, în care avem un grup repetitiv de atribute pe orizontală: Student(CNPStudent, Nume, Prenume, Taxa1, Taxa2, Taxa3, Taxa4) Acest mod de exprimare, promovează în principiu ideea că un student plătește patru taxe, însă este limpede că în viața de student
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
expuse anterior: se poate memora un număr nelimitat de taxe plătite pentru un student, prin adăugarea câte unui tuplu (înregistrare) pentru fiecare taxă plătită în parte. Dacă un student nu are nicio taxă plătită el nu va fi înregistrat în tabela TaxaPlatita. Trebuie menționat totuși, că în cazul existenței unui număr foarte mare de atribute, pot exista controverse chiar și pe acest subiect, aparent simplu, cel al eliminării grupurilor repetitive de atribute. Acest lucru poate fi remarcat și din exemplele de
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
CUIClient → DenumireClient. Concluzia este că tabelul Facturi nu respectă 3NF, deoarece între cheia primară și atributul DenumireClient există dependență funcțională tranzitivă. De fapt dependența funcțională tranzitivă prezentată ascunde un alt tabel (cu cheia primară CUIClient), care se află inclus în tabela Facturi. Ca să respecte 3NF, se elimină dependența funcțională tranzitivă din tabelul Facturi și se formează un nou tabel cu dependența funcțională existentă între cele două atribute din tabelul Facturi. Determinantul CUIClient va fi cheia primară a noului tabel. Avem tabelele
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
datelor se prezintă astfel. Aspectele legate de 1NF sunt cu mult mai complexe decât par la prima vedere. În afară de problema atomicității atributelor, expusă în paragraful 3.5, mai apare o problemă la înglobarea tuturor atributelor din dicționarul datelor într-o tabelă universală: stabilirea unei chei primare pentru acest tabel. Trebuie să facem precizarea că, deși la prima vedere interpretarea 1NF ar fi simplă, totuși într-un context practic cu numeroase atribute, pune serioase probleme de interpretare și construcție pentru obținerea unei
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
universală: stabilirea unei chei primare pentru acest tabel. Trebuie să facem precizarea că, deși la prima vedere interpretarea 1NF ar fi simplă, totuși într-un context practic cu numeroase atribute, pune serioase probleme de interpretare și construcție pentru obținerea unei tabele universale. Distingem următoarele situații: Având în vedere că un singur tabel cu toate atributele poate conține foarte multe redundanțe (pe verticală/orizontală) și atribute cu valori nule, este foarte greu sa se stabilească o cheie primară formată dintr-un singur
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
tabel cu toate atributele poate conține foarte multe redundanțe (pe verticală/orizontală) și atribute cu valori nule, este foarte greu sa se stabilească o cheie primară formată dintr-un singur atribut. Acest lucru ar putea fi posibil doar prin descompunerea tabelei universale în mai multe tabele sau dacă baza de date proiectată este foarte simplă. Stabilirea unei chei primare formată ca grup din mai multe atribute poate deveni și ea o problemă. Atributele dintr-o cheie primară trebuie să nu fie
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
baza de date proiectată este foarte simplă. Stabilirea unei chei primare formată ca grup din mai multe atribute poate deveni și ea o problemă. Atributele dintr-o cheie primară trebuie să nu fie nule, ceea ce înseamnă că o cheie a tabelei universale trebuie aleasă în așa fel încât să nu existe valori nule în atributele componente și nici duplicate pe valorile cheii primare. Stabilirea unei chei primare compusă din toate atributele (teoria permite acest lucru), însă problemele expuse la punctul anterior
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
însă problemele expuse la punctul anterior se mențin și chiar se complică. Soluția cheii surogat (vezi paragraful 2.1.1 pentru detalii). Aceasta este o cheie ale cărei valori nu are legături din punct de vedere informațional cu atributele din tabelă, având de fapt valori arbitrare. Ea nu are legătură cu realitatea care se dorește a fi transpusă în baza de date, însă asigură unicitatea rândurilor tabelului și nu are probleme cu valorile nule. Este o soluție de compromis, însă având
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]
-
fiind CantitateVanduta x PretVanzare. Valoare inclusiv TVA este calculat ca fiind Valoare TVA + Valoare fara TVA. Notă: Toate relațiile de calcul determinate de analiza informațională sunt asociate regulilor de gestiune. a) În forma normală unu (1NF) se construiește o singură tabelă (numită și universală) care va conține toate atributele, având în vedere toate aspectele prezentate deja în paragraful 3.5, referitor la formele normale. Aceasta va conține toate atributele, mai puțin pe cele sinonime și pe cele rezultate din calcule pe
Baze de date financiar-contabile by Florin Mihai, Pavel Năstase, Andrei Stanciu, Bogdan Ionescu, Ilie Tamaş () [Corola-publishinghouse/Science/217_a_477]