มีเอ็นจิ้นฐานข้อมูลใดที่จะไม่เหมาะสมกับเงื่อนไขการเข้าร่วมตามคีย์ต่างประเทศที่มีอยู่


11

มันแปลกสำหรับฉันที่เมื่อฉันกำหนดคีย์ต่างประเทศแล้วเอ็นจินไม่สามารถใช้ข้อมูลนี้เพื่อค้นหานิพจน์ JOIN ที่ถูกต้องโดยอัตโนมัติ แต่ต้องการให้ฉันพิมพ์ประโยคเดิมซ้ำอีกครั้ง มีฐานข้อมูลใดบ้างหรืออาจเป็นโครงการวิจัยบางประเภทที่จะตรวจสอบคีย์ต่างประเทศที่มีอยู่

คำตอบ:


4

ฉันไม่ทราบว่ามีการใช้คีย์ต่างประเทศ (และอาจจะยุ่งถ้าคุณมีคีย์ต่างประเทศมากกว่าหนึ่งกลับไปที่ตารางเดียวกัน)

แต่ออราเคิลจะทำการเชื่อมโยงออกจากชื่อคอลัมน์หากคุณไม่ได้ระบุประเภทการเข้าร่วมเฉพาะหรือเงื่อนไขการเข้าร่วมหรือหากคุณใช้NATURAL JOIN


ทำไมมันจะยุ่งถ้าคุณมีกุญแจต่างประเทศมากกว่าหนึ่งที่อยู่ในตารางเดียวกัน หากคุณกำลังมองจากมุมมองของตาราง "ผู้ปกครอง" ก็ยังควรมีความชัดเจนเป็นสิ่งที่บันทึกในเด็กที่คุณมีความสนใจ
เบ ธ Whitezel

@Bitoff คุณอาจมีมากกว่าหนึ่งความสัมพันธ์ระหว่างสองตารางและดังนั้นจึงไม่ใช่คีย์ผสม แต่จริงๆแล้วมีคีย์ต่างประเทศมากกว่าหนึ่งคีย์ไปยังตารางลูก ตัวอย่างเช่นในงานก่อนหน้านี้เรามีฐานข้อมูลขององค์กรและในตารางนั้นมีลิงค์เชื่อมโยงไปยังสารบัญของฉันสองคน - หัวหน้าแผนกและผู้ติดต่อหลัก (ปกติคือเลขา) มีคีย์ต่างประเทศในทิศทางตรงกันข้ามเนื่องจากพนักงานได้รับมอบหมายให้แผนกจนกระทั่งเราต้องแบ่งมันออกเพื่อสนับสนุนความสัมพันธ์แบบหลายต่อหลายคน
Joe

ฉันรู้ว่าไม่มี RDBMS ทั่วไปทำเช่นนี้ - ตามที่คำถามฉันใส่คำถามไว้ที่นั่นเพื่อดูว่ามีใครเคยได้ยินสิ่งใหม่ในพื้นที่นี้หรือไม่
TML

1
-1 สิ่งนี้ไม่ถูกต้องเกี่ยวกับพฤติกรรมของ Oracle และไม่ใช่คำตอบที่คุณเชื่อมโยงไปถึง ตามที่แกรี่ชี้ให้เห็น (ความคิดเห็นที่สามสำหรับคำตอบของคุณ) " natural joinไม่เคยเป็นค่าเริ่มต้น" Tom Kyte นั้นถูกต้องแน่นอนเมื่อเขาเรียกnatural join ว่าบั๊กที่รอเกิดขึ้น
Jack พูดว่าลอง topanswers.xyz

4

มันจะเจ๋งจริง ๆ ถ้าฉันสามารถเขียนนี้

from calendar join table1

และ dbms จะรู้ว่าจำเป็นต้องประเมินสิ่งนี้

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

เจ๋งจริงๆ แต่ไม่ใช่การเข้าร่วมทุกครั้งเป็นการเข้าร่วมที่เท่าเทียมกัน

FWIW NATURAL JOINอยู่ในมาตรฐาน SQL แต่ฉันค่อนข้างแน่ใจว่าฉันไม่ได้ใช้ในช่วง 25 ปีที่ผ่านมา

หากคุณพบว่าคุณกำลังเขียนคำสั่งเข้าร่วมเดียวกันซ้ำไปซ้ำมาคุณอาจต้องการมุมมองเพิ่มเติม


3

มีรายการที่สมบูรณ์แบบอัตโนมัติสำหรับโปรแกรมแก้ไขที่คุณเลือกเพื่อแนะนำการเข้าร่วมที่เหมาะสมโดยอัตโนมัติหากการพิมพ์เป็นเรื่องที่น่ากังวล พรอมต์ SQL ของ RedGate สำหรับจัดการ SQL Server ใน SSMS & Visual Studio ฉันเชื่อว่าคางคกของ Quest จะจัดการกับ Oracle และ RDMS ยอดนิยมอื่น ๆ


ไม่มี "ความกังวล" ที่แท้จริงเพียงแค่สงสัยว่านี่คือสิ่งที่ทุกคนกำลังมองหาที่อยู่
TML

@TML ฉันสงสัยทุกคนเป็นกังวลเกี่ยวกับเรื่องนี้เช่นนี้เป็นจริงในโดเมนของตรรกะการประยุกต์ใช้กับความเข้าใจของฉัน (ที่ตรรกะสมัครเป็นสิ่งที่ไม่เกี่ยวข้องกับการทำงานของเซิร์ฟเวอร์ฐานข้อมูลในสิ่งที่เราได้รับเงินจะทำ)
jcolebrand
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.