問題タブ [primary-key-design]

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

sql - SQLテーブルに複数の主キーがあるのはなぜですか?

私の仕事(プログラミングスキルの一部を活用する非プログラミングの仕事)では、外部委託されたカスタムメイドのプログラムのSQLデータベースからレポートを生成するように依頼されました。

テーブルを見ると、それらの多くにPKとして割り当てられた複数のフィールドがあることがわかりますが、それはなぜですか?シリアルの数値IDに比べて、どのような利点がありますか?

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

sql - データベース設計: 複数のデータ ソースからの主キー

最初に、 Food Source 1の Excel ドキュメントから食品をインポートしていましたが、VARCHAR タイプが primary* (PK example #FOOD0001)* でし た (その時点でソースが 1 つしかなかったため、自動インクリメント int ID を使用して食品テーブルに直接インポートしたためです) )

しかし、完全に主キータイプ (INT) を持つ 別のソースFood Source 2から食品をインポートする必要があります(PK の例 #25928747)。

私は現在持っています:

食品表

INT FoodId<PK>、名前

サービングテーブル

INT ServingId<PK>, FoodId<FK>, 名前, サイズ

現在のIDに影響を与えない、または少なくとも食品を簡単に更新、削除できるようにマッピングを持っている食品ソースをインポートできるようにするための最良のデータベース設計は何ですか? パフォーマンス上の理由から ID を VARCHAR に変更したくない

私が持っている 1 つのアイデアは、食品ソースからの元の ID を持つ FoodSourceFoodId を食品テーブルに導入することです。そのようにして、食品が食品ソースから変更/更新された場合、食品テーブルで簡単に更新できますか?

食品表

同様に、サービング ID がソース データのサービング ID に関連している可能性のあるサービング テーブルに対しても同じことを行うことができます。

これが進むべき道だと思いますか?それとも何か他のものを提案しますか?

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

sql - SQL テーブルの主キー

GuidまたはInt主キーのどちらを使用するのが良いですか? Guid を優先する検索結果もあれば、Int を優先する検索結果もあります。それでは、それぞれの長所と短所は実際には何ですか。

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

mysql - MySQL - 主キーとしても外​​部キーを使用

主キーを持つテーブル 1 と外部キーを持つuser_idテーブル 2 があります。user_id

user_idテーブル 2 に存在できるレコードは 1 つだけであり、テーブル 2 なしではレコードは存在できません。

質問:user_id表 2 では、同時に外部キーと主キーの両方になることができますか? はいの場合、それは良い考えですか? 長所と短所は何ですか?

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

ms-access - リンクテーブルにレコードを追加するときに主キーとの競合を回避する VBA にアクセスする

したがって、この問題の根本原因はデータベースの設計の悪さにある可能性があります。これをセットアップする方法の一部は、古いバージョンから継承されています。これを行うためのより良い方法を見つけることができませんでした。

[OBJECTID] という同じフィールドでリンクされた 4 つのテーブルがあります。各テーブルは、データを制御するアクセス フォームにリンクされています。データは地理参照されており、個別にマッピングする必要があるため、これらのテーブルを分離することが重要ですが、デフォルトでは互いに複数のフィールドを継承します。

ほとんどの場合、テーブルは 1 対 1 対 1 対 1 の関係にありますが、最初のテーブルのデータしかない場合もあれば、2 番目、3 番目、および 2 番目のテーブルのデータしかない場合もあります。第四形態。

現在、最初のテーブルの [OBJECTID] フィールドはデータ型 autonumber に設定されているため、他のテーブルの後続のすべてのリンクされたレコードはその番号を継承できます。Tbl1 のレコードが Form1 経由で入力されていない場合、現在の番号と競合しない番号を割り当てるだけで十分簡単ですが、将来生成される [OBJECTID] と競合する可能性のある番号の割り当てを回避するにはどうすればよいですか? Tbl1 の autonumber フィールドによって?

わかりにくかったらすいません!これについて考えるのを手伝ってくれてありがとう....

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

sql - SSAS 1 対多次元の関係

皆さんへのSSASでの質問です。OLAP SSAS キューブ環境で 1 対多の関係を定義しようとしています。ただし、主キーの定義で問題が発生しています。例の表を以下に示します。最初の 3 つのテーブル間の関係は簡単に定義できます (TradeDate、NYMEX 取引、および NYMEX 契約)。ただし、私の目標は、NYMEX コントラクトとモデル コントラクトの間に 1 対多の関係を作成することです。つまり、1 つの NYMEX 契約のデータがモデル契約データセットで複数回利用されます。

表: 取引日

  • 取引日 (PK)
  • 月など...

表: NYMEX 取引 (PK なし)

  • 契約名
  • 取引日
  • 価格

表: NYMEX コントラクト

  • 契約名 (PK)

表: モデル契約

  • モデル契約名 (PK)
  • 契約名

NYMEX コントラクトとモデル コントラクトの間に 1 対多の関係を作成する必要がありますが、私の PK はモデル コントラクトの間違った列にあります。何か案は?

明確にするために、ディメンション --> ディメンションの関係を定義しようとしています。テーブル「Model Contract」はルックアップ テーブルです。

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

mysql - 主キー インデックス 自動

私は現在mysqlを使用してプロジェクトを行っており、完全な初心者です.....

次の列でテーブルを作成しました.....

ID 今、列の挿入値が自動的に生成される方法が存在するかどうかを知りたいのですが......??

date - 4/10/1992例: - 値としてandを挿入したDay - WED場合。Mysql サーバーは、整数値が存在するかどうかのチェックから開始して、整数値を自動的に生成する必要があります。1 つまり、値を含むテーブルで

上記の表に日付値と日付値 (例で指定) を挿入するとします。次のように挿入する必要があります

自動インクリメンタを使用するような方法を試しました.....しかし、ID値をインクリメントするだけではないのではないかと心配しています。

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

sql - 複合主キーの構成を並べ替える

私はテーブルを持っています

主キーは year + number + document_types_id です。

より良い主キーは year + document_types_id + number だと思います。この PK は他の多くのテーブルで FK として使用されているため、PK を削除および再作成せずに、この構成 (テーブル、PK および FK の組み合わせの列ではなく) を並べ替える方法はありますか。

ありがとう。

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

c# - Web アプリケーションでの混合文字と整数ベースの識別子のベスト プラクティス

識別子を使用して特定のページを識別する必要がある Web アプリケーションを開発しています。

通常、DB 内のアイテムの ID に関連する自動インクリメント整数を使用します。

例: http://example.com/item/1

しかし、次のような識別子の使用がますます増えています (TinyUrl と YouTube): http://example.com/item/1BHYQJh1

そして、私はこの解決策をとるべきでしょうか?

本当に長い整数になる場合に備えてIDを短くするだけですか?

それとも、1を2に置き換えることで人々がURLを「推測」できないように、魂を「ハックプルーフ」することですか.

最後の 1 つは本当に感謝しています。この特別なセキュリティをアプリケーションに追加したいと思います。しかし、これとまったく同じことを行うコードスニペットを知っている人はいますか?

C# の例は素晴らしいでしょう。

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

mysql - そのキーのレコードが削除された後、MySqlテーブルの主キーの値を自動的に再割り当てします

phpMyadminでMySqlを使用しています。主キーを含むテーブルがあります。この主キーは「ユーザーID」であり、「自動増分」フィールドでもあります。このアプリケーションには、「userid」を持つ特定のユーザーを削除する機能もあります。したがって、ユーザーを削除した後、新しいユーザーを再度作成すると、「userid」は次の整数の値を取得します。テーブルに削除を考慮させ、主キー値、削除された番号を割り当てたい。

例:テーブルの「userid」値は-1、2、3、4、5、6、7 ...です。値3のuseridを削除したので、ユーザーの次のレコードを作成するときに、テーブルは次のようになります。ユーザーID値「3」は使用されなくなったため、使用してください。phpmyadminでそれを行うにはどうすればよいですか?

useridの値の数を最小限に抑えるためにこれを実行したいと思います。カウントは、ユーザーIDの5桁の値まで上がる可能性があります。したがって、2桁が以前に削除されてから使用できる場合、この2桁の値を使用すると、データベースのメモリ使用量を節約できます。