問題タブ [foreign-key-relationship]

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 投票する
5 に答える
723 参照

mysql - 外部キーを使用したデータベース設計の質問

データの整合性を維持するために、外部キーを適切に使用しようとしています。私はデータベースの専門家ではないので、私が知らない一般的な設計原則があるかどうか疑問に思っています。これが私がやろうとしていることの例です:

タイプ (乗用車、トラックなど)、メーカー、モデルを含む車両のデータベースを構築するとします。ユーザーは少なくとも Type を入力する必要がありますが、Make と Model はオプションです (Model が指定されている場合、Make は必須です)。私の最初のアイデアは、データベースを次のように設定することです。

タイプ、メーカー、モデルがすべて一致するようにするには、Vehicle の FK をどのように設定しますか? たとえば、車両が (Type:Motorcyle, Make:Ford, Model:Civic) を持たないようにするにはどうすればよいでしょうか? これらはそれぞれ有効な FK ですが、他のテーブルの FK によって示される関係は維持されません。

また、Model は必須ではないため、model_id FK を保存してそこから逆方向に作業することはできません。

私はデータベースの設計にまったく縛られていないので、テーブルの設定方法を変更しなければならない可能性はあります。何か案は?

PS - 誰かが興味を持っている場合、私は mysql を使用していますが、これはデータベースに関する一般的な質問です。

編集(説明):

-type_id と make_id は、model_id が null の場合にそれらを特定する方法がない限り、車両テーブルに必要です。

- type_id、make_id、および model_id の間の関係を維持する必要があります。

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

castle-activerecord - ActiveRecord HasMany/Belongs は関係に非 PrimaryKey 列を使用できますか?

親子階層が必要で、親に「シリーズ ID」の概念が必要です。

したがって、親(更新した場合)は古い一意のキーを期限切れにします..シリーズIDを保持し、2番目の行を挿入します。

子供たちには、一意のIDではなく、そのシリーズIDを「ぶら下げ」てもらいたいです。

BelongsTo が非主キー (ただし、GUID によって一意) 列にリンクできるかどうか知っていますか?

親: UniqueId (guid)、SeriesId (guid)、名前、説明 子: UniqueId (guid)、ParentId (常に UniqueId-Above に接続)、名前、説明。

外部キー関係には関係の片側に「キー」が必要であることはわかっていますが、GUID によると、それらはキーのようですが、実際にはキーではありません。

大したことではありませんが、メタデータを更新して親を「期限切れ」にする場合、すべての子を親の新しいコピーに「コピー」する必要はありません。

あり得ないことをしようとしているのだろうか?

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

ruby-on-rails - 外部キーを生成しないためのaccepts_nested_attributes_for

私はモデルを持っています

と子供

そして、次のようなフォームを介してそれを作成しています:

非表示のフィールドは、このフォームの送信元のページのフォームから入力されます。これはすべて正常に機能します。私のcreateメソッドは次のとおりです。

すべてがデータベースに問題なく作成されます。ただし、2つのモデルは外部キーによってリンクされていません。つまり、子モデルに外部キーが設定されることはありません。どうすればこれを修正できますか?これは文書化されたバグだと言う人もいますが、これがどこにも当てはまるとは思えません。助けてくれてありがとう。

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

reference - 1つの外部キー列を複数の主キー列で参照する方法

書籍の発行先のIDを含むBOOK_Issueテーブルを作成しています。私は列名を持っていますuser_idwitchにはtbl_studentとtbl_facultyからのIDが含まれます。したがって、2つの主キー列を参照してbook_issueテーブルのuser_idフィールドを設定する方法。

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

java - 利用可能な外部キーエントリはあるが利用できない外部キーエントリがあるJPAJOINをどのように処理しますか?

JPAが次のシナリオを処理するためにどのように定義しているのだろうか。

FK_B NULLを含む、または使用できないテーブルBエントリを参照するすべてのテーブルAエントリが必要です。

定義されていますか、使用するとどうなりますか

または:(これは可能ですか?)

必要なのは、

どうもありがとう!

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

sql-server - ForeignKeyを見つける最も簡単な方法は、Management Studioのどのテーブルに関連していますか?

これにはもっと速い方法があるのだろうか:

「ManagementStudioを開いていて、目の前に列のたてがみがあるDbテーブルがあります。FK_SomeTableフィールドがForeignKeyであることはわかっていますが、どのテーブルのFKかはわかりません。それを学ぶ必要があります。 。」

それで、通常、私はそのテーブルの「関係」を開き、非常に狭いウィンドウで囲まれたリストを1つずつ調べて、そこで見つけようとします。これは、退屈で時間の無駄です。

システムテーブルにもクエリを実行したくありません。

より良い、より迅速な方法はありませんか?あるはずですよね?

ありがとう

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

django - Django:外部キータイプの取得

キーが関連するモデルの外部キータイプを取得する方法はありますか?現在、私は次のようなことを試みています:


フォームに表示される利用可能な選択肢をプログラムで設定しようとしています。これまでのところ、以下のこのスニペットが外部キーオブジェクトとのある種の関係を取得していることを理解することしかできませんでした...


どんな助けでも大歓迎です。

0 投票する
5 に答える
1226 参照

sql-server - SQL-Serverで循環関係を回避する方法は?

私は自己関連のテーブルを作成しています:

テーブルItem列:
ItemId int-PK;
金額-nullではありません。価格マネー-アイテムの祖先の金額に従って値を取得するUDFを使用して計算された列。
ParentItemId int-null許容、このテーブル内の別のItemIdへの参照。

ループを回避する必要があります。つまり、兄弟は祖先の祖先になることはできません。つまり、ItemId = 2 ParentItemId = 1の場合、ItemId 1 ParentItemId=2は許可されません。

この状況でのベストプラクティスはどうあるべきかわかりません。UDFなどからスカラー値を取得するCKを追加する必要があると思います。

編集: 別のオプションは、INSTEAD OFトリガーを作成し、1つのトランザクションにParentItemIdフィールドの更新を入れ、トランザクションのキャンセルに失敗した場合は@@ RowIdentityからPriceフィールドを選択することですが、UDF検証を希望します。

どんなアイデアでも大歓迎です。

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

django - Django:次を達成するためにモデル関係を定義する方法は?:

私のアプリには、それぞれが 1 つの課金プロファイルを持つクライアントがあります。

「 BillingProfile 」という別のモデルを参照する「 billing_profile 」という属性を持つ「 Client 」モデルを持つアプリを想定しています。「クライアント」に戻る外部キーを使用して「 BillingProfile 」を定義するのではなく(つまり、「 client = models.ForeignKey(Client)」)、クライアントごとに単純に使用できる請求プロファイルが 1 つしかないため、と考えていました。代わりに 1 対 1 のフィールド。これは理にかなっているように見えますか、それとも後ろ向きに見えますか (その場合、クライアントを確立する前に BillingProfile を作成する必要があります)。それを理解する私のパラダイムに対してこれを行う良い方法はありますか?