mller

Page 61

4.4: Operationer

man normalt i resultatet kun vil se en enkelt projektion af den attribut, har man defineret en variant af join, natural join, der foretager en projektion s˚ a kun attributten fra den ene af de to inputrelationer vises. Den generelle join-operator er ./parm , hvor parm fortæller noget om attributnavn til operationen. Natural join, som jo er en forenkling, bruger en anden operator og behøver ikke nævne attributnavne, da der ikke opst˚ ar tvetydighed. Jf. tabel 4.4. Algebraen er er proceduralt sprog, Date (2000b) kalder det foreskrivende 5 i betydningen, at det angiver for computeren, hvordan den skal gøre for at tilfredsstille programmørens informationsbehov. De fleste kendte programmeringssprog er s˚ adan. En algebraisk forespørgsel kan for eksempel verbalt formuleres s˚ aledes: 1. Udfør en join af tupler fra bog og bogemne p˚ a attributten emnenummer 2. Udvælg dernæst de tupler, hvor pris overstiger 500 DKR 3. Projicer emne, titel og pris ud i et resultat

4.4.2

Beroligelse

Den læser, der allerede nu m˚ atte være bekymret over den relationelle algebras for de fleste lidt uvante notation, kan vi berolige med, at algebraen ikke er implementeret andetsteds end i eksperimentel form i uddannelsesprojekter. Databasesystemerne har med standardiseringen i ryggen valgt at implementere den relationelle models operationer i form af relationel calculus, som vi nu skal se p˚ a.

4.4.3

Calculus

I modsætning til algebraen som den relationelle models procedurale sprog, har vi en anden mulighed, den relationelle calculus der bygger p˚ a den matematiske logik (udsagnslogik med sandhedstabeller og prædikater med variabler). Calculus er et ikke-proceduralt, deklarativt sprog. Date (2000b) kalder det beskrivende 6 i betydningen, at det angiver for computeren hvad programmøren gerne vil se i sit resultat. Computeren, mere præcist, databasesystemet, m˚ a s˚ a finde ud af hvordan det tilvejebringes. Programmet formuleres i en enkelt calculus-sætning. Hvis vi skal prøve at formulere ovenst˚ aende algebra-program som calculus, ville det blive noget i retning af: 1. Hent emne, titel og pris for bøger, hvorom det gælder at der eksisterer en bog og et emne med samme emnenummer, og som har en pris p˚ a mere end 500 DKR. Den generelle formulering af en s˚ adan forespørgsel ser s˚ aledes ud: {t1 .Aj , t2 .Ak , ..., tn .Am | CON D(c1 , c2 , ..., cn , cn+1 , cn+2 , ..., cn+m )} Som i almindeligt naturligt sprog vil være: Hent attribut Aj fra tupel t1 , attribut Ak fra tupel t2 , attribut Am fra tupel tn , hvis de findes at opfylde betingelserne c1 , c2 osv. En betingelse ci kan eksempelvis være udtrykt som ti .A = tj .B, m˚ aske et udtryk for at nøgleværdien i den ene tupel skal være lig med nøgleværdien i den anden tupel. Det kan vises, selvom vi her skal afst˚ a fra det, at algebraen og den relationelle calculus er logisk ækvivalente. Ethvert udtryk i det ene sprog vil kunne udtrykkes i det andet. Det betyder blandt andet, at hvis man vil lave en teoretisk beskrivelse af en problemstilling, har man frit valg mellem de to notationsformer. Det er et spørgsm˚ al om personlig stil, hvad man vil vælge. 5 6

Engelsk: Prescriptive. Engelsk: Descriptive.

©nml

61


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.