Mevcut yabancı anahtarlara göre birleştirme koşulunu sezecek herhangi bir veritabanı motoru var mı?


11

Yabancı bir anahtar tanımladığımda, motorun bu bilgileri otomatik olarak doğru JOIN ifadelerini bulmak için kullanamayacağı, bunun yerine aynı maddeleri yeniden yazmamı gerektirmesi garip görünüyor. Mevcut yabancı anahtarları inceleyecek herhangi bir veri tabanı, belki de bir çeşit araştırma projesi var mı?

Yanıtlar:


4

Yabancı anahtar kullanan herhangi birinin farkında değilim (ve aynı tabloya geri dönen birden fazla yabancı anahtarınız varsa bu karışıklık yaratabilir)

Ancak , belirli bir birleştirme türü veya bir birleştirme koşulu belirtmezseniz veyaNATURAL JOIN


Aynı masaya birden fazla yabancı anahtarınız varsa neden dağınık olsun ki? Eğer ona "ebeveyn" masa perspektifinden bakıyorsanız, çocukta hangi kaydın ilgilendiğiniz konusunda hala net olmalıdır.
Beth Whitezel

@Bitoff, iki tablo arasında birden fazla ilişkiniz olabilir ve bu nedenle bileşik bir anahtar değil, aslında alt tablo için birden fazla yabancı anahtar olabilir. Örneğin, önceki bir işte bir organizasyon veritabanımız vardı ve bu tabloda bölümümün başkanı ve birincil irtibat kişisi (genellikle sekreter) olmak üzere iki kişilik tabloma iki bağlantı var. Personel bir bölüme atanırken, çoktan çoğa ilişkileri desteklemek için onu kırmak zorunda kalana kadar, ters yönde yabancı bir anahtar vardı.
Joe

Ortak RDBMS'lerin hiçbirinin bunu yapmadığını biliyorum - soru belirttiği gibi, bu alanda yeni bir şey duyup duymadığını görmek için soruyu orada ortaya koydum.
TML

1
-1 Bu Oracle davranışı için doğru değil ve bağlandığınız cevabınız da değildi. Gary'nin işaret ettiği gibi (cevabınızın üçüncü yorumu), " natural joinhiçbir zaman varsayılan olmadı". Bu arada, Tom Kyte natural join olmasını bekleyen bir hatayı
Jack diyor ki topanswers.xyz

4

Bunu yazabilseydim çok güzel olurdu

from calendar join table1

ve dbms bunu değerlendirmesi gerektiğini bilirdi.

from calendar
left join table1 on (work_date between (cal_date - 13) and cal_date)

Gerçekten harika. Ancak her bir birleşim eşit bir birleşim değildir .

FWIW, NATURAL JOINSQL standardındadır. Ama son 25 yıldır kullanmadığımdan eminim.

Kendinizi aynı katılma maddelerini tekrar tekrar yazıyorsanız, belki de daha fazla görünüme ihtiyacınız vardır.


3

Yazma kaygınız varsa, uygun birleştirme ifadelerini otomatik olarak önermek üzere seçtiğiniz editörünüz için otomatik tamamlama araçları vardır. RedGate'in SQL Server'ı SSMS ve Visual Studio'da işleme istemi. Quest TOAD'ın Oracle'ı ve diğer bazı popüler RDMS'leri ele alacağına inanıyorum.


Hiçbir gerçek "endişe", sadece bu herkesin ele almak isteyen bir şey olup olmadığını merak.
TML

@TML Bu gerçekten benim anlayışım için uygulama mantığı alanında olduğu için herkesin bu konuda endişeli olduğundan şüphe ediyorum (uygulama mantığı bir veritabanı sunucusu çalıştırmakla ilgili olmayan şeyler, yapmak için para aldığımız şeyler)
jcolebrand
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.