問題タブ [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 投票する
2 に答える
73 参照

database - 列が 2 つしかないテーブルで主キーを使用する必要があります。どちらも一意です

次のようなテーブルがある場合

CustomerAddress(CustomerId, AddressId)

int 自動インクリメントなど、追加の主キーが必要ですか? または、両方の列を主キーとして設定するだけで十分でしょうか?

前提: 削除するときは、customerId だけで削除し、customerId と AddressId の両方で削除することはありません

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

php - MySQL で一意の参照を主キーとして使用する

一般的な質問がありました。

次のようなページが生成される URL が非常に気に入っています。

www.example.com/order/1e4fk678

1e4fk678 は、出力を生成する php ファイルにポストされる変数です。

私の質問は次のとおりです。データベース テーブルを作成する最良の方法は何でしょうか。主キーの自動挿入を持つ ID は、1、2、3、... のような ID を生成するだけです。

では、高速なデータベース追跡/トレースをもたらす一意の ID を使用する最良の方法は何ですか?

ありがとう

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

duplicates - 重複およびリージョン サーバーのホットスポットに関する HBase テーブル キーの設計

userIdで識別されるユーザーによって生成されたイベントを保存する必要があります。各ユーザーは、companyIdで識別される会社に属しています。次のように、HBase のテーブルのデザインを考え出しました。

rowkey : < companyId >< userId ><タイムスタンプ>

column-family : info (以下に示すイベント属性のセットをカプセル化)

: <属性1 >、<属性2 >....<属性>

このキーの設計により、部分的なキー スキャンを使用して、 companyIduserIdで後でデータのクエリを実行しやすくなることがわかっています。そうは言っても、いくつかの質問と懸念があり、いくつかのアイデアを得たいと思っていました。

1- 時間範囲を指定してすべてのデータを読み取る読み取りユース ケースがある場合、この現在の設計では、rowKey を使用できません。代わりに、フル スキャンを実行し、タイムスタンプ フィールドの行をフィルター処理する必要があります ( attr列の 1 つとして個別に保持されます)。

2-重複を処理する方法は? その場合、HBase が行の新しいバージョンを作成することはわかっていますが、1 で述べた読み取りユースケースに従って、後で読み取ることができますか? クエリを実行するときにバージョンを制御できることはわかっていますが、それは良い設計になるのでしょうか、それともネイティブ機能を誤ってオーバーロードするのでしょうか?

3- これは地域サーバーのホットスポットに関するものです。モノリシック キーはありませんが、特定の企業またはユーザーが非常にアクティブである場合、この問題に遭遇する可能性があります。この場合、サーバーの数に基づくハッシュとバケット化は機能しませんか? タイムスタンプ フィールドをハッシュして、それを元の値ではなく、rowKey に追加するとしたらどうでしょうか。しかし、問題は、キーのタイムスタンプ コンポーネントをスキャンできないことです。それをキャプチャするには、列に別の列 (attr) が必要です。助言がありますか?

提供できる情報 (コメント、リンク、本、アイデア) に感謝します。

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

sql - 列の内容を変更せずに ID に +1 を増やす

ランダムな内容のこのランダム テーブルがあります。

ID | 名前| ミッション
1 | あああ | キター
2 | bbbb | エトレ
3 | cccc| qwqw
4 | dddd | 第5四半期
| ええええ | ポテンシャル
6 | ふふふふ | とと


私が望むのは、上記のテーブルに id=3 の列を別の名前と別のミッションで追加することですが、OLD id = 3 id = 4 に名前と以前の id のミッションが必要です=3、OLD id =4 は id=5 になり、id 5 の名前とミッションなどになります。
そのように、列の内側に列を入力したいのですが、その下の列にIDを+1増やしたいのですが、列は同じままです。以下の例:


ID | 名前| ミッション
1 | あああ | キター
2 | bbbb | エトレ
3 | zzzzzz| zzzzz
4 | cccc| qwqw
5 | dddd | 第6四半期
| ええええ | ポテンシャル
7 | ふふふふ | とと

なぜ私はこれをしたいのですか?2 つの CLOB を持つテーブルがあります。これらの CLOB の内部には、さまざまなクエリがあります。例: id =1 には、テーブルの作成の clob があります id=2 は、列に挿入します id=3 には、別のテーブルの作成があり
ます(またはクロブ)作成してから挿入してから関数を作成する必要があります。そのテーブルは巨大なスクリプトのようなものです。
なぜ私はこれをしているのですか?開発者はアプリケーションを構築しており、SQL が特定の順序で機能することを望んでいます。私には 6 人の開発者がいて、データ モデリングとパフォーマンス、およびスクリプトの実行方法を整理しています。したがって、上記の表は、スクリプトの呼び出しを整理するものです彼らは弱っている

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

database - 主キーと複合キー

主キーが複合キーであるテーブルがある場合、複合キーの代わりに常に新しい列を主キーとして作成しますか?それとも DB 分析に依存しますか?

どの方法が最適ですか?なぜ?