問題タブ [natural-key]

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 に答える
417 参照

postgresql - 国民 ID を主キーとして使用する

ナショナル ID を「識別記録」の 1 つとして利用するシステムを開発していますが、クエリを簡単にするためにすべてのテーブルに nat_id を埋め込むのは良い考えですか? そうすることの欠点は何ですか?重要なことを見逃す可能性があるため、ここ SO の人々から意見を求めたいだけです。

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

database - データセットで自然キーを見つける

約40列と約1400行のテーブルを継承しました。残念ながら、元の設計者は識別可能なPKをテーブルに含めていなかったため、4列または5列の組み合わせで自然キーを使用したと想定しています。ただし、これらの列が何であるかは不明です。

これを判断する簡単な方法はありますか、それともselectステートメントを使用して座って削減を試みる必要がありますか?

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

python - 自然キーを含む Django フィクスチャをロードする

自然キーを介して参照されるモデルが既存のレコードと競合しないように、Django フィクスチャをどのようにロードしますか?

私はそのようなフィクスチャをロードしようとしていますが、MySQL バックエンドから IntegrityErrors を受け取り、Django が重複したレコードを挿入しようとしていると不平を言っています。これは意味がありません。

Django の自然キー機能を理解しているので、dumpdata と loaddata の使用を完全にサポートするにnatural_keyは、モデルでメソッドを定義get_by_natural_keyし、モデルのマネージャーでメソッドを定義する必要があります。

たとえば、次の 2 つのモデルがあります。

私のテスト データベースには、フィクスチャの生成に使用したサンプルの Person および Book レコードが既に含まれています。

このフィクスチャをデータベースの任意のインスタンスにロードして、データベースに既に存在するかどうかに関係なく、レコードを再作成できるようにしたいと考えています。

ただし、実行するpython manage.py loaddata myfixture.jsonとエラーが発生します。

Django が既存の Person レコードを再利用するのではなく、再作成しようとするのはなぜですか?

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

mysql - 外部キーの重複を回避しながら、MySQL 自然キーを更新するにはどうすればよいですか?

これが事です:

jQuery/php/mysql で構築された webapp があります。タスクマネージャーのようなものです。カテゴリとカテゴリに属する​​タスクがあります。タスクには代理主キー (Autoincrement id) があり、データベースの一貫性のために、次のような自然キー (Unique) があります: (id_category, position)

ユーザーがタスクを移動すると、DB 内のこのタスクの位置 (ajax リクエスト) を更新する必要がありますが、変更に関係する他のすべてのタスクの位置も更新する必要があります。たとえば、位置が 5 の特定のタスクを位置 2 に移動する場合、位置が 4 から 2 のタスクの位置を 1 つ上げる必要があります。(これは私のアプローチです。特定のカテゴリのタスクのセット全体を新しいポジションで送信する人がいることは知っていますが、必要なものだけを更新しようとしています)

問題は、すべてを同時に更新する方法がわからない/できないため、自然キーの重複エラーを回避せずにタスクの位置を更新する方法がわからないことです。

それで、あなたはそれで私を助けてくれますか、それとも私のアプローチを変えるべきでしょうか. 一意のインデックス (自然キー) を削除することもできますが、データベースの一貫性メカニズムは何かのために存在します...

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

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

django - DjangoでGenericForeignKeyに自然キーを使用することは可能ですか?

私は次のものを持っています:

dumpdata --naturalで、この関係の自然キーを出力したいと思います。これは可能ですか?そうでない場合、ターゲットの主キーに私を結び付けない代替戦略はありますか?

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

python - フィクスチャの Django ナチュラル キーで逆シリアル化エラーが発生する

SOでこれに似た質問をいくつか見ましたが、私の特定の問題に答えているものはないようです。私はDjangoを初めて使用し、このページの指示に従って、自然キーを使用してフィクスチャをロードできるようにしました。それにもかかわらず、Django は外部キーに整数を必要とし、手順に記載されているように自然キーを整数の主キーにマップできないため、逆シリアル化エラーが発生します。具体的には、関連するモデル コードは次のとおりです。

そして、私の YAML フィクスチャは次のとおりです。

しかし、実行しようとするとpython manage.py loaddata sample_data.yaml、次のエラーが発生します。

私は何を間違っていますか?

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

database-design - サポートテーブルのナチュラルキーとサロゲートキー

自然主キーと代理主キーの戦いについて多くの記事を読みました。ユーザーがコンテンツを作成したテーブルのレコードを識別するために代理キーを使用することに同意します。

しかし、テーブルをサポートする場合、何を使用すればよいですか?

たとえば、架空のテーブル「orderStates」では。このテーブルの値は編集できません(ユーザーはこの値を挿入、変更、または削除できません)。

自然キーを使用する場合、次のデータがあります。

代理キーを使用すると、次のデータが得られます。

次に例を見てみましょう。ユーザーが新しい注文を入力します。

自然キーを使用する場合、コードで次のように記述できます。

代わりに、追加の手順があるたびに代理キーを使用します。

注文を新しいステータスに移動する必要があるたびに、同じことが起こります。

それで、この場合、一方のキータイプともう一方のキータイプを選択する理由は何ですか?

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

grails - ゴームが主キーを変更しましたが、IDがnullでは見つかりません

私はこれについてたくさんの質問を読みましたが、誰もそれを機能させていないようです。

私はgrailsを使用しており、主キーとしてidを持たないクラスを作成しています。

「usuarionotfoundwithidnull」というメッセージが表示されます。これは私のドメインクラスのコードです:

私も通常の方法を試しました:

実際には、自然キーとすべてを使用してテーブルを希望どおりにマップし、新しいusuariosを挿入しますが、GUIはオブジェクトを取得できず、「usuario not foundwithidnull」というエラーが表示されます。

show(Long id)メソッドを変更しようとしましたが、どちらも役に立ちません。これは、コントローラーからのshowメソッドです。

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

data-warehouse - 自然キーを使用してファクト テーブルを作成する方法

4 つのディメンション テーブルと 1 つのファクト テーブルを含むデータ ウェアハウスの設計があります。

  • dimUser id、電子メール、firstName、lastName
  • dim住所 ID、都市
  • dimLanguage id、言語
  • dimDate id、startDate、endDate
  • factStatistic id、dimUserId、dimAddressId、dimLanguageId、dimDate、loginCount、pageCalledCount

私たちの問題は次のとおりです。統計の計算 (userId、日付範囲に応じて) と外部キーの入力を含むファクト テーブルを作成したいと考えています。

しかし、自然キーの使用方法を理解していないため、方法がわかりません (私たちが読んだ文献によると、これが問題の解決策のようです)。

自然キーは、ディメンション データを計算するすべての ETL ジョブで必要とされる userId になると思います。

しかし、多くの困難があります:

  • ETL ジョブ load() では、重複を削除するために INSERT IGNORE INTO を使用して一括挿入を行います => 生成された代理キーはわかりません
  • メタ データ (dimension_name、surrogate_key、natural_key のセットを含む) を作成すると、重複排除のために機能しません。

問題は、重複排除戦略にあるようです。より良いアプローチはありますか?

違いがある場合は、MySQL 5.1 を使用しています。

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

django - Django:汎用外部キーダンプデータ:依存関係を解決できません

Users汎用外部キーを使用して、さまざまなプロファイルをから継承されたモデルに関連付けますauth.User。オプションを渡しdumpdataてもできません。--naturalそれは言います、

エラー: シリアル化されたアプリ リスト内の myproject.AdminProfile、myproject.TeacherProfile、myproject.Users の依存関係を解決できません。

documentationによると、一般的な関係を含むフィクスチャを取り、フラッシュするには、natural_key メソッドを実装する必要があると言われています。ここに提示されたモデルでどのようにそれを行うことができますか?

Django 1.4.3 と Postrgres を使用。