Apakah ada mesin database yang akan menghubungkan kondisi gabungan berdasarkan kunci asing yang ada?

11

Tampaknya aneh bagi saya bahwa, ketika saya telah mendefinisikan kunci asing, mesin tidak dapat menggunakan informasi ini untuk secara otomatis mengetahui ekspresi GABUNG yang benar, tetapi sebaliknya mengharuskan saya untuk mengetik ulang klausa yang sama. Apakah ada database, mungkin semacam proyek penelitian, yang akan memeriksa kunci asing yang ada?

TML
sumber

Jawaban:

4

Saya tidak mengetahui ada yang menggunakan kunci asing (dan itu bisa berantakan jika Anda memiliki lebih dari satu kunci asing kembali ke tabel yang sama)

Tetapi Oracle akan mendasarkan gabungan dari nama kolom jika Anda tidak menentukan tipe gabungan spesifik atau kondisi gabungan, atau jika Anda menggunakannyaNATURAL JOIN

Joe
sumber
Mengapa menjadi berantakan jika Anda memiliki lebih dari satu kunci asing ke tabel yang sama. Jika Anda melihatnya dari perspektif tabel "parent", masih harus jelas seperti apa catatan pada anak yang Anda minati.
Beth Whitezel
@ Bitoff Anda mungkin memiliki lebih dari satu hubungan antara dua tabel, dan jadi bukan kunci komposit, tetapi sebenarnya lebih dari satu kunci asing ke tabel anak. Misalnya, dalam pekerjaan sebelumnya, kami memiliki database organisasi, dan dalam tabel itu ada dua tautan ke tabel orang - kepala departemen, dan kontak utama (biasanya, sekretaris). Ada kunci asing di arah yang berlawanan, karena anggota staf ditugaskan ke departemen, sampai kami harus memecahkannya untuk mendukung hubungan banyak-ke-banyak.
Joe
Saya tahu tidak ada RDBMS umum yang melakukan ini - seperti yang dinyatakan dalam pertanyaan, saya mengajukan pertanyaan di luar sana untuk melihat apakah ada yang pernah mendengar sesuatu yang baru di bidang ini.
TML
1
-1 Ini tidak benar tentang perilaku Oracle, dan tidak juga jawaban Anda yang Anda tautkan. Seperti yang ditunjukkan oleh Gary (komentar ketiga untuk jawaban Anda), " natural jointidak pernah menjadi default". Kebetulan, Tom Kyte pasti benar ketika dia menyebut natural join bug yang menunggu untuk terjadi
Jack mengatakan coba topanswers.xyz
4

Ini akan menjadi benar-benar keren jika aku bisa menulis ini

from calendar join table1

dan dbms akan tahu bahwa ia perlu mengevaluasi ini.

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

Sangat keren. Tetapi tidak semua join adalah equi-join .

FWIW, NATURAL JOINdalam standar SQL. Tapi saya cukup yakin saya belum menggunakannya dalam 25 tahun terakhir.

Jika Anda mendapati diri Anda menulis klausa gabungan yang sama berulang kali, mungkin Anda hanya perlu lebih banyak dilihat.

Mike Sherrill 'Cat Recall'
sumber
3

Ada utilitas pelengkap otomatis untuk editor pilihan Anda untuk secara otomatis menyarankan pernyataan bergabung yang tepat jika mengetikkan masalah. RedGate's SQL Prompt untuk menangani SQL Server di SSMS & Visual Studio. Saya percaya Quest's TOAD akan menangani Oracle dan beberapa RDMS lain yang lebih populer.

Eric Humphrey - lotahelp
sumber
Tidak ada "kepedulian" yang nyata, hanya ingin tahu apakah ini sesuatu yang ingin dilihat orang.
TML
@TML Saya ragu ada yang khawatir tentang ini karena ini benar-benar berada dalam domain logika aplikasi menurut pemahaman saya (di mana logika aplikasi adalah hal-hal yang tidak berkaitan dengan menjalankan server database, hal-hal yang harus dibayar untuk dilakukan)
jcolebrand