”datalog & sql” - cs.hut.fi · (deductive database) datalog: lyhyt kehityshistoria 1/2. 6...
TRANSCRIPT
![Page 1: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/1.jpg)
”DataLog & SQL”
HOPL TKK, marraskuu ’09
Sami El-Mahgary
Tietokannan hakukielet: esitelmä
![Page 2: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/2.jpg)
2
• Osa I Lyhyt katsaus DATALOG:iin
• Osa II Katsaus SQL:n kehitykseen
Tietokantakehityskieliä:• Osa IIIA Katsaus Paradox
tietokantakieleen (4. GL)
• Osa IIIB Katsaus Delphiin
![Page 3: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/3.jpg)
3
Kehitysvaihe Huomatuksia
2GL Assembler Ei enää käytössä
3GL Perinteiset algoritmiset/proseduraaliset kielet
C/C++, Java, Pascal, Python.
4GL Ylemmän tason ohjelmointikielet
Esim. SQL, Datalog, Focus, sekä tietokantasovelluskehittimet ja kyselykielet. Nopeuttavat ohjelmointia.5GL Ongelman
määrittelykielet (declarative prog. Languages)
Prolog, CLP(R) sekä OPS5(Asiantuntijajärjestelmät)
Entäpä nykyiset Visuaaliset sovelluskehittimet (Delphi, Visual Basic, Visual C++) ?
Luultavasti 4GL, jotkut voivat lajitella omaan luokkansa.
Osa I. DATALOG/SQL sijoittuminen..
![Page 4: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/4.jpg)
4
5 GL joidenkin mielestä tarkoittaa ’luonnolisia kieliä’:
![Page 5: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/5.jpg)
5
(vuosi) Kehitysvaihe Huomatuksia
(1973) Alain Colmerauer ja työryhmä julkaisevat Prologin raportin.
(1974) Robert Kowalski julkaisee paperin ”Predicate Logic as a Programming Language”
Oivallus, että logiikasta on ohjelmointikieleksi. Mukana myös A. Colmerauer:in ajatuksia.Logiikka + Kontrolli=Algoritmi
(1977) Käsitys logiikkaohjelmoinnin sekä tietokantojen yhdistämisestä syntyy kongressissa Ranskassa (Toulouse).
Hervé Gallaire, Jack Minker, Jean-Marie Nicolas järjestämä kongressi toteaa: logiikka & tietokanta ovat oma aihepiirinsä: käsitys päättellytietokannasta (deductive database)
DATALOG: Lyhyt kehityshistoria 1/2
![Page 6: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/6.jpg)
6
(vuosi) Kehitysvaihe Huomatuksia
(1978) John Lloyd, Foundations of Logic Programming
Logiikkaohjelmoinnin merkkiteoksia.
(1978) H. Gallaire & J. Minker (eds.) , Logic & Databases
Tietokannan formalisointi logiikan puitteissa.
(1980-luvun puoliväli) DATALOG nimitys, peräisin tutkijaryhmältä
vertaa Wikipedia, jonka mukaan 1 hlö nimesi kielen.
(1989) Stefano Ceri et al, ”What you always wanted to know About Datalog” (Transct. in Knowledge Eng.)
Datalogia tutkittu laajasti v. 1985-1989, vakiintunut asema tutkijoiden keskuudessa.
DATALOG: Lyhyt kehityshistoria 2/2
![Page 7: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/7.jpg)
Deklaratiivisen ohjelmoinnin etuja.
7
Ei varsinaista proseduuria, ei muistin-viittaustoimintoja, jne. Ohjelma yksinkertaistuu.
“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”
- Tony Hoare (Turing palkinto v. 1980)
![Page 8: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/8.jpg)
8
DATALOG: Viisi Faktaa • Hakukieli tietokantaan (query
language).
• Deklaratiivinen kieli (kuten Prolog ja SQL).
• Syntaksi on osajoukko Prologista .
• Datalog-tulkki osaa päätellä (ETEENPÄIN KETJUTUS) uusia faktoja lähtötiedoista.
• Ei käytännössä kaupallisia toteutuksia, tutkijoiden kielenä (toy language).
![Page 9: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/9.jpg)
9
Perustuu logiikkaohjelmaan: kokoelma faktoja (facts, extentional database) sekä sääntöjä (rules).
Esim. Predikaatista: OnSuoritettavaEnnen (X,Y )
Luetaan ’X’ suoritetaan ennen ’Y’:tä.
• Parametrien määrä predikaatissa aina vakio (tässä 2).
• Muuttuja merkitään Isolla alkukirjaimella, vakiot pienellä.
• Predikaatti OnSuoritettavaEnnen vastaa tietokannan relaatiota.
Esimerkki säännöstä: Esitieto (X,Y ) :- OnSuoritettavaEnnen
(X,Y ) .
joka vastaa logiikassa merkintää: Esitieto (X,Y ) ← OnSuoritettavaEnnen
(X,Y ) .
DATALOGin perusteita
![Page 10: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/10.jpg)
10
DATALOG OHJELMA (1/3)
Määritellään ohjelma, joka koostuu säännöistä. Rekursio OK.
Esitieto (X, Y ) :- OnSuoritettavaEnnen (X, Y ).
Esitieto(X, Y) :- OnSuoritettavaEnnen (X , Z ) ,
Esitieto(Z, Y).
Pilkkuerotin ’,’ ilmaisee JA-operaation.Lisäksi määritellään faktat (facts,
extentional database):
OnSuoritettavaEnnen (kie-98.7011, kie-98.7013 ) . //Fakta 1
OnSuoritettavaEnnen (kie-98.7013, kie-98.7015) . // Fakta 2
OnSuoritettavaEnnen (kie-98.7015, kie-98.7017) . // Fakta 3
![Page 11: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/11.jpg)
11
kie-98.7011
kie-98.7013
kie-98.7015
kie-98.7017
DATALOG OHJELMA (2/3)
Kysely: Mitä vaaditaan esitietoina kurssille kie-98.7017?
![Page 12: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/12.jpg)
DATALOG OHJELMA (3/3)
Annetaan tulkin käydä läpi säännöt kunnes ei enää uusia faktoja.
1.Kierros: Muuttujat X ja Y sitoutuvat (instantiation) kursseihin.
saadaan Esitieto{(kie-98.7011, kie-98.7013 ); (kie-98.7013, kie-98.7015) ; (kie-98.7015, kie-98.7017)};
2.Kierros : Esitieto saa uudet faktat: (kie-98.7011,
kie-98.7015) ; (kie-98.7013, kie-98.7017) ; ( sääntö nr 2)
3.Kierros : Esitieto saa uuden faktan: (kie-98.7011,kie-98.7017) kun yhdistetään (kie-98.7011, kie-98.7015) sekä (kie-98.7015, kie-98.7017)
3.Kierros: ei enää uusia faktoja, lopetetaan.
Iteraatioiden lkm riippu faktoista, ei voida päätellä kyselystä.
12
![Page 13: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/13.jpg)
13
Cheap_car(Car) :- sells(CarShop1, Car, Price1), sells(CarShop2, Car, Price2) , Price1 < 5000 , Price2 < 5000, CarShop1 <> CarShop2.
DATALOG OHJELMA 1/1 ’Halvat Autot’..
sells(AutoTalonen, VW-Golf GS , 4570). √ √sells(AutoTalonen, VW-Golf GS , 4950) . √sells(AutoTalonen, Peugeot 207 , 5000) .sells(DasAutoHaus, VW-Golf GS, 4800) . √ √sells(Pikkuautot Oy, Peugeot 207, 4999) .√
Faktat, extensional database
Vastauksena olisi VW-Golf GS
ETEENPÄIN KETJUTUS: kokeillaan vaihtoehtoja kunnes kaikki Säännön alitavoitteet täyttyvät.
![Page 14: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/14.jpg)
Datalog Vs. Prolog Datalog: ohjelman semantiikka perustuu
100% logiikkaan, sääntöjen järjestyksellä ei ole väliä. Eteenpäin-ketjutus (forward-chaining/bottom-up) eli annetuista faktoista ja säännöistä johdetaan uusia faktoja kunnes uusia faktoja ei enää voi johtaa (vrt. Taaksepäin ketjutus).
Päättelyjärjestystä ei voida hallita proseduraalisin keinoin (vrt. cut eli ! operaation avulla).
Vain yksinkertaisia muuttujiaa parametreina (Prologissa sallitaan Compound term). Datalog lähinnä kyselykieli, ei yleiskieli.
14
![Page 15: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/15.jpg)
15
Datalog nyt ja myöhemmin..
Vaikutteita kaupalliseen kieleen : .QL (object-oriented query language) ilmestyi v. 2007.
Hajautetuissa järjestelmissä käyttöä laajennetulle Datalogille (Datalog with constraints), käytetty
autentikoinnissa (trust management).
Vaikutteita SQL-1999 standardiin, rekursio.
![Page 16: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/16.jpg)
1616
Osa II. SQL:n perusteita 1/2
Relaatiotietokantojen haku- sekä käsittely kieli.
Perustuu ns. (turvalliseen) rivikalkyyliin, engl. safe tuple relational calculus.
Eli etsittäessä vastaus kysymykseen ketkä EIVÄT ole opiskelijoita,
tarkoittaa käytännössä ketkä henkilöistä EIVÄT kuulu opiskelijatauluun (eli kyselyt rajautuvat aina tietokannan tauluihin).
Turvallisuudesta johtuen ’universaali-kvanttori’ � operaatio ei ole sallittu, vaikkakin sallittu alkuperäisesssä SQUARE-kielessä.
![Page 17: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/17.jpg)
17
Vastaavat loogiset predikaatit merkitään AND
OR sekä NOT . Haun perusmuoto: SELECT
<attribuutit> FROM <relaatiot (taulut)> WHERE <rajoitusehto>
Esimerkki: SELECT Student_ID, Student_Name
FROM Students WHERE Student_Major
= ‘Biology‘ SQL sidottu tietokantaan: yksittäistä
SQL-tulkkia ei saatavilla ( Datalog).
Käytännössä vain suuret (IBM,Oracle, MS) toteuttavat SQL:n sen standardin laajudessa.
Esim. suosittu mySQL toteutti VIEW toiminnon (virtuaalitaulu) vasta vuosien jälkeen.
SQL:n perusteita 2/2
![Page 18: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/18.jpg)
18
SQL Kehityshistoria 1/2
(vuosi) Kehitysvaihe Huomatuksia
(1970) Tri E.F. Codd (IBM) julkaisee ”A Relational Model for Large Shared Data Banks”
Määrittelee relaatiomallin perusteet. Codd:ille AM. Turing palkinto v. 1981.
(1973) IBM:n ryhmä julkaisee kyselykielen SQUARE, tarkoitettu myös ei-ohjelmoijille.
SQUARE = Specifying Queries as Relational Expressions.
(1974) IBM:n System R kehitys alkaa, 1. SEQUEL-paperi ilmestyy
SEQUEL = Structured English Query Language
(1974) 1. Ingres prototyyppi (yliopisto)
QUEL-kyselykieli (ei standardia)
(1979) Larry Ellison julkaisee kaupallisen tietokantansa, Oracle V2
firma: Software Development Labs, alkanut vasta 1977!(1979) IBM julkaisee System
R:nvain viikkoja Oracle:n jälkeen
(1980) SEQUEL nimetään SQL:ksi
’SEQUEL’ jo varattu Englannissa.
![Page 19: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/19.jpg)
19
(vuosi) Kehitysvaihe Huomatuksia
(1981)IBM julkaisee SQL/DS IBM:n 1.kaupallinen DB-tuote! (”mainframes”)
(1986) SQL:n 1. standardi (ANSI)
ISO-standardi v. 1987
(1992) Merkittävä standardi SQL-2
mm. NATURAL JOIN, ’Temp’-taulut.
(1999) standardi SQL 1999 (SQL-3)
mm. Herättimet (triggers), kontrollirakenteet, rekursio.
(2003) standardi SQL:2003 mm. XML-tuki.
(2008) Standardi SQL:2008 Pieniä parannuksia esim. TRUNCATE Table tyhjentää koko taulun nopeasti.
SQL:n Kehityshistoria (2/2)
![Page 20: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/20.jpg)
20
* “in the summer of 1978, I got a phone call… from a guy named Larry Ellison, …he said he was the president of Software Development Laboratories, and they were developing an implementation of the SQL language”.
Miksi IBM myöhästyi… (1/2)
* “As you know, many papers came out of the System R project…describing the language …The project was not a secret and.., we’d been telling everybody about it that would listen. And one of the people that had listened …was Larry…he was interested in implementing the SQL language in the UNIX environment. IBM wasn’t interested in UNIX at all.” (PDP-11 platform)
Eräs SQL:n pääarkkitehteista muistelee..
![Page 21: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/21.jpg)
21
Miksi IBM myöhästyi… (2/2)
* I told Larry that, unfortunately… we wouldn’t be able to exchange information other than in the public literature. But that didn’t slow down Software Development Laboratories. They released their implementation of SQL …it was the first commercial implementation of SQL to go on the market..”
* Larry's success had a ..beneficial impact on our research group, because …we finally got IBM’s attention for this technology. Here was an outside company that had beat us to the punch as far as releasing a commercial implementation of these ideas, which were based on Ted Codd’s concepts and our language coming out of the research division at IBM, and people were eating it up… They were paying money for it. That’s a good way to get IBM’s attention..”
Donald Chamberlain muistelee (2009 )
![Page 22: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/22.jpg)
SQL: Taulujen käsittely
® Käytetään ns. Data Definition Language komentoja.
® Olettaen, että tietokanta on jo määritelty, voidaan määritellä uusi tyhjä taulurakenne komennolla CREATE TABLE .
® Aineistoa lisätään komennolla INSERT TABLE .
® Aineistoa muunnetaan komennolla UPDATE TABLE .
® Aineistoa poistetaan komennolla DELETE TABLE .
![Page 23: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/23.jpg)
23
CREATE TABLE Transcript(Taken_ID Number Not Null,Course_ID Varchar2(9) Not Null,Student_ID Number Not Null,Teacher_ID Number Not Null,Course_Status Varchar2(3) Not Null,Semester_Taken Varchar2(9) Not
Null,Grade_Obtained Number Not Null,Extra_Info Varchar2(65) )
SQL: Taulujen generointi
![Page 24: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/24.jpg)
24
SQL: Aineiston Lisäys• Komento INSERT lisää yhden
tietueen.• Lopuksi lisäykset tallennetaan
levylle.INSERT INTO Transcript VALUES(100, ‘ CS-102 ‘, 3270, 1 , ‘OK‘, ‘SPRING-09‘, ‘SP‘, 4, ‘‘));.....COMMIT;
![Page 25: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/25.jpg)
25
SQL: Aineiston Haku (1/5)
Hakulauseissa (queries) tärkein ominaisuus on aineiston rajoittaminen, joten WHERE lausekkeista helposti pitkät.
SELECT S. Student_ID, S. Student_NameFROM Students S, Transcript TWHERE T.Student_ID = S.Student_IDAND T. Course_ID = ‘CS-101’
Varsinainen rajoitus
Taulujen liitos
![Page 26: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/26.jpg)
SQL: Aineiston Haku (2/5)
Student_ID
Student_Name
3270 Adel
3270 Adel
3271 Jill
3272 Joseph
’Opiskelija Adel’ ilmestyy tuplana?!
Voi hämmentää käyttäjää, SQL sallii toisteiset arvot (bag-oriented, instead of set-oriented)Korjaantuu käyttämällä SELECT DISTINCT .. FROM
SELECT S. Student_ID, S. Student_NameFROM Students S, Transcripts TWHERE T . Student_ID = S. Student_IDAND T. Course_ID = ‘CS-101‘
![Page 27: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/27.jpg)
27
SQL: Aineiston Haku (3/5)SELECT S. Student_ID, S.
Student_BirthDateFROM Students SWHERE S. Student_BirthDate < ALL(SELECT Student_Birthdate FROM
Students S2WHERE S2. Department = ‘Natural
Science’ )
Hakee opiskelijat, jotka ovat vanhempia kuin jokainen Luonnontieteiden opiskelija.
ALL ei siis itsessään palauta kaikkia opiskelijoita.
![Page 28: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/28.jpg)
28
SQL: Aineiston Haku (4/5)Haetaan opiskelijat, jotka ovat suorittaneet kaikki Prof. ’Eleichen’:n (opettaja ID 3) opettamat kurssit. Ongelma: yleinen kysely, mutta
SQL:ssä ei suoraa Tukea ’kaikki’ operaattorille.SELECT DISTINCT Student_ID
FROM Transcripts T1WHERE NOT EXISTS ( SELECT * FROM Transcripts WHERE Teacher_ID = ‘3‘ AND Course_ID NOT
IN (SELECT Course_ID FROM Transcripts T2
WHERE T2.Student_ID = T1.Student_ID ))* Eli EI sellaista opiskelijaa, joka EI olisi suorittanut
jotakin opettajan (ID= 3) kursseista. Tuplanegaatio!
![Page 29: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/29.jpg)
Aineiston Haku: SQUARE vs. SQL
29
S // muuttujien avulla taulu liitetään itseensä.
// (NAME , SAL , MGR ,DEPT)
// (’ANDERSON’, 32000, ’ JOHNSTON’,’SALES’)
// (’JOHNSTON ’, 55000, ’ BIGBOSS ’, ’SALES’)
// eli Andersonin esimies Johnston tienaa 55 000.
SELECT E2. SalaryFROM EMP E1, EMP E2 WHERE E1 .MGR
= E2.NAME AND E1. NAME = ‘ANDERSON‘
![Page 30: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/30.jpg)
30
Ei vain rivitasolla vaan myös ryhmityksiä.. Ryhmitys (grouping) ja tietuiden/rivien yhdistäminen (aggregates) on tutkimusten mukaan joskus hankalaa ainakin ei-ohjelmoijille.
GROUP BY Muodostaa ryhmiä.
AVG, MIN, MAX, SUM ryhmien yhteenveto laskentaa varten.
![Page 31: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/31.jpg)
31
Student_ID Dept Course_ID Credits
3270 French
CS-101 5
3270Comp.S
ci CS-101 5
3271Comp.
Sci CS-101 5
3271 Comp. Sci
CS-103 3
3272 Biology CS-101 5
3272 Biology CS-103 3
Oletus: aineisto sijaitsee (väliaikaisessa) taulussa ’T3’, jossa mm. Opiskelija 3270 on vaihtanut osastoa. Halutaan laskea montako opiskelijaa on suorittanut kunkin kurssin (sekä op:summan).
Ryhmityksiä.. esim. (1/4)
![Page 32: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/32.jpg)
32
Ryhmityksiä .. esim. (2/4)
Course_ID Student_Count_Taken
Sum_of_Credits)
CS-101 3 15
CS-103 2 6
Tavoitteena siis saada seuraava tulos:
![Page 33: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/33.jpg)
33
SELECT Course_ID, COUNT(Course_ID),
SUM (Credits) FROM T3GROUP BY Course_ID
Course_ID
Count (Course_ID)
Sum_of_Credits
CS-101 4 20
CS-103 2 6
Ryhmityksiä .. esim. (3/4) Kun kokeillaan seuraavaa:
saadaankin alla oleva, ei-haluttu tulos.
![Page 34: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/34.jpg)
34
Oikea SQL-kysely olisi:
SELECT Course_ID, COUNT( DISTINCT Student_ID),
COUNT( DISTINCT Student_ID), * Credits
FROM T3GROUP BY Course_ID
Ryhmityksiä .. esim. (4/4)
Eli olisi mm. osattava :•Käyttää DISTINCT :iä•Sijoitettava laskukaava
![Page 35: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/35.jpg)
35
SQL: Aineiston Haku (5/5 )
SELECT T1.Student_ID, COUNT(t.course_id) FROM Transcript T1
WHERE T1.Teacher_ID = ‘3‘ // oikea Proffa
GROUP BY student_idHAVINGCOUNT(T1. Course_ID)= (SELECT COUNT(DISTINCT T2.
Course_ID) FROM Transcript T2 WHERE T2. Teacher_ID = ‘3‘ )* Sellaiset opiskelijat jotka ovat suorittaneet
Prof nro ’3’ kursseja yhtä monta kuin kyseinen opettaja opettaa eri kursseja.
Helpompi esitystapa aikaisempaan opettaja kyselyyn :
![Page 36: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/36.jpg)
36
HIEMAN SQL KRITIIKKIÄ… (1/2)Sama kysely (ketkä saaneet arvosanan
’5’ monella eri tavalla esitettynä (peräti 7!, tässä muutamia):
(1) SELECT T. Student_ID FROM Transcripts T, Students S,
WHERE T.Student_ID = S.Student_ID T AND T.Course_Grade = 5(2) SELECT Student_ID FROM Students S
WHERE Student_ID IN (SELECT Student_ID FROM Transcripts
WHERE T.Course_Grade = 5)(3) SELECT Student_ID FROM Students S WHERE = ANY (SELECT Student_ID FROM
Transcripts WHERE Course_Grade = 5)
![Page 37: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/37.jpg)
37
HIEMAN SQL Kritiikkiä… (2/2)(4) SELECT Student_ID FROM Students S
WHERE 5 IN (SELECT Course_Grade FROM Transcript T
WHERE = T.Student_ID = S.Student_ID)Yllä: ’Muuttuja’ S näkyvyysalue ulottuu siis sisäiseen SELECT -lauseeseen
(5) SELECT Student_ID FROM Students S WHERE
EXISTS (SELECT * FROM Transcript T WHERE = T.Student_ID = S.Student_ID AND
Course_Grade = 5 )(6) SELECT Student_ID FROM Students S WHERE
0 < (SELECT COUNT(*) FROM Transcript T WHERE = T.Student_ID = S.Student_ID AND
Course_Grade = 5 )
![Page 38: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/38.jpg)
38
SQL: Jotain positiivistakin… Yksi harvoista ennen v. 1975
kehitetyistä kielistä, joka silti voimissaan.
Laajennettavissa mm. sulautetun SQL:n avulla (embedded SQL). Esim. IBM:llä ja Oracle:lla C/C++ tuki. Tällä hetkellä mySQL ei tue sulautettua SQL:ää.
Kielen luonne antaa ohjelmoijan keskittyä haluttuun tulokseen.
Toiminut perusteena mm. OQL-kielellle (Object Query Language) oliopohjaisissa tietokannoissa sekä FSQL –kielelle (Fuzzy SQL).
![Page 39: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/39.jpg)
SQL Vs. Datalog
Datalog vastaa SQL:n SELECT-FROM-WHERE kyselyitä ilman ryhmityksiä/yhteenvetoja.
Kun rekursio sallitaan Datalogissa, ilmaisuvoima on suurempi kuin SQL.
39
![Page 40: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/40.jpg)
40
Osa IIIA. Tietokantakehityspaketit, 4GL (erityisesti 1985-1995).
® Tunnetuimmat dBase ja Paradox myöhemin mm. FoxPro. Tunnetaan nimellä 4GL. (4th Generation Languages)
® Sisältävät relaatiotyyppisen tietokannan pohjautuen tiedostopalvelimeen (fileserver technology)
® Sisältävät ohjelmointikielen sekä laajan joukon komentoja data-aineiston käsittelyyn (SQL ei välttämättä tuettu!)
![Page 41: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/41.jpg)
41
Paradox:in (DOS) kehitys(vuosi) Kehitysvaihe Huomatuksia
(1980) Ashton-Tate julkistaa W. Ratliff:in kehittämän dBase 2.0
PC:t saavat oman tietokantansa, ei varsinaisesti relaatiokanta.
(1985) Paradox 1.0 (DOS), Dr R.Shostak & Dr R.Schwartz
Hieno QBE (Query-by-Example) kielen toteutus PC-lle.
(1987) Paradox 2.0 DOS julkistetaan
Monikäyttäjätuki (LAN), Borland ostaa tuotteen
(1993) Paradox 1.0 (Windows)
Parhaimmillaan Borland:illa 85% PC:n tietokantamarkkinoista(1995) Delphi 1.0
(Windows) uusi tuote, korjaa PW:n virheetLisäksi: TurboPAL(ShengLabs), kääntäjä Paradox DOS:ille.
Microsoft liittää Access-tuotteensa osaksi Office pakettia, kaikki muut PC tietokantapaketit häviävät..
![Page 42: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/42.jpg)
42
Paradox sovelluskehitin (DOS-versio) sisälsi:
•QueryByExample (hyvä toteutus, mm. every, only tuki).•Ohjelmointiympäristön (mm. PAL).•Paradox-tietokannan
![Page 43: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/43.jpg)
PAL: Paradox Application Language 1/2
43
Tulkattava kieli laajalla komentopohjalla.
V. 1990 InfoWorld antoi PAL osuudelle arvosanan ’erinomainen’ (8.loka 1990)
Normaalit kontrollirakenteet.
Sisennyksillä ei merkitystä.
Lisäksi runsaasti komentoja/funktioita erityisesti taulujen käsittelyyn.
![Page 44: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/44.jpg)
44
PAL: Paradox Application Language 2/2
PAL kuuluu ryhmään 4GL koska: sisältää ’makrokomentoja’, jotka säästävät koodin kirjoitusta.
Esimerkiksi komento REPORT T3 tulostaisi T3 väliaikaistaulusta kirjallisen raportin.
Kuitenkin ei-systemaattinen, SQL:n puute korvattava esim. komentosarjalla:
Menu {Ask} Select {Students} Check
Moveto [Dept] Typein “Biology” Do_It!
joka vastaa SQL-kyselyä:SELECT * FROM Students WHERE Dept
=‘Biology‘
![Page 45: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/45.jpg)
45
PAL Esimerkki 1/2
Esimerkki kuvitteelliesta ongelmasta:Samaan kenttään tallennettu virheellisesti
sekä Suku että –etunimi, (esim. ’Wiren, Ville’) erotellaan ne omiin kenttiinsä.
EDIT “Students“ ; taulu tuodaan työtilaan, lukitaan.
MOVE [Name] ; siirrytäään kenttään ’Name’
; ------------------------------------------------------------; -erotellaan sukunimi etunimi, oletuksena; että tieto muotoa ’Sukunimi, Etunimi’ separate_names ; kutsutaan
aliohjelmaaDo_It! ; muutokset levylle
![Page 46: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/46.jpg)
46
PROC separate_names ()PRIVATE last, first ; - ’automaattinen’ tyypitys; ------------------------------------------------------------------; SCAN aloittaa ensimmäisestä tietueesta.; MATCH erottaa lainausmerkeissä olevan stringin. SCAN FOR MATCH([],”.., ..” , last , first ) ; [Last_Name] = last [First_Name] = first ; talleta etunimi kenttäänENDSCAN ; SCAN-silmukka ulottuu tähänENDPROC
Miltäköhän tämä näyttäisi nykypäivän Delphillä?
PAL esimerkki 2/2
![Page 47: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/47.jpg)
47
PROCEDURE separate_names; //Var st1, last, first : ShortString; nr_rows, i:Integer;{-- Students_tbl on komponentti , viittaa --} {-- opiskelijatauluun eli lyhennys --}{--- merkinnästä Students_tbl.RecordCount --} With Students_tbl Do Begin nr_rows := RecordCount ; // rivien kokonaismäärä Edit; // muokkaustila
Vastaava Delphi esim. 1/3
![Page 48: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/48.jpg)
48
{-- aloita ensimmäisestä tietuuesta, lue kenttä --} First; FOR i := 1 To nr_rows Do Begin (* kaikki rivit läpi *) st1 := FieldByName(“Name”).AsString ; // oma kirjastofunktio eroittelee suku ja etunimen my_match_STRUTLS (st1, last , first ) ; FieldByName(“Last_Name”) .AsString := last ; FieldByName(“First_Name”) .AsString := first ; Next; // seuraava rivi End; END
Vastaava Delphi esim. 2/3
![Page 49: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/49.jpg)
49
Vastaava Delphi esim. 3/3
Kutsutaan aliohjelmaa:separate_names;TryTry Students_tbl.Post ; // ’kommitoidaan’ Except on E: Exception Do // virheen hallinta ShowMessage(E.ClassName + ‘error found with message ’ + E.Message); End;Finally; // taulu suljettava joka tapauksessa, virhe tai ei. Students_tbl.Close;End;
![Page 50: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/50.jpg)
50
DELPHI: Visuaalinen ohjelmointiväline tietokantasovelluksille.
Delphin pääsuunnittelijana Anders Hejlsberg (Tanska), joka kehitti myöhemmin C# kielen Microsoftilla.
Olio-ohjelmointia sekä SQL-tuki lähes kaikkiin tietokantoihin (mySQL, Oracle).
Lomakepohjainen ja tapahtumaohjattu. Tapahtumia paitsi lomakkeille, myös tietokannan tauluille (esim. OnNewRecord, OnFieldModified).
Laajennettavuus: valmis koodi taltioidaan paketeiksi (packages). Joko visuaalisia/puhtaasti proseduraalisia.
![Page 51: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/51.jpg)
51
Katsaus Delphi ohjelmointiin 1/2• Begin, End kirjoitus ei enää työlästä..(editori)
• Koodin luettavuus korkea.
![Page 52: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/52.jpg)
52
Katsaus Delphi ohjelmointiin 2/2Oliopohjaista koodia, jossa SQL-tuki (SQL:n
lause käsitellään tietokantapalvelimella).
![Page 53: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/53.jpg)
53
(vuosi) Kehitysvaihe Huomatuksia
(1970) Pascal 1.toteutus julki, alustana CDC-mainframe . (vrt. C-kieli julki n. V. 1972)
N Wirth (Zürichin korkeakoulu)
(1973) Multum Pascal julki Skotlannissa (U. Of Glasgow)
Ensim. 16-bit toteutus?Tavoite: tehdä Pascalista systeemikieli.
(1977) Pascal/R julki Perinteistä Pascalia laajennettu taulu tyypillä (type relation).
(1982) Pascal:ista ISO standardi
Anders Hejlsberg kehittää oman nopean kääntäjänsä Pascalille.
(1983) Turbo Pascal ilmestyy
Borland ostaa tuotteen Hejlsbergiltä.
Lyhyt Delphi:n kehityshistoria 1/2
![Page 54: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/54.jpg)
54
(vuosi) Kehitysvaihe Huomatuksia
(1989) Turbo Pascal 5.5 ilmestyy
Olio tuki, kieltä kutsutaan myös ’Object Pascal’, myös Mac:ille.(1995) Borland
julkistaa Delphi 1.0Ympäristönä 16-bittinen Windows
(1997) C++ Builder ilmestyy, Delphin pääarkitehteja siirtyy Microsoftille.
Borland väittää MS:n tuotetta J++ ”Delphi for Javaksi”.
(2001) Kylix ilmestyy Delphi Linux ympäristöön
(2008) Delphi 2009 ilmestyy. Pascaline kieli julki
Unicode tuki Delphille. Pascaline yhteensopiva Pascal, lisänä mm. oliot vrt. C# vastine C:lle.(2009) Delphi 2010
ilmestyy
Lyhyt Delphi:n kehityshistoria 2/2
![Page 55: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/55.jpg)
55
Vertailu, Datalog, SQL, Pascal, Delphi (1/2)Lasketaan tietyn opiskelijan keskiarvo kun
tiedetään arvosanojen summa ja kurssien lkm.
Compute_GPA(SumGrades , NrCourses , GPA) :- GPA = SumGrades / NrCourses.
DATALOG (olettaen että jakolasku tuettu)
SELECT SumGrades / NrCourses FROM Transcript
WHERE Student_ID = ‘55075B’
SQL
![Page 56: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/56.jpg)
56
Vertailu, Datalog, SQL, Pascal, Delphi (2/2)
Pascal/Delphi
Function Compute_GPA (SumGrades:Real;NrCourses :
Integer) :Real;BEGIN Compute_GPA := SumGrades Real / NrCourses ;END;Delphi Function Compute_GPA (Const
SumGrades:Real ; Const NrCourses : Integer) :Real;BEGIN Result := SumGrades Real / NrCourses ;END;
![Page 57: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/57.jpg)
5757
Lähteitä DATALOG:*Grigoris Karvounarakis, DATALOG, Univ. Of
Pennsylvania.* Jack Minker, Invited Keynote: Logic and Databases: A
20 Year Retrospective, Workshop on Logic in Databases, San Miniate, Italy, 1996.
* GNU Datalog tulkki: (kirjoitettu Lua:lla!) http://
www.ccs.neu.edu/home/ramsdelltools/datalog/data.html
* S Constantini, Datalog, Maggioli Informatica. www.cs.unb.ca/~boley/cs6795swt/datalog_Stefania_Constantini_slides.pdf
* S Ceri, G Gottlob, L Tanca, What You Always Wanted to Know About Datalog (and Never Dared to Ask), IEEE Transactions on Knowledge & Data Eng, Vol. 1, March 1989, pp. 146-166.
* J Eder, Logic and Databases, University of Klagenfurt, Austria.
* N Memon, Enhanced Data Models for Advanced Applications.
![Page 58: ”DataLog & SQL” - cs.hut.fi · (deductive database) DATALOG: Lyhyt kehityshistoria 1/2. 6 ... jne. Ohjelma ... IBM julkaisee System alkanut vasta 1977! R:n](https://reader034.vdocuments.site/reader034/viewer/2022050715/5d32573e88c9937a3b8d9618/html5/thumbnails/58.jpg)
58
Lähteitä SQL:
*Claudio Fratarcangeli, Technique for Universal Quantification in SQL,Sigmod, Vol. 20, 1991.
*Fabien Pascal, SQL and Relational Basics, 1990.
* RF Boyce, DD Chamberlin, MM Hammer, WK King III, Specifying Queries as Relational Expressions, IBM Thomas Watson Research Center, 1973. (SQUARE Kieli)
* Oral History of Donald Chamberlain, Computer History Museum, July 21, 2009, California.
* RDMBS Workshop: Technology through 1983, Recorded 2007, CA.
* http://wapedia.mobi/en/SEQUEL
• http://wapedia.mobi/en/SEQUEL