ここから本文です

[データベース設計]主キーについて教えてください。

アバター

ID非公開さん

2019/6/2000:34:10

[データベース設計]主キーについて教えてください。

カラム名 データ型

ユーザーID(user_id) SMALLINT
ユーザー名(user_name) VARCHAR
ログインID(login_id) VARCHAR
ログインパスワード(login_pw) VARCHAR

上記のユーザーテーブルがあります。
制約設定で、ユーザーIDは自動採番(AutoIncrement)で主キーとします。

問題はログインIDカラムですが、これは重複させない[UNIQUE]とNULL値を許可しない[NOT NULL]制約をつけたいと考えております。

質問です。

①ログインIDカラムにUNIQUEとNOTNULL制約をつけるということはつまり主キーになるということでしょうか。
そうなるとユーザーIDとログインIDの複合主キーとなるのでしょうか。

閲覧数:
17
回答数:
4
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nora1962jpさん

2019/6/2011:12:54

リレーショナル・データベースの設計としては

ユーザーIDとログインIDは「候補キー」という位置付けになります。
どちらも「主キー」になりえる「候補」です。
そのうちどちらを「主キー」にするかは任意です。
「主キー」はテーブルに1つしか存在しません。

ユーザーIDのように自動採番するようなものは「サロゲートキー」と呼び「社員番号」「メールアドレス」のようなものは「ナチュラルキー」「自然キー」呼びます。

テーブルに候補キーが複数あってもそれだけで問題にはなりません。

結論としては既回答にありますが
・ログインIDは「主キー」になるわけではない
・ログインIDとユーザーIDの複合主キーにはならない

テーブル設計で「候補キー」というものを取り上げない入門書、サイトが多いための誤解、混乱だと思います。

アバター

質問した人からのコメント

2019/6/20 18:58:43

皆様回答ありがとうございます。
大変勉強になりました。

詳細を教えて頂きありがとうございます。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

原沢信道さん

2019/6/2010:48:38

ユーザーIDもログインIDもユニークですので、単独で主キーと成りえます。この場合一般的にはユーザーIDは不要として無しとしますが、何らかの理由で必要な場合は、どちらかを主キー(主キーは1個)とします。複合主キーとする意義はまったく有りません。

uk_********さん

2019/6/2009:06:58

主キーはUNIQUEかつNOT NULLですが、UNIQUEかつNOT NULLだからといって主キーになる訳ではありません。

プロフィール画像

カテゴリマスター

iru********さん

2019/6/2008:51:55

>①ログインIDカラムにUNIQUEとNOTNULL制約をつけるということはつまり
>主キーになるということでしょうか。

いいえ、主キーにはなりません。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる