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

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

security - データ整合性攻撃

CIA モデルに対するさまざまな種類の攻撃の例を 3 つ作成する必要があります。現在、C と AI は多くの資料を見つけるのに問題はありませんでしたが、完全性攻撃の例を見つけることはまったくできませんでした。

Integrity への攻撃は、データを使用不能にするか、不正にすることを目的としていることを理解しています。使用不能にするには、IP パケットをキャッチしてデータをスクランブルする必要があります。これはまったく正しいですか?

私の研究は英語ではないため、用語がよくわからないため、これを検索するためのヒントも役に立ちます。「データ整合性」、「データ整合性攻撃」などのすべてのバリエーションを試しましたが、うまくいきません。

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

c# - .NetでのDataSetシリアル化の問題

ストアドプロシージャから入力されたいくつかのテーブルを含むデータセットがあります。GetXml()メソッド用にネストしたいと思います。

関係を追加しました:

ネストしました:

そして強制:

これらはすべて正常に動作し、エラーは発生しません。問題は、を呼び出すとset.GetXml()、DataExceptionがスローされることです。「DataTable'Document'のシリアル化を続行できません。同じ外部キーに複数の親行があるDataRowが含まれています」。

調べてみると、問題のテーブルにはそれぞれ1行しかありません。列lngDocumentSeriesIdとstrAuthorNameは一致します。データの完全性に問題があったset.EnforceConstraints = true;としても、私が理解しているように、それは回線上で例外を引き起こしたはずです。

このエラーの原因は何でしょうか(すべてのテーブルに1つの行しかない場合)、どのように修正できますか?

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

sql-server - 不適切な行がSQLServerデータベースに挿入されるのを防ぐ

次の列のテント賃料の表があります。

DateStartedは常にレンタル期間の開始時に入力され、最初はDateEndedNULLであり、レンタル期間が終了したときにのみ入力されます。CustomerIDテントを借りた顧客のIDです。

私がする必要があるのはCustomerID、その顧客が。で家賃を持っている場合、ユーザーが特定の顧客(で示される)に新しい行を挿入できないようにすることDateEnded=NULLです。

これを行う方法がわかりません。チェック制約を考えていましたが、他の行を表示できません。一意の制約について考えていましたが、この場合に使用できるかどうかはわかりません。On-Insertトリガーを考えていましたが、条件が満たされない場合に挿入をキャンセルできるかどうかわかりません。

助けてくれてありがとう。

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

git - 整合性チェックを実行するのはどの git コマンドですか?

git-1.7.4.1 を使用して、オブジェクト データベースの破損がユーザーにどれだけ早く警告されるかを判断しようとして、1 ビットの切り替えを行いました。

git-fsck告知はもちろん

しかしgit-log、変化に満足しています

そのままgit-checkout

の特定の呼び出しによりgit-show、破損が明らかになります

しかし、より広いものではありません。

さえgit-clone気付かない!

整合性チェックを実行する特定の git コマンド モード (たとえばgit show $sha1存在する必要があるが、git showまたは存在しない) の完全なリストは何ですか?git show HEAD

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

database - Netezza の一意の制約/参照整合性の強制の欠如を克服するにはどうすればよいですか?

2 つの基本的な制約 (一意キーと外部キー) を強制するためのサポートの欠如が、困難な問題のデバッグとトラブルシューティングに多くの工数を失う理由になっているようです。些細で簡単に修正できる問題 (行の重複/主詳細表の不整合) として始まったものは、気付かれずに成長し、アプリケーションやハードウェアで複雑なエッジ シナリオが発生します (例: 重複による自己結合)膨張や貯蔵の枯渇を引き起こす可能性があります)。

  • Netezza は、本番環境、研究、QA、およびステージングなど、当社の環境で複数の目的を果たします。当然のことながら、私たちの ETL プロセスは成熟することはできず、これらすべてのシナリオですべての制約を検証することはできません。
  • ETL がデータをロードしている間にデータが検証される、本番環境で使用される最も成熟したアプリケーションでさえ、一連のテーブルを作成し、それぞれが前任者の計算結果になります。最初からではなく、途中でデータの整合性が損なわれることがあります (バグのあるステートメントの結果として)。

これらの頭痛を回避するための方法論/ツールを推奨できる人はいますか?

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

c# - ファイルの整合性チェックのためにハッシュを転送するにはどうすればよいですか?

サーバーからファイルをダウンロードするアプリケーションがあります。接続が非常に不安定であるため、ファイルが正しくダウンロードされていないかどうかを確認し、それに応じて管理できるように、ファイルの整合性をチェックする機能を実装しています。

このプロセスはどのようにすればよいですか?今、私はファイルのハッシュをサーバーに要求し、次にファイル自体に別の要求を行い、ダウンロードしたファイルのハッシュを計算し、2つのハッシュをファイル比較します。

これは正しいアプローチですか?何かがそうではないと私に言います。ハッシュが異なることがわかった場合は、ハッシュを再度要求することを含め、まったく同じプロセスを数回実行します(これは同じである必要があります)。毎回わざわざハッシュを要求する必要がありますか?正しく転送されない場合に備えてやっていますか?これは不要ですか?リクエストは高価で、現在は非常に遅いので、リクエストの数を減らす方法はありますか?

何か案は?

サーバーがC#を使用していて、クライアントがAndroidデバイス(JAVA)であることが重要な場合に備えて、

ありがとう、

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

php - データの整合性と制限

次のテーブルレイアウトを使用します。

PHP / MySQLのセットアップでは、Somethingテーブルで識別されるSomethingTypeCode(1、2、3)ごとに、IsObsolete = Nを1つだけ関連付けることができるという制約またはインデックスを介して制限できる方法がありますか?

それが私が達成しようとしていることを説明することを願っています。これを解決するために何を調べればよいのかわかりません。データベース自体でデータの整合性を可能な限り維持し、それをPHPに拡張したいと思います。


編集:

混乱に応えて、私はVoteyDiscipleの答えを得ています。

EmailTypeCode:P =個人、B =ビジネス、S=学校

これが私のデザインです:

ここに画像の説明を入力してください

これにより、個人は特定のタイプコードに複数のタイプの電子メール(つまり、2つのビジネス電子メール)を持つことができ、データベースでの重複を回避し、nullを必要としません。私は、IsObsoleteが機能する場所である各カテゴリ(システムで使用されるもの)にアクティブな電子メールを1つだけ持つことに関心があるためです。履歴を保持し、重複を回避し、nullを回避し、ここでシステムに一意の電子メールアドレスが入力されていることを確認できます。

もちろん、これは元の質問で述べたように私の問題も引き起こします。

VoteyDiscipleのアプローチ

間違った(または正しい)描写があった場合は、VoteyDiscipleまでお知らせください。

ここに画像の説明を入力してください

「特定のタイプに対して1つしか存在できない場合」-システム内で1つだけでなく、一度に1つだけアクティブになります。
「ActiveIdをNULLにすることができます」-NULLは必要ないことを強調し
ました。「または、特定のSomethingレコードを指すことができます。」タイプはレコードを定義します。

上記の私の応答に加えて、これはクエリに元に戻る複雑さを追加するようです。私の回答は、あなたが提示したものについての私の理解に基づいています。私たちはお互いを理解していないか、それは私の側にあるだけです。ご意見をいただければ幸いですが、提示されたとおり、実行可能な解決策とは考えていません。

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

mongodb - Mongodb の挿入が正常に完了しない (node.js を使用)

XML ファイルをロードする node.js スクリプトがあります。Mongo 配列の各要素をループし、それらがすべて正しく挿入されていることを示しますが、スクリプトがチェックを完了するとdb.collection.count();データベースに挿入されたレコードが予想よりもはるかに少ないことがわかります。

mongo と node.js を挿入でうまく機能させるにはどうすればよいですか?

要求どおり、コードは上記のとおりです。ファイルはローカルで読み取られます (以前は HTTP 要求でしたが、現在は 25 MB のファイルであり、大量の RSS レコードです)。

約 1 万件のレコードを含むファイルを実行したところ、スクリプト実行後の mongoDB 内のアイテム数は約 800 アイテムです。

答えに従って、挿入コードを置き換えました:

と:

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

java - いくつかのクライアントとサーバーが送信した後、トランザクションを明示的にコミットしてロールバックする方法はありますか

環境:アプリケーションは Spring Framework 2.5.6.SEC01 および iBatis 2.3.4.726 を使用しています。MVCデザインです。

シナリオは次のとおりです。

  1. クライアントからのデータ入力・更新

  2. 更新ボタンを押して送信してください

  3. データを処理し、DML を実行 (挿入、更新、削除)

  4. 結果をクライアントに戻し、データを表示する

  5. ただし、ページがロードされたら、Javascript を介して API を呼び出す必要があります(API を制御することはできません。必要なパラメーターを渡して、成功またはエラーの場合に結果を確認するだけです)。

  6. API が SUCCESS を返した場合、何もする必要はありません。しかし、それは ERROR を返します。ユーザーに通知するアラート メッセージを表示します。

    ビュー (クライアント)、サービス、およびデータ アクセス レイヤーがあります。クライアントが送信を行うと (シナリオ #2)、サービスに入り、データを処理して自動的にトランザクションを開始します (シナリオ #3)。サービスの終了時にコミットを自動的に実行し、クライアントに戻ってデータを表示します (シナリオ #4)。

問題:コミットを実行しないようにトランザクションを一時停止してから、クライアントに戻って Javascript 経由で APIを呼び出すにはどうすればよいですか。API が SUCCESS を返したら、Ajax (またはその他の方法) を介してコミットを実行するか、ロールバックします。

正しい方向へのガイダンスをいただければ幸いです。

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

database-design - 関係とチェック制約

データベースに、ステータス名と説明(ステータスと呼ばれる)を保持するテーブルがあります。他に2つのテーブル、VacancyRequestとActionRequestがあり、それぞれが異なるタイプのエンティティを表しますが、それぞれに独自のステータスがあります。一方のエンティティの可能なステータスは、必ずしももう一方のエンティティの可能なステータスと一致するとは限りません。

整合性を維持するために、どちらがより良いアプローチですか?

  1. VacancyRequestStatusとActionRequestStatusの2つの追加テーブルを作成し、それぞれに1つの列(StatusID)を設定します。これらの2つのテーブルには、それぞれのエンティティタイプに適用可能なStatusIDのみが含まれます。次に、VacancyテーブルとActionテーブル、およびそれぞれのステータステーブルの間に外部キー関係を作成します。各ステータステーブルには、メインステータステーブルに戻るFKがあります。

  2. ステータステーブルに列を追加して、適用するエンティティを示します(Vは空席、Aはアクション)。VacancyテーブルとActionテーブルでチェック制約を使用して、レコードに適用されるStatusIDがそのエンティティタイプに適切であることを確認します。