問題タブ [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.

0 投票する
2 に答える
2499 参照

mysql - MySQL-2つのインデックスを作成します。1つだけがSHOWCREATETABLE出力に表示されます

多対多のリンクテーブルがあり、その上に2つの外部キーを設定しようとしています。私はこれらの2つのステートメントを実行します:

実行すると、次のように表示されるSHOW CREATE TABLE address_list_membershipsと思います。

しかし、代わりに私はこれを取得します:

インデックスが1つしかないように見えます。外部キーを作成するたびにMySQLが参照列にインデックスを自動的に作成するというMySQLのドキュメントと矛盾しているようです。

CocoaMySQLやSQLyogなどのGUIツールを使用するか、コマンドラインで実行するかにかかわらず、テーブルに2つのFKを作成するたびに、この1つのインデックスのみに気づきました。

この謎の照明は非常にありがたいです。

0 投票する
4 に答える
8527 参照

mysql - Rails での外部キー制約のサポート

Ruby on Rails では、移行時に外部キー制約を追加する方法は?

0 投票する
1 に答える
2246 参照

mysql - Null 可能な FK を持つ MySQL 複合 PK

まず、この質問の前に、私は本当にひどいデータ モデラーであると述べさせてください。私は危険なことだけを知っています。

作成中のテーブルには 4 つの外部キーがあり、そのうちの 2 つは同じテーブルを参照しています。そのテーブルの create ステートメントを次に示します。

この記事で気になるインデックスはfk_reputation_log_userfk_reputation_log_user1です。すべてのレピュテーション イベントにはギバーがいますが、レシーバーがいるのは一部だけです。この FK を null 可能にしたいのですが、それを行う方法がわかりません。また、それが「許可」されているかどうかもわかりません。

また、すべての FK 列を主キーの一部にして、重複したログ エントリに対するデータベース レベルの保護を実現するというアイデアも考えましたが、PK 列は NOT NULL である必要があるため、これは機能しません。

詳細が必要な場合は、コメントにその旨を記載してください。ありがとう!

(はい、これは SO が持っているものとあまり似ていない評判システム用です)

0 投票する
3 に答える
4990 参照

python - Django MTMField: limit_choices_to = other_ForeignKeyField_on_same_model?

次のような django モデルがいくつかあります。

ギャラリー モデルの作業を行うために、あらゆる種類の楽しみを持っています。limit_choices_toこのギャラリーと同じサイトに属する写真の選択肢のみを管理者に表示してもらいたいです。これは可能ですか?

0 投票する
3 に答える
2652 参照

django - Django の親保存で ForeignKey オブジェクトへのアクセスを取得する

インライン編集と ForeignKey を使用して、django のモデルに追加されたすべての画像を組み合わせた画像を作成しようとしています。私はこれらのモデルを持っています(簡略化):

次に、AdminInline を使用して Model に Image を追加するので、Model を保存するときに x 個の画像を保存します。

しかし、on_model_saved 関数で Modell.images.all を使用して何かをしようとすると、オブジェクトを取得できません。Modell.save() で実行されるこの関数を取得しました

これは、初めてモデルを保存するのではなく、2回目に何かを印刷するだけです。AdminInline で追加するすべてのアイテムが保存された後に関数を呼び出す方法を知っている人はいますか?

0 投票する
2 に答える
6420 参照

oracle - インデックス化されていない外部キーが TM エンキューの競合につながる

TM Enqそのため、競合の原因の 1 つは、インデックスのない FK である可能性があると言われています。私の質問はどれですか。

INSERT INTO Table_Bは録音している を持っていTM Enq Waitます。

PK他のテーブルの親である が含まれており、FK他の に制約されている列がありますPK

では、FKインデックスを作成する必要があるのはどれですか?そのテーブルの列またはその子?

注: これが TM 競合の唯一の原因ではないことはわかっています。もしそうなら、なぜこれがあり得ないのか説明できますか?

0 投票する
10 に答える
1049 参照

sql - 外部キーを使用してデータベースに新しいアイテムを追加する場合、SQLトリガーを使用して他のテーブルに関連する行を作成する必要がありますか?

SQL 2005を使用して、車両テーブル、車両エンジン、および車両ギアテーブルを含むデータベース設計を実装しています。

各テーブルにはSQLID番号であるIDがあり、各エンジンとギアには車両IDとの関係があります。したがって、車両を作成する前に、エンジンとギアを作成する必要があります。

エンジンとギアを作成するときに、どうすれば車両ID番号を知ることができますか?エンジンとギアテーブルの外部キー制約のため、車両列はまだ作成されていませんか?

車両の作成時に、車両にリンクされたエンジンとギアの空の行を作成する自動トリガーを実装する必要がありますか?しかし、もう一度、どうすれば車両IDを知ることができますか?

0 投票する
6 に答える
12600 参照

sql - カテゴリのタグ付けをサポートするデータベース スキーマを設計する方法は?

各タグがカテゴリにグループ化されていることを除いて、タグ付けのためのデータベース設計のようなものにしようとしています。

たとえば、車両に関するデータベースがあるとします。実際には車両についてあまり知らないとしましょう。そのため、すべての車両にある列を指定することはできません。したがって、車両に情報を「タグ付け」します。

ご覧のとおり、すべての車が製造元とモデルでタグ付けされていますが、他のカテゴリはすべて一致しているわけではありません。車は各カテゴリの 1 つだけを持つことができることに注意してください。すなわち。車には 1 つのメーカーしかありません。

すべてのメルセデスの検索をサポートするデータベース、またはすべてのメーカーを一覧表示できるデータベースを設計したいと考えています。

私の現在のデザインは次のようなものです:

各車のメーカーが 1 つしかない場合を除いて、適切な主キーと外部キーがすべて適切に配置されています。それともできますか?

vehicleTags の複合主キーに外部キー制約を追加できますか? すなわち。複合主キー (vid、tid) を vehicleTags に追加できるのは、同じ vid に対して既に tid が存在しないような行がまだ vehicleTags にない場合に限るような制約を追加できますか?同じシド?

私の推測ではノーです。この問題の解決策は、cid 列を vehicleTags に追加し、新しい複合主キー (vid、cid) を作成することだと思います。次のようになります。

これにより、自動車に 2 つのメーカーが存在することはなくなりますが、tid が cid にあるという情報を複製しました。

私のスキーマはどうあるべきですか?

Tom は、私のデータベース スキーマにあるこの問題に、以前の質問であるHow do you do many to many table outside join?で気付きました。

編集
例では、製造は実際には車両テーブルの列である必要があることを知っていますが、それができないとしましょう。例はほんの一例です。

0 投票する
10 に答える
41860 参照

mysql - MySQL で外部キーが機能しない: 外部列にない値を INSERT できるのはなぜですか?

MySQL でテーブルを作成しました。

これにより、必要なテーブルが正常に作成されました (ただし、「DESCRIBE actions;」コマンドを実行すると、外部キーが MUL 型のキーであることがわかりましたが、これが何を意味するのかわかりません)。ただし、質問テーブルまたはユーザー テーブルに存在しない Q_id または U_id を入力しようとすると、MySQL はこれらの値を許可します。

私は何を間違えましたか?外部キーを持つテーブルが無効なデータを受け入れないようにするにはどうすればよいですか?

更新 1

最後に追加TYPE=InnoDBすると、エラーが発生します。

エラー 1005 (HY000): テーブル './quotes/actions.frm' を作成できません (errno: 150)

なぜそれが起こるのでしょうか?

更新 2

機能的な外部キーを使用してデータの整合性を確保することが重要であると言われましたが、MySQL では InnoDB を使用しないでください。おすすめは何ですか?

0 投票する
4 に答える
178 参照

postgresql - null許容参照のSELECT

私は2つのテーブル、作者とスタイルの間に関係があります。すべての作成者はスタイルに関連付けられていますが、作成者にスタイルがない(IS NULL)という特殊なケースがあります。

参照をNULLに設定しても問題はありませんが、作成者とスタイルを選択するためのクエリを実行する際に問題があります。

たとえば、次のクエリを実行します。

(予想どおり)NULLスタイルの作成者を無視するだけです。

左結合のように、NULLスタイルの作成者もリストする選択を行う必要があります(何らかの理由でLEFT JOINを使用できません)。

明示的な結合を含まないソリューションはありますか?