Bir SQL sorgusunda (veya görünüm tanımında) “projeksiyon” terimi ne anlama gelir?


15

Oracle'ın The Query Optimizer belgesinde , View Birleştirme altında aşağıdaki bilgileri buldum

Görünüm birleştirme optimizasyonu yalnızca seçimler, projeksiyonlar ve birleşimler içeren görünümler için geçerlidir . Diğer bir deyişle, birleştirilebilir görünümler ayarlanmış işleçler, toplama işlevleri, DISTINCT, GROUP BY, CONNECT BY, vb. İçermez. (benimkini vurgula)

Ancak, sadece böyle bir projeksiyonun gerçekte neyi ifade ettiğini tahmin edebilirim.

Yanıtlar:


17

İlişkisel cebirde, yansıtma, işlemlerde kullanılmak üzere bir sütun alt kümesinin toplanması anlamına gelir, yani bir projeksiyon, seçilen sütunların listesidir.

Bir sorgu iyileştirici adımında, projeksiyon, alttaki tablodan veya operatörden sütunların bir alt kümesini veya sonraki işlemler tarafından kullanılan sütunlara dayanan mantıksal bir görünümü içeren bazı açıklamanın bir tampon veya biriktirme alanı olarak kendini gösterir.

Bir görünümde, bir projeksiyon, görünümün altındaki sorguda seçilen sütun listesine eşittir.


13

Yansıtma , bir tabloda bulunan ve döndürülmesini istediğiniz tüm sütun kümesinin alt kümesini ifade eder. 0 ** 'dan komple sete kadar her yerde olabilir.

Tabloda tablonun iki boyutuna karşılık gelen iki "küme" vardır. Her tablonun bir dizi sütun ve bir dizi satırı vardır . Bir tablodaki her bir değer , bu iki * kümenin ** belirli bir kesişim noktasında bulunabilir . Ancak, değeriniz T60 gibi bir adrese Excel'de yaptığınız gibi "giderek" bulunamaz .

İlişkisel tablolarda doğal bir düzen yoktur . Hatırlamak önemli. Bunun yerine, tek bir değerinizi almak için sütunların bir alt kümesini (bu durumda bir tane) ve satırların bir alt kümesini (bu durumda bir tane) seçersiniz. Mevcut tüm sütunlardan bir sütunun bir alt kümesini seçmek için, yalnızca adını ve tablo adını bilmeniz gerekir. Sütun adı, tablosunda benzersiz olacaktır.

Değerinizin bulunduğu sütunu seçtikten sonra, içinde bulunduğu belirli satırı seçmeniz gerekir. Ancak, satırların sütunların yaptığı gibi adları yoktur. Bir satırı belirtme şeklimiz. . . tam olarak bilmiyoruz. . . Aradığımız değer hakkında bildiğimiz bir şey belirliyoruz. Aradığınız değerle (tam anlamıyla) ilgili bir şey bilmek zorundasınız. Yeterli ilgili bilgi belirtebiliyorsanız, döndürülen satır kümesini yalnızca aradığınız kişiye azaltabilirsiniz.

Bunu bir üniversite öğrencisinin sırt çantasını kaybetmiş gibi düşünün. Diyelim ki bir adam kaybetti. Kayıp aradı ve katılan kadın "Evet, birkaç düzine sırt çantası var. Bunu tarif edebilir misin?" "Peki, mavi mi?" "Bana soruyor musun yoksa bana mı söylüyorsun?" Diye cevaplıyor ve sonra "Sekiz mavi olanım var, bundan daha iyisini yapmak zorunda kalacaksın ve bundan pek emin değilsin" diyor. "Bakalım, umm, oh evet! Matematik 1010 kitabım vardı." "Güzel, şimdi dörde düştün." Sonra hatırlıyorsunuz kız arkadaşınız Lucy ile 15 dakika içinde tanışmanız gerekiyor ve bu da başka bir hafızayı tetikledi - Math 1010'da sıkıldığınız ve yazdığınız - sırt çantasının altındaki gerçek küçük harflerle " "Ricky . "

Projeksiyon , kaybettiğiniz şeyi söylemeye benzeyebilir - bir sırt çantası. Seçim , özelliklerini tanımlamaya benzeyebilir : mavi, içinde bir matematik 1010 kitabı var ve altta "I love Lucy" yazıyor.

Aynı şeyi SQL için de yaparsınız. İlk olarak, ne tür bilgileri görmek istersiniz. İkincisi, hangisini veya hangilerini görmek istediğinizi açıklayan kriterler. Bunlara yüklemler veya doğruluk ifadeleri denir . Setin bir veya daha fazla üyesi için geçerlidirler. Değilse, herhangi bir değer döndürmezler.

* Bazı satıcıların SQL uygulamaları, Oracle'daki İç İçe Tablolar gibi bu kuralları ihlal etmek için araçlar sağlar. Bununla birlikte, standart iki boyutlu tablolar hala baskın formdur.

** CJ Date, "Sütunsuz Bir Tablo" adlı çok ilginç bir makale yazdı. Onun birçok "Yazı" makalelerinin çoğunu yaptığım için okumaya değer buldum. Onları tavsiye ederim!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.