問題タブ [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 - RIを壊さずに参照の輪を追加できますか/どのようにしますか?
私は主にこれについてpgsqlに興味がありますが、相互に参照する2つのテーブルで、FOREIGN KEYまたはNOT NULL制約を無効にして再度有効にすることなく、RDBMSで挿入操作を行う方法があるかどうか疑問に思っていました. (これは、自分の卵から生まれたニワトリと考えてよいでしょう。)
実用的な例として、多肢選択式のクイズ システムに「question」と「answer」というテーブルがあり、ここで question.correct_answer が answer.id を参照し、answer.question が question.id を参照している場合、追加することは可能ですか?質問とその回答を同時に?
(記録として、トランザクションブロックで無効化と再有効化を行うことができること、および別の解決策は、 correct_answer 列を持たず、代わりにブール値として answer.correct を持ち、チェック制約を作成することであることを認識しています質問ごとに正確に 1 つの正解があることは確かですが、ここでの別の解決策については興味がありません。)
database - 外部キーの命名スキーム
初めて外部キーを使い始めたばかりで、それらに使用する標準の命名スキームがあるかどうか疑問に思っていますか?
これらのテーブルを考えると:
タスクにはメモがあり、タスクはユーザーが所有し、ユーザーはメモを作成します。
この状況で、3 つの外部キーはどのように命名されるでしょうか? または、それはまったく問題ですか?
更新: この質問は、フィールド名ではなく、外部キー名に関するものです!
mysql - テーブルまたは列へのすべての外部キーを確認するにはどうすればよいですか?
MySQL で、特定のテーブルを指すすべての外部キー制約のリストを取得するにはどうすればよいですか? 特定の列?これは、この Oracle の質問と同じですが、MySQL の場合です。
database - プライマリの代わりに2つの外部キー
主キーなしで、外部キーのペアが常に異なる2つの外部キーを使用してテーブルを作成する可能性はありますか?たとえば、およびSTOCK
テーブルからの外部キーとしてのテーブル。したがって、同じアイテムが異なる倉庫にある可能性があります。テーブルのビュー:item_id
warehouse_id
ITEMS
WAREHOUSES
または、自動インクリメントなどで未使用の主キーフィールドを作成する必要がありますか?データベースはオラクルです。
ありがとう!
sql - 列名に主キー/外部キー属性を指定する理由
最近のいくつかの質問では、列に名前を付けるための戦略について説明していますが、列名に外部キーと主キーの概念を埋め込むという概念を発見したことに、私はかなり驚きました。あれは
この種のスキームを使用するデータベースシステムで作業したことは一度もないことを告白する必要があります。その利点は何でしょうか。私の見方では、システムのN個のプリンシパルテーブルを学習したら、それらのテーブルを使用して数桁多くのリクエストを記述します。
開発で生産性を高めるには、どのテーブルが重要なテーブルであり、どのテーブルが単純な支流であるかを学ぶ必要があります。かなりの数の列名をメモリにコミットする必要があります。そして、基本的なタスクの1つは、2つのテーブルを結合することです。学習の労力を減らすために行う最も簡単な方法は、両方のテーブルで列名が同じであることを確認することです。
開発者として、どの列が主キーであり、どの列が外部であり、どの列が何でもないことについて、それほど気にする必要はないと思います。興味があれば、スキーマを確認するのは簡単です。ランダムに見るとき
...どれが外部キーであるかを知ることはそれほど重要ですか?外部キーは、データベースエンジン自体にとってのみ重要であり、参照整合性を確保し、更新および削除中に正しいことを実行できるようにします。
ここでどのような問題が解決されていますか?(私はこれが議論への招待であることを知っています、そしてそうすることを遠慮なくしてください。しかし同時に、私は本当に何かを逃しているかもしれないという点で答えを探しています)。
sql - 「更新時」および「削除時」オプションのPostgres外部キーはどのように機能しますか?
これらの機能が何をするのか、そしていつそれらを使用するのが適切であるのかについて、誰かが明確な説明/例を提供できますか?
sql - MySQLの外部キー?
ここ数週間、SQLをゆっくりと学んでいます。私はすべての関係代数とリレーショナルデータベースがどのように機能するかの基本を学びました。私が今やろうとしているのは、それがどのように実装されているかを学ぶことです。
私がこれで遭遇したつまずきは、MySQLの外部キーです。MySQLが持っているInnoDBストレージスキーマに存在すること以外は、あまり見つけられないようです。
MySQLに実装された外部キーの簡単な例は何ですか?
これが私が書いたスキーマの一部であり、実際の例を示すよりも私の欠陥を指摘したい場合は機能していないようです。
database - 自己参照テーブル列を外部キーにする必要がありますか?
たとえば、カテゴリの階層を作成するには、同じテーブル内の別のカテゴリを指す列'parent_id'を使用します。
これは外部キーである必要がありますか?短所/短所は何でしょうか?
sql-server - FOREIGN KEY 制約によって参照されているため、テーブルを切り捨てることはできませんか?
MSSQL2005 を使用して、最初に子テーブル (FK リレーションシップの主キーを持つテーブル) を切り捨てた場合、外部キー制約を持つテーブルを切り捨てることはできますか?
私はどちらかができることを知っています
DELETE
where 句なしで a を使用し、次にRESEED
ID (または)- FK を削除し、テーブルを切り詰めて、FK を再作成します。
親の前に子テーブルを切り詰める限り、上記のオプションのいずれも行わなくても大丈夫だと思っていましたが、次のエラーが発生しています。
FOREIGN KEY 制約によって参照されているため、テーブル 'TableName' を切り捨てることができません。
nhibernate - NHibernate を使用して列挙型を永続化する方法
NHibernate を使用して列挙型を DB に永続化する方法はありますか? つまり、列挙型の各値のコードと名前の両方のテーブルがあります。
エンティティなしで列挙型を保持したいが、他のすべての参照エンティティから列挙型のテーブルへの外部キー (列挙型の int 表現) を保持したい。