問題タブ [foreign-keys]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server-2005 - 制約に一致しない外部キーを照会するにはどうすればよいですか?
SQL サーバー 2005。
外部キー制約を必要としないアプリケーションのデータベースに追加しています。当然、データは信頼できなくなり、外部キー フィールドに孤立したエントリが存在します。
セットアップ:
2 つのテーブル、TableUser と TableOrder。TableUser には主キー 'UserID' があり、TableOrder には外部キー 'UserID' があります。
TableOrder.UserID が TableUser.UserID に一致するエントリがない行を見つけるにはどうすればよいですか?
たとえば、TableOrder.UserID の値は 250 ですが、250 に一致する TableUser.UserID キーはありません。
mysql - MySQL でリレーションシップを作成する方法
クラスでは、全員がデータベースを「勉強」しており、全員が Access を使用しています。これに飽きて、私はクラスの残りの部分が行っていることをしようとしていますが、Access を使用する代わりに MySQL を使用して生の SQL コマンドを使用しています。
データベースとテーブルを作成できましたが、2 つのテーブル間の関係を作成するにはどうすればよいですか?
次のような 2 つのテーブルがある場合:
と
2 つのテーブル間に「関係」を作成するにはどうすればよいですか? 各アカウントに 1 つの customer_id を「割り当て」たい (所有者を示すため)。
sql-server - クロスデータベースの外部キー参照の欠如に関する SQL 設計
良くも悪くも、すべてが共通の管理データベースを参照する複数のデータベースに依存するソリューションがあります。データベースはモジュールの一部として出荷されますが、すべてのモジュールがインストールに必要なわけではありません (おそらく、最初に複数のデータベースがある理由です)。ただし、管理データベースは必要です...そのため、常に存在します。
混乱に参照整合性と秩序をもたらしたいと思っていますが、SQL サーバーがクロスデータベースの外部キーを実行できないことが妨げになっています。データベースには多くのチャーンはありませんが、技術者以外のユーザーによって情報が挿入/更新されます。
私が見たときの私の選択肢は次のとおりです。
a)トリガーを使用して疑似外部キーを課す(OKですが、少し手間がかかります)
b)トリガーを使用して、管理者から他のデータベースに複製します(災害の明確なレシピ)
c)コード/ DALに疑似外部キーを課す(ORMではうまく機能しない)
d) DB レベルで心配する必要はありません。優れた UI デザインを使用して、誰も愚かなことをしないようにし、アクセスを制限し、SQL への直接アクセスを制限します。
率直に言って、私は「D」に行きたいと思っていますが、私よりも賢い意見を求めると思いました...
sql-server - 複合テーブルを参照する外部キー
私はテーブル構造を持っていますが、最善の方法を作成する方法がよくわかりません。
基本的に、tblSystemItems と tblClientItems の 2 つのテーブルがあります。「アイテム」を参照する列を持つ 3 番目のテーブルがあります。問題は、この列がシステム アイテムまたはクライアント アイテムのいずれかを参照する必要があることです。どちらでもかまいません。システム アイテムには 1..2^31 の範囲のキーがあり、クライアント アイテムには -1..-2^31 の範囲のキーがあるため、衝突は発生しません。
アイテムをクエリするときはいつでも、2 つのテーブルの内容間で UNION ALL を実行するビューを使用してクエリを実行しています。
したがって、最適には、ID を一意に保ちながら、ビューは常に 2 つのテーブルの結合になるため、ビューの結果を参照する外部キーを作成したいと考えています。しかし、ビューを参照できないため、これを行うことはできません。
これで、外部キーをドロップするだけで問題ありません。ただし、参照チェックとカスケード削除/null 機能の設定が本当に必要です。トリガー以外にこれを行う方法はありますか?
sql - MySQL:外部キー関係をプログラムで決定する方法は?
この質問に似ていますが、MySQLの場合....
MySQL で外部キー参照をプログラムで特定するにはどうすればよいですか (InnoDB を想定)。私はほとんどそれらを得ることができます:
...しかし、残念ながら、この情報の一部が含まれていると思われるコメント欄が切り捨てられてしまい、信頼できません。何か他の方法があるはずです...
C API 呼び出し、SQL ステートメント、何でも構いません。一貫して機能するものが必要です。
注: 「SHOW CREATE TABLE MyTableName」ステートメントの結果を解析することも検討しましたが、もっと簡単なものがあることを本当に望んでいます。
sql-server - 外部キーは SQL Server で自動的にインデックス付けされますか?
次の SQL ステートメントは、Table1.Table1Column にインデックスを自動的に作成しますか、それとも明示的に作成する必要がありますか?
データベース エンジンは SQL Server 2000 です
sql - SQL : 1 つの外部キーが複数のテーブルの 1 つの主キーを参照する
私は、他のアプリケーションの拡張可能なフレームワークとして使用されるアプリケーションに取り組んでいます。
基本クラスの 1 つは Node と呼ばれ、Node には Content があります。SQL テーブルは次のようになります。
TABLE Node ( NodeId int, .... など )
TABLE NodeContentRelationship ( NodeId int, ContentType 文字列, ContentId int)
アプリケーションを拡張して独自のコンテンツ タイプを作成するのは開発者次第です。
外部キー列であってもNodeContentRelationship.ContentId に外部キー関係を追加することはできないため、これは関係データベースの観点から明らかに悪いことです。
ただし、ソリューションは非常にシンプルで強力なので、変更するのは気が進まない.
あなたはどう思いますか?
mysql - phpMyAdmin で外部キーが消える
mysql 内に新しいテーブルを作成しており、フィールドの 1 つに外部キー制約を追加しようとしています。
ただし、作成後、phpMyAdmin に移動してテーブルをエクスポートします。外部キー制約がなくなったようです。
phpMyAdmin は外部キーを削除しますか、それともここで何か間違ったことをしていますか?
linq-to-sql - LINQtoSQL-ForeignKeyのNullableINT="関連付けを作成できません..."
INTである主キーを持つテーブルがあります...その最初のテーブルに対して外部キー関係を持つ別のテーブルがありますが、それはNULL可能INTです。
これは完全に問題なく、SQLには100%受け入れられます...ただし、LINQ to SQLは、型の不一致( "int to Nullable [int]")について不平を言っています。
エラーメッセージ:関連付け「Store_People」を作成できません。プロパティに一致するタイプがありません: "PersonID"、"ID"。
設計者がSQLの100%正しい使用法で怒鳴るのをやめるように、これをどのように解決しますか?
mysql - MySQL用語「制約」と「外部キー」の違い?
ここでMySQLのドキュメントを見て、FOREIGN KEYとCONSTRAINTの違いを整理しようとしています。FKは制約だと思っていましたが、ドキュメントはそれらが別のものであるかのように話しているようです。
FK を作成するための構文は (一部)...
したがって、「CONSTRAINT」句はオプションです。なぜ入れたり入れなかったりするのですか?省略した場合、MySQL は外部キーを作成しますが、制約は作成しませんか? それとも、「CONSTRAINT」は FK の名前にすぎないので、指定しないと匿名の FK になるのでしょうか。
明確化をいただければ幸いです。
ありがとう、
イーサン