問題タブ [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 - 複数の外部キー?
あるベンダーから別のベンダーに製品を出荷するための日数とコストを追跡することになっているテーブルがあります。私たちは (見事に :p) 配送ベンダー (FedEx、UPS) と製品取り扱いベンダー (Think... Dunder Mifflin) の両方を「VENDOR」テーブルに保存しました。したがって、SHIPPING_DETAILS テーブルには、すべて VENDOR.no を参照する 3 つの列があります。何らかの理由で、MySQL では 3 つすべてを外部キーとして定義できません。何か案は?
二重の主キー定義を削除するように編集されました...
ええ、残念ながらそれは解決しませんでした。今私は得ています:
テーブル './ REMOVED MY DB NAME /SHIPPING_GRID.frm' を作成できません (errno: 150)
phpinfo() を実行すると、mysql について次のことがわかります。
クライアント API バージョン 5.0.45
はい、VENDOR.no は int(6) 型です。
database - データベース設計で外部キーは本当に必要ですか?
私の知る限り、外部キー (FK) は、プログラマがデータを正しい方法で操作できるようにするために使用されます。プログラマーが実際にこれをすでに正しい方法で行っているとしたら、外部キーの概念は本当に必要なのでしょうか?
外部キーの他の用途はありますか? ここで何か不足していますか?
database-design - 余分なテーブルまたは非固有の外部キー?
システムにはいくつかのタイプのオブジェクトがあり、それぞれがデータベース内に独自のテーブルを持っています。ユーザーはそれらのいずれにもコメントできる必要があります。コメント テーブルをどのように設計しますか? いくつかのオプションを考えることができます:
- 各オブジェクト タイプ (ObjectAID、ObjectBID など) の FK 列を含む 1 つのコメント テーブル
- オブジェクト タイプごとに 1 つずつ、複数のコメント テーブル (ObjectAComments、ObjectBComments など)
- タイプ (「ObjectA」) を示す別の列を持つ 1 つの汎用 FK (ParentObjectID)
あなたならどちらを選びますか?私が考えていないより良い方法はありますか?
sql-server - SQL Serverでカスケードを使用するのはいつ/なぜですか?
SQL Serverで外部キーを設定する場合、どのような状況で削除または更新時に外部キーをカスケードする必要がありますか。また、その背後にある理由は何ですか。
これはおそらく他のデータベースにも当てはまります。
私は何よりも、各シナリオの具体的な例を探しています。できれば、それらをうまく使用した人からの例を探しています。
database - 外部キーの何が問題になっていますか?
Joel Spolskyがポッドキャスト 014で、外部キーをほとんど使用したことがないと述べたのを聞いたのを覚えています (私の記憶が正しければ)。ただし、データベース全体での重複とその後のデータ整合性の問題を回避するために、それらは非常に重要に思えます。
人々はその理由について確固たる理由を持っていますか (Stack Overflow の原則に沿った議論を避けるため)?
sql - 主キーとしてのintからGUIDへの移行
整数の主キーを持ついくつかの参照テーブルを使用します。ここで、intをGUIDに変更して、すべての参照をそのままにします。それを行う最も簡単な方法は何ですか?
ありがとうございました!
添加
私は一般的なプロセスを理解しているので、新しいGUID列に入力する方法など、より詳細なアドバイスが必要です。デフォルト値のnewid()を使用するのは正しいですが、既存の行はどうでしょうか。
sql-server - T-SQLを使用して外部キー制約を一時的に無効にするにはどうすればよいですか?
SQL Serverで外部キー制約の無効化と有効化はサポートされていますか?それとも、制約drop
を再設定create
する唯一のオプションですか?
database - Firebird 1.5.3: 接続ユーザーを含む FK を DB に追加する方法は?
私は FB1.5.3 を使用しており、最終的にデータベースにいくつかの FK を追加する必要があります。他の誰かが DB に接続しているときに実行しようとすると、例外が発生します。
システムの実行中に FK を追加する方法はありますか?
php - 関係に関するデータベース設計の問題
検討中の設計を実装するためのコードを一切使用せずに設計された既存のデータベースのアップグレードに取り組んでいます。今、私はデータベース設計をコードで実装するという点で壁にぶつかりました。データベースの設計に問題があるのか、それとも、何をする必要があるのかについて正しい解決策が見当たらないだけなのかどうかは確かです。
基本的なロジックでは、次のように規定されています。
- ユーザーは、シートを介してオンライントレーニングにアクセスします。ユーザーは複数のシートを持つことができます。
- シートは企業によって購入され、製品と多対多の関係があります。
- 製品は、モジュールと多対多の関係にあります。
- モジュールは、レッスンと多対多の関係にあります。
- レッスンは、エンドユーザーがトレーニングのためにアクセスするものです。
- 水を濁らせるために、何らかの理由で、一部のユーザーは同じ製品を含む複数のシートを持っています。
- 認定は、シートごとではなく、製品ごとに行われます。
- ユーザーは、レッスンの現在のステータスまたはスコアを保存するレッスンと多対多の関係を持っています。
- ユーザーは、製品のすべてのモジュールのすべてのレッスンを完了すると、製品の認定を受けます。
- 特定のモジュールのすべてのレッスンがユーザーによっていつ完了するかを知ることも重要です。
- 一部のシートは再認定用になります。つまり、以前に製品の認定を受けたユーザーは、サインアップして再認定試験を受けることができます。
- ルール11により、ユーザーは複数の認証レコードを持つことができます。
- 編集:ユーザーがレッスンを完了すると(スコアが80%を超える)、ユーザーは(現在のビジネスロジックに従って)レッスンを含むすべての製品とすべてのシートのレッスンを完了します。
私が多かれ少なかれ説明したように、現在の設計とビジネスロジックで遭遇し続ける問題は、ユーザーが特定の製品とシートの認定を受けているかどうかと、それらがいつ認定されているかを効果的に結び付ける方法が見つからないことです。してない。私は、どのシートがユーザーに対して認定されているか、どの製品が認定されていないかを確認しようと、ひっかかりを続けています。問題の一部は、それらが現在異なるシートの下で同じ製品の複数に登録されている場合、製品を1回だけカウントする必要があるためです。
以下は、関連するスキーマの部分のコピーです。デザインを改善する方法やコードで関連付けを描画する方法についての提案をいただければ幸いです。重要な場合、このサイトはLAMPPスタック上に構築されています。
ここでデータベーススキーマの関連部分を表示できます。http://lpsoftware.com/problem_db_structure.png
sql - SQL 2005 別のベース間の外部キー
データベースのテーブルに、SQL 2005 の別のデータベースのテーブルの列への外部キーを作成することは可能ですか?