問題タブ [referential-integrity]
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.
database - テーブル内の列間の参照整合性の確保
現在、次の形式のテーブル モデルがあります。
基準 (基準 ID、基準名)
基準データ(基準ID、値)
1 つの基準 (日付基準) には、criteria_data テーブルに単一の日付を含めることができ、他の基準データには別の行の日付の株価を含めることができるという意味で、日付関連の情報をテーブルに格納するつもりです。(もう 1 つの複雑な点は、株式の名前も基準であるということです)。
私の問題:
特定の日付と銘柄名 (他の 2 つの個別の基準と行) に対して、1 つの価格 (単一行の基準) のみをテーブルに入力できるようにするにはどうすればよいですか。
アプリ層でこれを強制したくないので、主に DB 層ソリューションを探しています (利用可能な場合)。
より適切なデータ モデルが提案された場合、テーブル モデル全体を廃棄するように言われることにもオープンです。
編集 私の愚かさを知らされた後(以下のdPortasの投稿を参照)、これが賢明な方法ではないことを受け入れます。新しいモデルを考えました:
criteria_data(株式名,価格,高値,安値,価格,変化)
これはどのように見えるかですが、実際の列名は criteria_id を含む識別子になると思います。たとえば、stockname フィールドを col_1 に、high を col_3 にすることもできますが、これにより、さまざまな列の整合性を確保できます。
これについて人々はどう思いますか?
mysql - 行が追加された後、特定の行の参照整合性を確認するにはどうすればよいですか?
foreign_key_checks
0に設定されている間にInnoDBテーブルに挿入された後、単一の行の参照整合性をチェックする方法があるかどうかを確認しようとしています.
したがって、次の 2 つのテーブルが与えられます。
それらに対して次のステートメントを実行します。
ここにいくつかの悪いデータを入れました -- author_id は存在しない person.id を参照していますこのように。
私が最初に取ろうとしていたアプローチは、まったく同じデータで行を更新することでした。私はこれを試しました:
これによりエラーが発生すると予想していましたが、そうではありませんでした。データが変更されていないため、明らかに整合性チェックは行われていませんか? たとえば、 author_id を 2 に設定すると失敗します。
私の質問: 特定の行を検査し、問題がある場合に整合性エラーをトリガーできる代替手段はありますか? 私は周りをグーグルで検索しましたが、何も見つかりませんでした。テーブル全体をチェックすることは避けたいのですが、それが唯一のルートかもしれません。
私を逃れている洞察やその他のアプローチをいただければ幸いです。
(なぜ私がこれをすべてやろうとしているのか知りたいのであれば、それは、前方参照を持つフィクスチャをロードできないという Django フレームワークで未解決の問題を解決しようとしているからです。提案された解決策は、外部キー チェックを無効にすることです。フィクスチャがロードされ、ロードが完了した後に再び有効になったとき私は、その時点で戻って、外部キーチェックがオフのときに追加された行の参照整合性をチェックし、エラーを発生させる方法を理解しようとしています。問題がある場合はエラーになります。)
mysql - 参照整合性制約の追加と削除-自動的に
DBとスキーマからすべてのRI制約を自動的に追加または削除するRailsの宝石、プラグイン、またはその他の手段はありますか?または、テーブルごとにそれらすべてですか?何かのようなもの:
remove_all_foreign_key_constraints('comments')
database-design - 外部キーを作成すると、参照整合性が自動的に意味されますか?
外部キーを作成すると、参照整合性は自動になりますか? カスケードを機能させるには、他に何か設定する必要がありますか?
編集: たとえば、postgres で。自動とは、RI を機能させるために他に何も設定する必要がないことを意味します。削除します。FK は、挿入の FK にデータが存在することを保証することを意味しますが、推測しています。
sqlalchemy - 参照整合性 - SQLAlchemy の設定方法は?
SQLAlchemy モデルの構成に関して全体像をつかむのを手伝ってくれる人がいるので、すべてのレベルで参照整合性が保証されますか?
参照整合性は DB によって表現および強制されるべきであるという考えに基づいて、必要と思われるすべての制約を備えたスキーマ (現在は Postgresql 内) を作成しました。
次に、宣言モードで SQLAlchemy (0.7) を使用して、この DB の上にアプリを構築し始めます。
少し検索して読んだところ、次のように構成できることがわかりました。
- Column() 定義の onupdate/ondelete ルール。
- relationship() 定義のカスケード オプション、
およびこれらが SQLAlchemy のセッション レベルで動作するように見えること。 - relationship() 定義の passive_deletes および passive_updates オプション。
そして、これらすべてのオプションにはデフォルトがあります。
しかし、セッション中に SQLAlchemy が DB とその制約と同期しなくなることがないように、SQLAlchemy モデルを実際にどれだけ処理する必要があるかについて、私は混乱しています。
SQLAlchemy の Columns() 定義で「onupdate」などを構成すると、正確には何を達成できますか?
また、cascade および passive_delete/passive_update ルールについては、relationship() で構成できます。ここで必要なものとその理由
または、私の質問を言い換えると: SQLAlchemy は、DB スキーマで構成された制約をどの程度まで認識し、モデルでそれらをどの程度 (およびどのように) 繰り返す必要がありますか?
他に注意すべきことはありますか?:)
c# - N:N 関係で参照整合性が機能しない
これは ms create table スクリプトです:
これは、SchoolclassCode と Pupil テーブルの間の N:M 関係です。
コードで SchoolclassCode オブジェクトを削除すると、次のようになります。
schoolclasscode テーブルのエントリが削除されます。しかし、それ以上はありません。SchoolclasscodePupil の schoolclasscodeId_FK を追加で削除することもできますが、カスケード削除制約によって削除された生徒はいません。
私は何を間違っていますか?
playframework - Play フレームワーク onetoone 参照整合性削除
JUnit テストで参照整合性制約違反が発生しました。playframework と私の 2 つのエンティティを使用すると、次のようになります。
私の Junit テストでは、次の行が失敗します
ありがとうございました
tsql - ストアド プロシージャの参照整合性をチェックする
SQL Server 2000 データベースにテーブルとテーブルがありますcustomer
。order
テーブルに存在しない を使用してorder
テーブルに注文を入れたくないので、 に外部キー制約を設定しました。customerID
customer
customerID
これはすべて正常に機能しますが、制約に違反する可能性のあるストアド プロシージャを作成するときに、制約に違反するかどうかを確認し、違反する場合はクエリをスキップ/ロールバックする方法はありますか?
その瞬間、ストアド プロシージャがエラーを返し、それが私の ASP ページに表示され、かなり見苦しく見えますが、ほとんどのユーザーはそれを理解できません。
可能であれば、エラーを処理するよりエレガントな方法が欲しいです。
ありがとう
oracle - 1 つのファイルから複数の Oracle テーブルにデータをインポートする
参照整合性を維持しながら、単一のファイルから複数の Oracle テーブルにデータをインポートする方法はありますか?
sql - SQL Serverデータベーススキーマは、外部キーを使用してアプリケーションのビジネスロジックを常に適用し、制約のみをチェックできますか?
以前の回答に感謝しますが、彼らのフィードバックに基づいて、質問を修正しました。
質問に対する答えが「いいえ」の場合、他の手段によってデータの整合性を強制することができます。回避される可能性があるため、ストアドプロシージャの使用は十分ではないと思います。トリガーは必要ですか?