問題タブ [primary-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.
mysql - MySQLの主キーとしてファイルパスを使用する
ファイルに関する情報のみを含むテーブルがあるので、ファイルパスは一意であり、任意のエントリを識別できるため、主キーとして使用する必要があると思いました。
ただし、キーの長さを指定する必要があるなど、いくつかの問題があります(エラー1170)。私は何をすべきか?主キーとして整数を使用し、ファイル'x'の情報にアクセスする必要があるたびに、 "where FilePath = x"を実行しますか?
私の質問を読んで時間を割いてくれてありがとう。
asp.net - 複数のタイプの親を含むコメントテーブル
私のサイト(ASP.NET/C#/MS-SQL 2005)には、コメント(ユーザープロファイル、画像ページ、ビデオなど)を許可する複数のセクションがあります。すべてを1つのコメントテーブルに保存したいと思います。
私の問題は、コメントをその親にリンクすることです。ユーザープロファイルの主キーは一意の識別子ですが、画像と動画はintを使用します。コメントからその親への外部キー関係が欲しいのですが。
このためのベストプラクティスと見なされるものは何ですか?
sql - GUIDなしでNaturalIdentity列を使用する必要がありますか?
組み合わせて一意でなければならない2つの外部キー列を持つテーブルの主キーを定義しても大丈夫ですか?したがって、新しいID列(Guidまたはint)を追加しませんか?
これにはマイナス面がありますか?
sql - 2^32 では不十分な場合はどうなりますか?
テーブルに非常に多くのエントリがあり、特定の期間 (日、週、月、...) 内の auto_increment ID に 2^32 では不十分な場合はどうなりますか?
MySQL が提供する最大のデータ型では不十分な場合はどうなりますか?
一意の ID を必要とする非常に多くのエントリがテーブルに追加されている状況をどのように解決すればよいでしょうか?
MySQL (またはその他のシステム) 内でネイティブに、無制限の数の一意の ID を達成するか、少なくとも指数関数的に増やすにはどうすればよいでしょうか?
理想的には、次のようなものを期待します
これにより、エントリの量が指数関数的に増加します。
そのような状況にどのように対処しますか?
覚えておいてください - 要件は、すべてのエントリに対して一意の ID を持つことです。
sql-server - SQL 2005 でクラスター化された主キーを削除するとどうなるか
私は PK 制約 (2 つの列のクラスター化インデックス) を持っていますが、これは削除中です。コマンドは 1 時間後も実行中です。制約を削除しているだけなので、操作はほぼ瞬時になると思っていたでしょう。誰かが私に PK を落としたときに実際に何が起こっているのか説明してもらえますか?
sql - SQL 2005 でクラスター化インデックス (PK) を変更する最良の方法
テーブルの主キーである 2 つの列にクラスター化インデックスを持つテーブルがあります。次のように定義されています。
このクラスター化インデックス PK を削除し、次のようにクラスター化インデックスを追加し、以下に示す非クラスター化インデックスを使用して主キー制約を追加したいと考えています。
PK クラスター化インデックスを削除してから、新しいクラスター化インデックスを追加し、次に非クラスター化主キー インデックスを追加するつもりでしたが、既存のクラスター化インデックスを削除すると、テーブル データの順序が変更されることがわかりました (こちらの回答を参照してください) 。 SQL 2005 でクラスター化された主キーを削除すると発生します)、これは必要ではないと思います。テーブルは 1 TB をノックしているので、不要な並べ替えは避けたいと思っています。
私の質問は、既存の構造から望ましい構造に移行するための最良の方法は何ですか?
編集:明確にしたいだけです。テーブルは 1 TB ですが、残念ながら一時テーブルを作成するスペースがありません。一時テーブルを作成せずにそれを行う方法があれば教えてください。
database - 最適な主キー+番号付けシステムの選択
私たちが作成している資産システムの番号付けシステムを考え出そうとしていますが、オフィスでこのトピックについていくつかの白熱した議論があったので、SOの専門家に尋ねることにしました。
以下のデータベース設計を検討すると、より良いオプションがあります。
例1:自動代理キーの使用。
例2:プログラムで生成されたPKを使用する
(これは、道路の最初のセグメントである00000001.1
ことを意味します。これは、新しいセグメントを追加するたびに増加します。例)00000001.2
例3:両方のビットを使用する(新しい列を追加する)
ほんの少しの背景情報ですが、レポートやその他のドキュメントでとRoad Number
を使用するので、それらは一意である必要があります。 Segment Number
私はいつも物事をシンプルに保つのが好きだったので、例1を好みますが、レポート/ドキュメントで主キーを公開するべきではないことを読んでいます。だから今、私は例3の線に沿ってもっと考えています。
また、資産番号の生成方法を変更することにした場合、主キーに対してカスケード更新を行う必要がないため、例3にも傾いています。
私たちは何をすべきだと思いますか?
ありがとう。
編集:素晴らしい答えをありがとうみんな、私を大いに助けてくれました。
sql-server - 会社-従業員データベースの設計
CompanyデータテーブルとEmployeeデータテーブルを持つSQL2005データベースを構築しようとしています。各会社には、従業員1、従業員2などが必要です。各従業員レコードには、従業員IDと会社IDの両方のPKが含まれることに気付きましたが、これを行うための最善の方法を私は一生決めていませんでしたか?
何か案は?
これを少し明確にしましょう
各会社には、独自の従業員#1、#2などを含めることができます。会社IDと要求された従業員IDを渡すことによって特定の従業員を返すストアドプロシージャがあるとします。
会社1には従業員1がいて、会社2には別の従業員1がいる可能性があることに注意してください。これを行うにはどうすればよいですか?会社ごとに固有の従業員用の増分主キーを取得するにはどうすればよいですか?