既存の外部キーに基づいて結合条件を直感的にするデータベースエンジンはありますか?


11

外部キーを定義したときに、エンジンがこの情報を使用して正しいJOIN式を自動的に把握できず、代わりに同じ句を再入力する必要があるのは不思議に思えます。既存の外部キーを検査するデータベース、ある種の研究プロジェクトはありますか?

回答:


4

私は外部キーを使用するものは知りません(同じテーブルに複数の外部キーがある場合は面倒になる可能性があります)

ただし、特定の結合タイプや結合条件を指定しない場合、またはNATURAL JOIN


同じテーブルに複数の外部キーがあると、どうして面倒になるのでしょうか。。あなたが「親」テーブルの観点からそれを見ている場合、それはまだあなたが興味を持っている子のどのレコードへと明確にする必要があり
ベスWhitezel

@Bitoff 2つのテーブル間に複数の関係がある可能性があるため、複合キーではなく、実際には子テーブルに対する複数の外部キーがあります。たとえば、前の仕事では、組織のデータベースがあり、そのテーブルには、私の人のテーブルへのリンクが2つあります。部長と主要な連絡先(通常は秘書)です。多対多の関係をサポートするために分割する必要があるまで、スタッフメンバーが部門に割り当てられているため、反対方向に外部キーがありました。
Joe

私は一般的なRDBMSのどれもこれを行わないことを知っています-質問が述べているように、私は誰かがこの領域で何か新しいことを聞いたかどうかを確かめるためにそこに質問を出しました。
TML

1
-1これはOracleの動作については正しくありません。また、リンク先の回答も正しくありません。ゲーリー(あなたの答えに対する3番目のコメント)が指摘したように、「natural joinデフォルトになったことは一度もありません」。ちなみに、トム・カイトは、彼が呼び出した右とき確実であるnatural join 起こるのを待ってバグを
ジャックは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

入力が懸念される場合、適切な結合ステートメントを自動提案するために選択したエディター用のオートコンプリートユーティリティがあります。SSMSとVisual StudioでSQL Serverを処理するためのRedGateのSQLプロンプト。クエストのTOADはOracleと他のより人気のあるRDMSのいくつかを処理すると思います。


本当の「懸念」はありません。これが誰かが対処しようとしているものかどうか疑問に思っています。
TML

@TMLこれは本当に私の理解するアプリケーションロジックの領域にあるため、誰もこれについて心配しているとは思いません(アプリケーションロジックは、データベースサーバーの実行に関係のないものであり、私たちが支払うことになるものです)
jcolebrand
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.