[解決済み] 複数のカラムを主キーとして使用する理由(複合主キー)
2022-08-19 05:54:29
質問
この例は w3schoolsから .
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)
私の理解では、両方のカラムを一緒に(
P_Id
と
LastName
) はテーブルの主キーを表します。
Persons
. これは正しいのでしょうか?
- なぜ、単一の列ではなく、複数の列を主キーとして使用したいのでしょうか?
- あるテーブルで主キーとして一緒に使用できるカラムはいくつですか?
どのように解決するのですか?
あなたの理解は正しいです。
これはいろいろなケースで行われるでしょう。 一例として、以下のような関係で
OrderHeader
と
OrderDetail
. のPKは
OrderHeader
は
OrderNumber
. のPKは
OrderDetail
は
OrderNumber
そして
LineNumber
. この2つのどちらかであれば、一意ではありませんが、この2つの組み合わせは一意であることが保証されています。
別の方法として、生成された(非インテリジェントな)主キーを使用することもできます。例えばこの場合は
OrderDetailId
. しかし、その場合、関係を簡単に確認することはできません。 ある人は一方の方法を好み、ある人はもう一方の方法を好みます。
関連
-
[解決済み] MySQLで複数のカラムに一意制約を指定するには?
-
[解決済み] Sqliteの複数カラムの主キー
-
[解決済み] postgres の主キー配列が同期しなくなったときにリセットする方法は?
-
[解決済み] カレンダーの繰り返し/繰り返しイベント - 最適な保存方法
-
[解決済み] データベース内のレコードをバージョン管理する方法【終了しました
-
[解決済み] ヒストリカルデータの保存方法【終了しました
-
[解決済み] 監査ログを取得するためのデータベース設計【終了
-
[解決済み】多言語データベースのためのスキーマ
-
[解決済み] 各製品が多くのパラメータを持つ多品種の製品テーブルを設計する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン