ilişkisel cebir
İlişkisel cebir bir sorgu dilidir ilişkisel veritabanları . İlişkisel cebir 1970 yılında San José'deki IBM Merkezi'nin araştırma direktörü Edgar Frank Codd tarafından icat edildi .
SQL gibi DBMS sorgu dillerinin ardındaki teori budur . Teoremi Codd ilişkisel cebir ilişkisel hesabı (eşdeğerdir bahsedilen birinci dereceden mantık fonksiyonu semboller olmadan). Aynı zamanda özyinelemeli olmayan Datalog ¬ ( olumsuzlamalı Datalog) ile eşdeğerdir . Datalog , tümdengelim veritabanları için bir sorgu ve kural dilidir.
Abiteboul ve arkadaşlarına göre, İlişkisel cebir kavramsal olarak "prosedürel" bir dildir: aslında, sorgular yanıtı oluşturan işlem dizileridir. Bu, ilişkisel analiz ve Datalog gibi kavramsal olarak "bildirimsel" dillerin aksinedir.
ilişkisel model
İlişkisel modelde veriler, ilişkiler olarak da adlandırılan tablolarda depolanır. İşte bir ilişki örneği:
Daha doğrusu, ( Codd modelinin anlamı dahilinde) bir ilişki kurulur :
- yani, alanların (burada Anahtar, Ad, E-posta) ve karşılık gelen türlerin (sırasıyla örnekte, bir tamsayı, ardından iki karakter dizisi) tüm adları.
- Bir uzantı, yani sırası önemli olmayan bir dizi demet olan tablonun içeriği.
Tanım
Prosedürel dil, küme teorisinin ilişkiler üzerindeki küme işlemlerini ve ayrıca ilişkileri birleştirme / projelendirme işlemlerini içerir.
Operatörleri ayarla
Küme operatörleri birleşim, kesişim, fark ve Kartezyen çarpımdır.
Birlik
Aynı diyagramda iki ilişkinin birleşimi, bu iki ilişkinin kayıtlarının tam olarak birliğini içeren bu diyagramdaki ilişkidir. Resmi olarak .
$∪S={t:t∈$ Ösen t∈S}{\ displaystyle R \ fincan S = \ {t: t \ R \ veya \ t \ S \} \,}![R \ cup S = \ {t: t \ R \ veya \ t \ S \} \ içinde,](https://wikimedia.org/api/rest_v1/media/math/render/svg/120c03697bc107698d9cf1f2d3b708f233bd16a8)
Renault çalışanları
Soyadı |
İD |
Bölüm
|
---|
Harry |
3415 |
finans
|
sally |
2241 |
Satış
|
George |
3401 |
finans
|
|
Citroën çalışanları
Soyadı |
İD |
Bölüm
|
---|
Bertrand |
0808 |
Satış
|
Donald |
0007 |
Satış
|
|
Renault U çalışanları Citroën çalışanları
Soyadı |
İD |
Bölüm
|
---|
Harry |
3415 |
finans
|
sally |
2241 |
Satış
|
George |
3401 |
finans
|
Bertrand |
0808 |
Satış
|
Donald |
0007 |
Satış
|
|
kavşak
Aynı şema üzerindeki iki ilişkinin kesişimi, her iki ilişkide de görünen kayıtları tam olarak içeren bu şemadaki ilişkidir. Resmi olarak .
$∩S={t:t∈$ et t∈S}{\ displaystyle R \ cap S = \ {t: t \ R \ ve \ t \ S \} \,}![R \ cap S = \ {t: t \ R \ içinde ve \ t \ S \} \ içinde,](https://wikimedia.org/api/rest_v1/media/math/render/svg/d0b8708807f7bf45feb3166a095af69d00479203)
Futbolda kayıtlı kişiler
Soyadı |
İD
|
---|
Harry |
3415
|
sally |
2241
|
George |
3401
|
|
Piyano derslerine kaydolan kişiler
Soyadı |
İD
|
---|
Harry |
3415
|
Bertrand |
2
|
George |
3401
|
Yoda |
1000
|
|
Futbola kayıtlı kişiler ∩ Piyano derslerine kayıtlı kişiler
Soyadı |
İD
|
---|
Harry |
3415
|
George |
3401
|
|
fark
Aynı şema üzerindeki iki ilişkinin farkı, tam olarak birinci ilişkide görünen ancak ikinci ilişkide görünmeyen kayıtları içeren şema üzerindeki ilişkidir. Resmi olarak . Örneğin, futbola kayıtlı olup piyano dersi kaydı olmayan kişileri hesaplayabiliriz:
$-S={t:t∈$ et t∉S}{\ displaystyle RS = \ {t: t \ R \ ve \ t \ değil \ S \} \,}![RS = \ {t: t \ R \ ve \ t \ değil \ S \} \ içinde,](https://wikimedia.org/api/rest_v1/media/math/render/svg/099f141e07c19379fd8ccd4d8a49bf6f06b3f980)
Futbolda kayıtlı kişiler
Soyadı |
İD
|
---|
Harry |
3415
|
sally |
2241
|
George |
3401
|
|
Piyano derslerine kaydolan kişiler
Soyadı |
İD
|
---|
Harry |
3415
|
Bertrand |
2
|
George |
3401
|
Yoda |
1000
|
|
Futbolda kayıtlı İnsanlar - piyano dersleri kayıtlı İnsanlar
Soyadı |
İD
|
---|
sally |
2241
|
|
Kartezyen ürün
İki ilişkinin Kartezyen çarpımı ile, ikinci ilişkinin her bir demeti için birinci ilişkinin her bir demetini kopyalarız. Resmi olarak .$×S={(r,s):r∈$ et s∈S}{\ displaystyle R \ kez S = \ {(r, s): r \ in R \ ve \ s \ S \}}![{\ displaystyle R \ kez S = \ {(r, s): r \ in R \ ve \ s \ S \}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9d81eafde570307dae1f43b19b79de8b1f82cffb)
İnsanlar
Soyadı |
İD
|
---|
Harry |
3415
|
sally |
2241
|
|
Hediyeler
Tür |
Fiyat
|
---|
teslim edildi |
10
|
kek |
20
|
bilgisayar |
300
|
|
İnsanlar - Hediyeler
Soyadı |
İD |
Tür |
Fiyat
|
---|
Harry |
3415 |
teslim edildi |
10
|
Harry |
3415 |
kek |
20
|
Harry |
3415 |
bilgisayar |
300
|
sally |
2241 |
teslim edildi |
10
|
sally |
2241 |
kek |
20
|
sally |
2241 |
bilgisayar |
300
|
|
ilişkisel operatörler
seçim
Seçimi (ya da kısıtlayıcı), belirli bir koşulun yerine getirilmesi kayıt tutma oluşur. Aşağıdaki örnekte, yalnızca şehri Paris olan turistleri tutuyoruz.
- Veri: Karşılaştırmalar ve mantıksal bağlayıcıların birleşiminden oluşan bir ilişki ve formül .${\ görüntü stili R \,}
F{\ görüntü stili F \,}![F \,](https://wikimedia.org/api/rest_v1/media/math/render/svg/af686cd9f8a742bde6d8ee773ddebc793960d0ee)
- Sonuç: Turistler örneğinde tarafından verilen koşulu karşılarσF($)={r∈$:r{\ displaystyle \ sigma _ {F} (R) = \ {r \ R'de: r \,}
F}{\ görüntü stili F \} \,}
σVbenbenbene=′Pderbens′({\ displaystyle \ sigma _ {Şehir = 'Paris'} (\,}
){\ görüntü stili) \,}
- SQL eşdeğeri: NEREDE
Turistler
idTurist |
İsimT |
Kent |
Spor
|
---|
1 |
Marc |
Paris |
Kayak
|
2 |
Kot |
Toulouse |
Tenis
|
3 |
Frangı |
Marsilya |
Futbol
|
4 |
Thomas |
Lyon |
Yelken
|
5 |
Maks. |
Paris |
Golf
|
|
Şehrin Paris'e değer olduğu turist seçimi
idTurist |
İsimT |
Kent |
Spor
|
---|
1 |
Marc |
Paris |
Kayak
|
5 |
Maks. |
Paris |
Golf
|
|
Projeksiyon
-
Projeksiyon mümkün yalnızca belirli özelliklerini tutmak için yapar. Aşağıdaki örnekte, Turist ilişkisinin yalnızca NameT ve City özniteliklerini tutuyoruz.
- Verileri: Bir ilişki ve nitelik kümesi içinde${\ görüntü stili R \,}
AT{\ görüntü stili A \,}
${\ görüntü stili R \,}
- Sonuç: Bu, yalnızca özelliklerini dikkate aldığımız İlişkidir , örneğin TuristlerπAT($){\ görüntü stili \ pi _ {A} (R) \,}
${\ görüntü stili R \,}
AT{\ görüntü stili A \,}
πDEĞİLÖmT,Vbenbenbene({\ displaystyle \ pi _ {NameT, Şehir} (\,}
){\ görüntü stili) \,}
- SQL eşdeğeri: SELECT
Turistler
idTurist |
İsimT |
Kent |
Spor
|
---|
1 |
Marc |
Paris |
Kayak
|
2 |
Kot |
Toulouse |
Tenis
|
3 |
Frangı |
Marsilya |
Futbol
|
4 |
Thomas |
Lyon |
Yelken
|
5 |
Maks. |
Paris |
Golf
|
|
NomT ve Ville nitelikleri üzerinde Turist ilişkisinin projeksiyonu
İsimT |
Kent
|
---|
Marc |
Paris
|
Kot |
Toulouse
|
Frangı |
Marsilya
|
Thomas |
Lyon
|
Maks. |
Paris
|
|
yeniden adlandırma
-
Yeniden adlandırma :
- Verileri: Bir ilişki ve bir öznitelik ait${\ görüntü stili R \,}
b{\ görüntü stili b \,}
${\ görüntü stili R \,}
- Sonuç:, yeniden adlandırılan İlişki olanρde/b($){\ görüntü stili \ rho _ {a / b} (R) \,}
${\ görüntü stili R \,}
b{\ görüntü stili b \,}
de{\ görüntü stili bir \,}
- SQL eşdeğeri: AS
Katılmak
-
Katılın :
- Veri: iki ilişki ve${\ görüntü stili R \,}
S{\ görüntü stili S}
- Sonuç: $⋈S={(de,b,vs):(de,b)∈$ et (b,vs)∈S}{\ displaystyle R \ papyon S = \ {(a, b, c) :( a, b) \ in R \ ve \ (b, c) \ in S \} \,}
- SQL eşdeğeri: JOIN
Turistler
idTurist |
İsimT |
Kent |
Spor
|
---|
1 |
Marc |
Paris |
Kayak
|
2 |
Kot |
Toulouse |
Tenis
|
3 |
Frangı |
Marsilya |
Futbol
|
4 |
Thomas |
Lyon |
Yelken
|
5 |
Maks. |
Paris |
Golf
|
|
Hedefler
idTurist |
ŞehirD
|
---|
1 |
Cannes
|
2 |
İbiza
|
4 |
Tokyo
|
|
Turistler ⋈ Destinasyonlar
idTurist |
İsimT |
Kent |
Spor |
ŞehirD
|
---|
1 |
Marc |
Paris |
Kayak |
Cannes
|
2 |
Kot |
Toulouse |
Tenis |
İbiza
|
4 |
Thomas |
Lyon |
Yelken |
Tokyo
|
|
Bölünme
-
Bölme : girdi olarak iki bağıntı alırve.
$(x1,...,xm,y1,...,yp){\ displaystyle R (x_ {1}, ..., x_ {m}, y_ {1}, ..., y_ {p}) \,}
S(y1,...,yp){\ görüntü stili S (y_ {1}, ..., y_ {p}) \,}![S (y_ {1}, ..., y_ {p}) \,](https://wikimedia.org/api/rest_v1/media/math/render/svg/540ad513bd5a67ef9ea1fa2a005aaf4430c021e0)
- Böylece, herhangi bir demet, şema ve şema ile iki demete bölünebilir . ve gibi şema tablosunu döndürür . Bölme, "tüm x'leri öyle ki tüm y için..." şeklindedir.r∈${\ displaystyle r \ R'de \,}
r=(t,s){\ görüntü stili r = (t, s) \,}
t=(t1,...,tm){\ görüntü stili t = (t_ {1}, ..., t_ {m}) \,}
X={x1,...,xm}{\ displaystyle X = \ {x_ {1}, ..., x_ {m} \} \,}
s=(s1,...,sp){\ görüntü stili s = (s_ {1}, ..., s_ {p}) \,}
y={y1,...,yp}{\ görüntü stili y = \ {y_ {1}, ..., y_ {p} \} \,}
X{\ görüntü stili X \,}
$/S={t:∀s∈S, (t,s)∈$}{\ displaystyle R / S = \ {t: \ forall s \ in S, \ (t, s) \ in R \} \,}![R / S = \ {t: \ forall s \ in S, \ (t, s) \ R \} \ içinde,](https://wikimedia.org/api/rest_v1/media/math/render/svg/12223f885e64c8a72ed1626df15dc36574d87d2b)
dışavurumculuk
SPC cebiri (seçim, izdüşüm ve Kartezyen çarpım) bağlaç hesabına (ayrıksız ve olumsuzlamasız ilişkisel hesap) karşılık gelir: Codd teoreminin versiyonlarından biridir . SPCU-cebiri (birlik ve farkın eklendiği SPC cebiri) tüm ilişkisel hesaba karşılık gelir: Codd teoreminin başka bir versiyonudur . Equijoin Kartezyen bir çarpımla, ardından bir seçim, ardından bir izdüşüm ile ifade edilebilir.
Optimizasyon
İlişkisel bir cebir ifadesini başka bir eşdeğer ifadeye dönüştürmek için yeniden yazma kuralları.
uygulama
Ancak, ilişkisel veritabanları , ilişkisel cebirin belirlenmiş kurallarına göre tam olarak çalışmaz. Gerçekten de, bir birincil anahtar tanımlanmazsa , bir tabloya , bir perspektif topluluk listesinin hiçbir anlamı olmayan birkaç özdeş satır eklemek mümkündür : bir öğe bir kümenin parçası veya bir parçası değildir. Küme kurallarını katı bir şekilde uygulamak istiyorsak, her tablo eklendiğinde tanıtılan satırların zaten mevcut olmadığını kontrol etmeliyiz .
Modelin belirli nesneleri
Burada Etki Alanlarını (yani atom tipini) belirlemekle ilgili bir sorudur:
- Sayısal: tamsayı veya gerçek ( SQL : Int, Float, vb.);
- Karakter dizisi (SQL: Char (20), VarChar (32), vb.);
- Tarih (SQL: DATE, TIME, YIL, vb.);
- Numaralandırılmış tür.
Notlar ve referanslar
-
(içinde) Veritabanlarının Temelleri: Mantıksal Düzey , Addison-Wesley Longman Publishing Co., Inc.1995, 685 s. ( ISBN 978-0-201-53771-0 , çevrimiçi okuyun ) , s. 10
-
(içinde) Veritabanlarının Temelleri: Mantıksal Düzey , Addison-Wesley Longman Publishing Co., Inc.1995, 685 s. ( ISBN 978-0-201-53771-0 , çevrimiçi okuyun ) , Bölüm B - Temel Bilgiler: İlişkisel Sorgu Dilleri - s. 35
-
" veri tabanlarını ve SQL bilgi " üzerine, Developpez.com (erişilen 2019 Mayıs 19, )
-
http://www.scritube.com/limba/franceza/Aide-mmoire-sur-les-bases-de-d21481108.php
Şuna da bakın:
Dış bağlantılar
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">