Suhteellinen algebra
Relaatioalgebra on kyselyn kieli relaatiotietokantojen . Realaatioalgebralla keksittiin vuonna 1970 , jonka Edgar Frank Coddin , tutkimuksen johtaja IBM keskuksen vuonna San José .
Tämä on DBMS- kyselykielten , kuten SQL , teoria . Lause Coddin mainittu relaatioalgebran vastaa relaatio hammaskivi ( ensimmäisen kertaluvun logiikka ei toimintoa symboleja). Se vastaa myös ei-rekursiivista Datalogia ¬ ( Datalog, jossa on kielteinen). Datalog on kysely- ja sääntökieli deduktiivisille tietokannoille.
Abiteboulin ym. Mukaan relaatioalgebra on käsitteellisesti "prosessuaalinen" kieli: kyselyt ovat todellakin operaatioiden sekvenssejä, jotka rakentavat vastauksen. Tämä on toisin kuin käsitteellisesti "deklaratiivisilla" kielillä, kuten relaatiolaskenta ja Datalog.
Suhteellinen malli
Relaatiomallissa data tallennetaan taulukoihin, joita kutsutaan myös suhteiksi. Tässä on esimerkki suhteesta:
Tarkemmin sanottuna suhde ( Codd- mallin mukaan ) muodostetaan:
- kaavion eli kaikkien kenttien (tässä avain, nimi, sähköposti) ja vastaavien tyyppien nimet (esimerkissä vastaavasti kokonaisluku, sitten kaksi merkkijonoa).
- Laajennus, eli taulukon sisältö, joka on joukko joukkoja, joiden järjestyksellä ei ole merkitystä.
Määritelmä
Proseduurikieli sisältää joukko- teorian joukkooperaatiot suhteille sekä sulautumis- / projekti-suhteet.
Aseta operaattorit
Asetetut operaattorit ovat liitos, leikkauspiste, ero ja suorakulmion tulos.
liitto
Kahden kaavion yhdistäminen samassa kaaviossa on tämän kaavion suhde, joka sisältää täsmälleen näiden kahden suhteen ennätysten yhdistämisen. Muodollisesti .
R∪S={t:t∈R ou t∈S}{\ displaystyle R \ cup S = \ {t: t \ sisään R \ tai \ t \ sisään S \} \,}![R \ cup S = \ {t: t \ in R \ tai \ t \ in S \} \,](https://wikimedia.org/api/rest_v1/media/math/render/svg/120c03697bc107698d9cf1f2d3b708f233bd16a8)
Renaultin työntekijät
Sukunimi |
Henkilötunnus |
Osasto
|
---|
Harry |
3415 |
Rahoittaa
|
Sally |
2241 |
Myynti
|
George |
3401 |
Rahoittaa
|
|
Citroënin työntekijät
Sukunimi |
Henkilötunnus |
Osasto
|
---|
Bertrand |
0808 |
Myynti
|
Donald |
0007 |
Myynti
|
|
Renault U: n työntekijät Citroënin työntekijät
Sukunimi |
Henkilötunnus |
Osasto
|
---|
Harry |
3415 |
Rahoittaa
|
Sally |
2241 |
Myynti
|
George |
3401 |
Rahoittaa
|
Bertrand |
0808 |
Myynti
|
Donald |
0007 |
Myynti
|
|
Risteys
Kahden saman kaavion suhteen suhde on sen kaavan suhde, joka sisältää täsmälleen molemmissa suhteissa esiintyvät tietueet. Muodollisesti .
R∩S={t:t∈R et t∈S}{\ displaystyle R \ cap S = \ {t: t \ in R \ ja \ t \ in S \} \,}![R \ cap S = \ {t: t \ in R \ ja \ t \ in S \} \,](https://wikimedia.org/api/rest_v1/media/math/render/svg/d0b8708807f7bf45feb3166a095af69d00479203)
Jalkapalloon rekisteröityneet ihmiset
Sukunimi |
Henkilötunnus
|
---|
Harry |
3415
|
Sally |
2241
|
George |
3401
|
|
Ihmiset ilmoittautuivat pianotunneille
Sukunimi |
Henkilötunnus
|
---|
Harry |
3415
|
Bertrand |
2
|
George |
3401
|
Yoda |
1000
|
|
Jalkapalloon rekisteröityneet henkilöt ∩ Pianotunneille ilmoittautuneet
Sukunimi |
Henkilötunnus
|
---|
Harry |
3415
|
George |
3401
|
|
Ero
Kahden samassa skeemassa olevan suhteen suhde on sen skeeman suhde, joka sisältää täsmälleen tietueet, jotka näkyvät ensimmäisessä suhteessa, mutta eivät toisessa. Muodollisesti . Voimme esimerkiksi laskea jalkapalloon rekisteröityneet henkilöt, jotka eivät ole rekisteröityneet pianotunneille:
R-S={t:t∈R et t∉S}{\ displaystyle RS = \ {t: t \ sisään R \ ja \ t \ ei \ sisään S \} \,}![RS = \ {t: t \ R: ssä \ ja \ t \ ei \ S: ssä \} \,](https://wikimedia.org/api/rest_v1/media/math/render/svg/099f141e07c19379fd8ccd4d8a49bf6f06b3f980)
Jalkapalloon rekisteröityneet ihmiset
Sukunimi |
Henkilötunnus
|
---|
Harry |
3415
|
Sally |
2241
|
George |
3401
|
|
Ihmiset ilmoittautuivat pianotunneille
Sukunimi |
Henkilötunnus
|
---|
Harry |
3415
|
Bertrand |
2
|
George |
3401
|
Yoda |
1000
|
|
Jalkapalloon rekisteröityneet ihmiset - Pianotunneille ilmoittautuneet
Sukunimi |
Henkilötunnus
|
---|
Sally |
2241
|
|
karteesinen tuote
Kahden suhteen suorakulmaisen tuloksen avulla kopioimme ensimmäisen relaation kukin kaksoisosuus kullekin toisen joukolle. Muodollisesti .R×S={(r,s):r∈R et s∈S}{\ displaystyle R \ kertaa S = \ {(r, s): r \ sisään R \ ja \ s \ sisään S \}}![{\ displaystyle R \ kertaa S = \ {(r, s): r \ sisään R \ ja \ s \ sisään S \}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9d81eafde570307dae1f43b19b79de8b1f82cffb)
Ihmiset
Sukunimi |
Henkilötunnus
|
---|
Harry |
3415
|
Sally |
2241
|
|
Lahjat
Tyyppi |
Hinta
|
---|
toimitettu |
10
|
kakku |
20
|
tietokone |
300
|
|
Ihmiset - lahjat
Sukunimi |
Henkilötunnus |
Tyyppi |
Hinta
|
---|
Harry |
3415 |
toimitettu |
10
|
Harry |
3415 |
kakku |
20
|
Harry |
3415 |
tietokone |
300
|
Sally |
2241 |
toimitettu |
10
|
Sally |
2241 |
kakku |
20
|
Sally |
2241 |
tietokone |
300
|
|
Suhteelliset operaattorit
Valinta
Valinta (tai rajoitus) koostuu pitämään vain tietueet, jotka täyttävät tietyn ehdon. Alla olevassa esimerkissä pidämme vain turisteja, joiden kaupunki on Pariisi.
- Tiedot: Suhde ja kaava, jotka on muodostettu vertailujen ja loogisten liittimien yhdistelmästä.R{\ displaystyle R \,}
F{\ displaystyle F \,}![F \,](https://wikimedia.org/api/rest_v1/media/math/render/svg/af686cd9f8a742bde6d8ee773ddebc793960d0ee)
- Tulos: täyttää esimerkin turisteille antaman ehdonσF(R)={r∈R:r{\ displaystyle \ sigma _ {F} (R) = \ {r \ sisään R: r \,}
F}{\ displaystyle F \} \,}
σVille=′Pkloris′({\ displaystyle \ sigma _ {Kaupunki = 'Pariisi'} (\,}
){\ displaystyle) \,}
- SQL-vastaava: WHERE
Turistit
idTourist |
NimiT |
Kaupunki |
Urheilu
|
---|
1 |
Marc |
Pariisi |
Hiihtää
|
2 |
Farkut |
Toulouse |
Tennis
|
3 |
Frangi |
Marseilles |
Jalkapallo
|
4 |
Thomas |
Lyon |
Purjehtia
|
5 |
Maks |
Pariisi |
Golf
|
|
Valikoima turisteja, joissa kaupunki on Pariisin arvoinen
idTourist |
NimiT |
Kaupunki |
Urheilu
|
---|
1 |
Marc |
Pariisi |
Hiihtää
|
5 |
Maks |
Pariisi |
Golf
|
|
Projektio
-
Uloke mahdollistaa pitää vain tiettyjä ominaisuuksia. Alla olevassa esimerkissä pidämme vain TourT-suhteen NameT ja City -attribuutit.
- Tiedot A nähden ja joukko ominaisuuksia jaR{\ displaystyle R \,}
AT{\ displaystyle A \,}
R{\ displaystyle R \,}
- Tulos :, joka on suhde, jossa tarkastelemme vain esimerkiksi turistien ominaisuuksiaπAT(R){\ displaystyle \ pi _ {A} (R) \,}
R{\ displaystyle R \,}
AT{\ displaystyle A \,}
πEIomT,Ville({\ displaystyle \ pi _ {NimiT, Kaupunki} (\,}
){\ displaystyle) \,}
- SQL-vastaava: SELECT
Turistit
idTourist |
NimiT |
Kaupunki |
Urheilu
|
---|
1 |
Marc |
Pariisi |
Hiihtää
|
2 |
Farkut |
Toulouse |
Tennis
|
3 |
Frangi |
Marseilles |
Jalkapallo
|
4 |
Thomas |
Lyon |
Purjehtia
|
5 |
Maks |
Pariisi |
Golf
|
|
Turistisuhteen projektio NomT ja Ville -ominaisuuksille
NimiT |
Kaupunki
|
---|
Marc |
Pariisi
|
Farkut |
Toulouse
|
Frangi |
Marseilles
|
Thomas |
Lyon
|
Maks |
Pariisi
|
|
Nimeä uudelleen
-
Nimeäminen uudelleen :
- Tiedot A nähden ja attribuutti onR{\ displaystyle R \,}
b{\ displaystyle b \,}
R{\ displaystyle R \,}
- Tuloksena :, joka on Suhde kanssa nimeksiρklo/b(R){\ displaystyle \ rho _ {a / b} (R) \,}
R{\ displaystyle R \,}
b{\ displaystyle b \,}
klo{\ displaystyle a \,}
- SQL-vastaava: AS
Liittyä seuraan
-
Liity :
- Tiedot: kaksi suhdetta jaR{\ displaystyle R \,}
S{\ displaystyle S}
- Tulos: R⋈S={(klo,b,vs.):(klo,b)∈R et (b,vs.)∈S}{\ displaystyle R \ bowtie S = \ {(a, b, c) :( a, b) \ R \: ssä ja \ (b, c) \ in S \} \,}
- SQL-vastaava: JOIN
Turistit
idTourist |
NimiT |
Kaupunki |
Urheilu
|
---|
1 |
Marc |
Pariisi |
Hiihtää
|
2 |
Farkut |
Toulouse |
Tennis
|
3 |
Frangi |
Marseilles |
Jalkapallo
|
4 |
Thomas |
Lyon |
Purjehtia
|
5 |
Maks |
Pariisi |
Golf
|
|
Kohteet
idTourist |
KaupunkiD
|
---|
1 |
Cannes
|
2 |
Ibiza
|
4 |
Tokio
|
|
Turistit ⋈ Kohteet
idTourist |
NimiT |
Kaupunki |
Urheilu |
KaupunkiD
|
---|
1 |
Marc |
Pariisi |
Hiihtää |
Cannes
|
2 |
Farkut |
Toulouse |
Tennis |
Ibiza
|
4 |
Thomas |
Lyon |
Purjehtia |
Tokio
|
|
Divisioona
-
Jako : se käyttää syötteenä kaksi suhdettaja.
R(x1,...,xm,y1,...,ys){\ displaystyle R (x_ {1}, ..., x_ {m}, y_ {1}, ..., y_ {p}) \,}
S(y1,...,ys){\ displaystyle S (y_ {1}, ..., y_ {p}) \,}![S (y_ {1}, ..., y_ {p}) \,](https://wikimedia.org/api/rest_v1/media/math/render/svg/540ad513bd5a67ef9ea1fa2a005aaf4430c021e0)
- Täten mikä tahansa dupleksi voidaan jakaa kahteen dupleksiin , skeemalla ja skeemalla . ja palauttaa skeemataulukon , kuten . Jako tarkoittaa "kaikki x sellaista, että kaikki y ..."r∈R{\ displaystyle r \ sisään R \,}
r=(t,s){\ displaystyle r = (t, s) \,}
t=(t1,...,tm){\ displaystyle t = (t_ {1}, ..., t_ {m}) \,}
X={x1,...,xm}{\ displaystyle X = \ {x_ {1}, ..., x_ {m} \} \,}
s=(s1,...,ss){\ displaystyle s = (s_ {1}, ..., s_ {p}) \,}
y={y1,...,ys}{\ displaystyle y = \ {y_ {1}, ..., y_ {p} \} \,}
X{\ displaystyle X \,}
R/S={t:∀s∈S, (t,s)∈R}{\ displaystyle R / S = \ {t: \ kaikki s \ in S, \ (t, s) \ in R \} \,}![R / S = \ {t: \ kaikki s \ in S, \ (t, s) \ in R \} \,](https://wikimedia.org/api/rest_v1/media/math/render/svg/12223f885e64c8a72ed1626df15dc36574d87d2b)
Ilmeikkyys
SPC-algebra (valinta, projektio ja suorakulmainen tulo) vastaa konjunktiivista laskentaa (relaatiolaskenta ilman disjunktiota ja ilman negatiivia): se on yksi Coddin lauseen versioista . SPCU-algebra (SPC-algebra, johon on lisätty unioni ja ero) vastaa koko relaatiolaskua: se on toinen versio Coddin lauseesta . Equijoin Voidaan ilmaista suorakulmion tuotteella, jota seuraa valinta ja sitten projektio.
Optimointi
Tässä on uudelleenkirjoitussäännöt relaatioalgebra-lausekkeen muuntamiseksi toiseksi vastaavaksi lausekkeeksi.
Toteutus
Kuitenkin relaatiotietokantojen eivät aivan toimi asetettua sääntöjä relaatioalgebran. Itse asiassa, jos ei määritellä perusavain , on mahdollista lisätä useita identtisiä rivejä taulukkoon , jonka näkökulma ensemblist ei ole merkitystä: elementti kuuluu tai ei kuulu joukon. Jos haluamme soveltaa tiukasti sarjajoukon sääntöjä, meidän on tarkistettava joka kerta, kun taulukko lisätään, ettei esitettyjä rivejä ole jo olemassa.
Mallin tietyt objektit
Tässä on kysymys verkkotunnusten (eli atomityypin) määrittämisestä:
- Numeerinen: kokonaisluku tai todellinen ( SQL : Int, Float jne.);
- Merkkijono (SQL: Char (20), VarChar (32) jne.);
- Päivämäärä (SQL: PÄIVÄYS, AIKA, VUOSI jne.);
- Luetteloitu tyyppi.
Huomautuksia ja viitteitä
-
(in) Foundations of Tietokannat: loogisella tasolla , Addison-Wesley Longman Publishing Co., Inc.1995, 685 Sivumäärä ( ISBN 978-0-201-53771-0 , lue verkossa ) , s. 10
-
(in) Foundations of Tietokannat: loogisella tasolla , Addison-Wesley Longman Publishing Co., Inc.1995, 685 Sivumäärä ( ISBN 978-0-201-53771-0 , lue verkossa ) , osa B - Perustiedot: Relaatiokyselykielet - s. 35
-
" Opi tietokantoja ja SQL " , osoitteessa Developpez.com ( käyty 19. toukokuuta 2019 )
-
http://www.scritube.com/limba/franceza/Aide-mmoire-sur-les-bases-de-d21481108.php
Katso myös
Ulkoiset linkit
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">