Watanabe-45 さんの引用:
張ありの職員】(主キーは職員ID)
職員ID 出張@ 出張A・・・
通常、テーブルの設計で、出張@・出張A のように同じ項目を複数用意してはいけません。なぜなら出張が増えるたびに項目を増やすのですか。
そして、同じ出張で、一人で行くことも、上司と二人で、または複数人で行くこともあるでしょう。
また、主キーは目的はレコードに一意の値をつけることでレコードの特定で目的です。主キーはテーブル設計で重要な項目ですが、重複防止のために容易されたものではありません。
重複を防ぐには、ユニークキーを設定します。主キーはユニークキーでもありますが、目的が異なるので、適切に設計しましょう。
設計として、以下のような例が考えられます。
職員テーブル
職員ID 主キー(PK)
氏名
住所
出張内容テーブル
出張ID 主キー(PK)
日付
内容
出張関連テーブル
職員ID 主キー・外部キー(FK)
出張ID 主キー・外部キー(FK)
テーブル内容として、例えば下記の場合
職員テーブル
職員ID 氏名 住所
1001 鈴木 〇〇
1002 佐藤 □□
出張内容テーブル
出張ID 日付 内容
1 2024/04/01 △△視察
2 2024/04/02 〇〇講習
出張関連テーブル
職員ID 出張ID
1001 1
1001 2
1002 2
以下のクエリを実行。
SELECT
職員テーブル.氏名
, 出張内容テーブル.日付
, 出張内容テーブル.内容
FROM
職員テーブル INNER JOIN
(出張内容テーブル INNER JOIN 出張関連テーブル
ON 出張内容テーブル.出張ID = 出張関連テーブル.出張ID)
ON 職員テーブル.職員ID = 出張関連テーブル.職員ID;
クエリ結果
氏名 日付 内容
鈴木 2024/04/01 △△視察
鈴木 2024/04/02 〇〇講習
佐藤 2024/04/02 〇〇講習
鈴木は△△視察、〇〇講習に出張
佐藤は〇〇講習に出張
△△視察は鈴木が一人のみ
〇〇講習は鈴木・佐藤の2名。