ansatt (ansnr)
DESCRIPTION
Fødselsdato (dmå). er født. har lønn. Ansatt (ansnr). Beløp (NKr)+. Telefon (tlfnr). har. har betalt skatt. Fødselsdato (dmå). er født. har lønn. Ansatt (ansnr). Beløp (NKr)+. Telefon (tlfnr). har. har betalt skatt. Eksempel på relasjonsskjema. - PowerPoint PPT PresentationTRANSCRIPT
Hopp til første side
Ansatt(ansnr)
Beløp(NKr)+
Telefon(tlfnr)
Fødselsdato(dmå) er født
har
har lønn
har betalt skatt
Ansatt(ansnr)
Beløp(NKr)+
Telefon(tlfnr)
Fødselsdato(dmå) er født
har
har lønn
har betalt skatt
Hopp til første side
Ansatt ( ansnr , fdato, lønn, [skatt] )
Telefon ( ansnr , tlfnr )
*Nettolønn ( ansnr , netto ) ::= ansnr , lønn - skatt from Ansatt
Eksempel på relasjonsskjema
Hopp til første side
create table Ansatt( ansnr integer primary key, fdato date not null
check ( fdato between ’1920-01-01’ and CURRENT_DATE ),
lønn decimal(9,2) not null, skatt decimal(9,2) )
create table Telefon( ansnr integer references Ansatt, tlfnr char(15) not null,
primary key (ansnr , tlfnr) )
create view Nettolønn (ansattnr, netto) asselect ansattnr, lønn - skattfrom Ansatt
Hopp til første side
Operatorer på sett/mengderFor å :
Union A B - slå sammen 2 mengderSnitt A B - finne felles undermengdeDifferanse A - B - finne unik undermengde i A
Hva representerer mengdene A og B ?
Krever at A og B er union-kompatible :• like mange kolonner• korresponderende domener
Kartesisk produkt (cross join) A x B
For å generere alle parkombinasjoner av elementene fra A og B
Hopp til første side
Operatorer på tabeller
Seleksjon T where c Utvalg av rader som tilfredsstiller c
Projeksjon T[ a,b,...] Utvalg av kolonnene a,b,... med repeterte rader fjernet.
Join A x B where A.a B.bKombinere kolonner fra forskjelligetabeller ved sammenligning av kolonnene a og b.
Natural join A B Sammenligner med = på kolonne medfelles navn (og domene). Assosiativ
Divisjon A B Finner hvilke rader i A er assosiert med alle rader i B
Hopp til første side
Structured Query Language Definere datastruktur
Implementere relasjonsskjema Tabellskjema Beskrankninger Utledninger
Spørre etter informasjon i databasen Oppdatere og vedlikeholde database For relasjonelle databaser Deklarativt, ikke prosedyre språk Forskjellige versjoner av standard
Hopp til første side
Relasjonsalgebra vs SQL
T[a,b,...] select distinct a,b,... from TT where c select * from T where cT[a,b,...] where c select distinct a,b,... from T where c
select a,b,... from T where c
AxB where A.aB.b select * from A join B where A.aB.bA B select * from A natural join B
Union select ... union select ...Snitt select ... intersect select ...Differanse select ... except select ...
Hopp til første side
JoinAa1a2a3a3
Bb1b1b2b4
Bb1b2b2b3
Cc1c2c3c4
Aa1a2a3a3a4?
Bb1b1b2b2b4b3
Cc1c1c2c3?b4
1
23
select * from R1 natural join R2
select * from R1 natural left join R2select * from R1 natural right join R2select * from R1 natural full join R2
R1: R2 : R1 join R2 :
1
1+21+31+2+3
Inner join
Outer join
Hopp til første side
Beskrankninger
Entydighet primary keyunique
Totale roller not nullreferences
Andre check ( betingelse )i noen tilfeller : spesialdesignet kode
Hopp til første side
Rmap prosedyre
2 hovedsteg :• Faktatyper med sammensatt entydighetsbeskrankninger mappes til egne tabeller.• Faktatyper med funkjsonelle roller tilknyttet samme entitetstype, grupperes inn i samme tabell, med entitetstypen sin identifikator som nøkkel.
Prioritering : Korrekthet, klarhet, effektivitet
Mål :• Unngå redundans.• Minimalisere antall tabeller