問題タブ [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.
database-design - 主キーにアイテム固有のプレフィックスと自動番号を使用しますか?
今朝、私たちが作成しているデータベースにあるアセットの ID をどのように保存すべきかについてミーティングを行いましたが、議論が少し熱くなったので、SO の専門家に相談することにしました。
私たちが持つべきだと私が信じているテーブル構造(短いバージョン)は次のようなものです:
例1)
- AssetId - int(32) - 主キー
- タイプ - 文字列
したがって、いくつかのサンプルデータは次のようになります。
等
チームの別のメンバーは、次のような提案をしました。
例 2)
- AssetId - 文字列 - 主キー
- タイプ - 文字列
したがって、いくつかのサンプルデータは次のようになります。
タイプの短いバージョンを作成し、ID の前に追加して、データベースに保存します。これを行ういくつかの資産データベースを見てきましたが、実際にはこのアプローチはありませんでした。
ソートの理由で文字列を ID として使用するという考えは、私はあまり好きではありませんでした。とにかくアセットストアのようなものをすでに持っているのに、無駄な情報をただ保存しているようにも感じます。
どのようなアプローチをとりますか?なぜ?アプローチ 1 を 2 よりも使用する利点はありますか?
編集: はい、アプローチ 1 に AUTO_INCREMENT を使用します。
sql - SQLデータベースの主キーとしての文字列
私はデータベースとそれらがどのように機能するかの背後にある理論にあまり精通していません。パフォーマンスの観点(挿入/更新/クエリ)から、整数よりも主キーに文字列を使用する方が遅いですか?
c# - 修正方法: DeleteCommand の動的 SQL 生成は、キー列情報を返さない SelectCommand に対してサポートされていません
私のコードは動作します。約 10 個のテーブルをコピーした後、エラーが発生します。Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.
さて、主キーを生成する必要があることはわかっています。しかし、なぜ 10 個ほどのテーブルをコピーできるのか、エラーが発生します。各行は主キーを返す必要がありますか? 行に主キーがない場合、どうすれば生成できますか?
これが私のコードです:
これに関して、Googleはあまり役に立ちませんでした。コーディング例を提供してください。
php - MySQL で複数列の PK を取得する
MySQL で複数列の PK を取得するにはどうすればよいですか?
たとえば、主キーを PRIMARY KEY ( donor_id
, country_id
)として設定しています
選択クエリでこれら 2 つのフィールドを連結せずに主キーの値を取得したい場合は、どうすればよいですか? これをビューで使用したい(または、さらに良いことに、phpmakerで直接使用したい)。
oracle - 複数の列で主キーを作成すると、それらすべてのインデックスが生成されますか?
Oracle で複数の列に主キーを設定する場合、必要に応じてインデックスも作成する必要がありますか?
ある列に主キーを設定すると、それによって索引が付けられると思います。複数列のPKでも同じですか?
ありがとう
database - ネイティブ主キーまたは自動生成キー?
原則として、ネイティブの主キー (つまり、既存の列または列の組み合わせ) を使用するのと、主キーを整数の自動生成行に設定するのとではどちらがよいでしょうか?
編集:これはこの質問
に非常に似ていることが指摘されています。
ここでのコンセンサスは、私の自然な傾向である代理キーを使用することですが、上司から、可能であれば自然キーも使用するように言われました。Name in row はそれを一意に識別し、古いデータを表示する機能を維持する必要があるため、名前/ルールへの変更は新しい一意の行を意味するため、彼のアドバイスはこの特定のアプリケーションに最適である可能性があります。
ここでの回答はすべて役に立ちますが、それらのほとんどは主観的な「これがあなたがすべきことです」に基づいており、裏付けとなる情報源を引用していません. 重要な読み物がいくつか抜けているのでしょうか、それともベスト プラクティスのデータベース設計が非常に主観的であり、アプリケーションに依存しているのでしょうか?