お世話になります。
アクセスでテーブルを作っています。
後で参照整合性のリレーションで結ぶ予定のフィールドなんですが、
同じフィールドを、複数のテーブルに持つ必要があるか悩んでいます。
意味わかりにくくてすみません。
例えば、「○○事業部の、○○部署の、○○社員」という識別をする場合、
◆「事業部」テーブルのフィールド:「事業部コード」
◆「部署」テーブルのフィールド:「部署コード」「事業部コード」
◆「社員」テーブルのフィールド:「社員コード」「部署コード」 *「事業部コード」
を作ります。
★この場合、「社員」テーブルの *「事業部コード」フィールドは必要か否かと、その理由(影響など)を知りたいのです!
「事業部」テーブルと「部署」テーブルの「事業部コード」、
「部署」テーブルと「社員」テーブルの「部署コード」は、
それぞれリレーションシップ(参照整合性)で結ぶ予定です。
★「事業部」テーブルと「社員」テーブルの「事業部コード」も、リレーションで結ぶ必要があるのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
>★この場合、「社員」テーブルの *「事業部コード」フィールドは必要か否かと、その理由(影響など)を知りたいのです!
不要です。
社員テーブルの部署コードで、部署マスタを参照すれば事業部コードは
取得できます。
設ける事の弊害
部署マスタの事業部コードに変更があった場合、部署マスタのみならず
社員テーブルの、事業部コードまで変更する必要が出てきます。
>★「事業部」テーブルと「社員」テーブルの「事業部コード」も、リレーションで結ぶ必要があるのでしょうか?
社員マスタには、事業部コードは不要なので、問題とならないです。
早速のご回答ありがとうございます!
そうですね!確かに、kurodai2さんのおっしゃる設ける事の弊害は、本当にそのとおりですね。
気付きませんでした。
ずっと気になっていたのでスッキリしました!
今から「事業部コード」にあたるフィールドを削除します。
またよろしくお願いします。
No.3
- 回答日時:
余りにも愚かな回答と思われても何ですで2点ほど補足しておきます。
1、設計は、データ量で変わるもんです。
2、設計は、スタッフへの配慮でも変わるもんです。
事業部の数が30程度ですと、単純区分名参照方式が適しているでしょう、
が、その数が150ともなると、
ID
部署_ID
コード
名称
というテーブル設計も視野に入ってくるのは当然。
さて、この場合、当然に、社員テーブルの[部署_ID]は無用となってきます。
しかし、これも<スタッフへの配慮>で最終決定する必要があると思います。
[部署_ID]を追放した場合、SELECT文で部署.名称を参照できるコードをスタッフが書けるか否か?
ここで、皆が苦労するようだったら、たとえ邪道と言われようとも残すべきでしょうね。
先の回答は、退社時間1分前の駆け込み回答で舌足らずでした。
チクッと、「設計もデータ量、スタッフレベルで決まる」という視点から補足しておきます。
ご回答ありがとうございました。
お返事遅くなりまして申し訳ありません。
内容が専門的でちょっと分からなくて考えてしまいました。
きちんと理解できずにすみません。
なんとなくのレベルで申し訳ないですが、このような考え方もあるのだなと思いました。
すみません、全然理解できていないかもしれないです・・・
No.2
- 回答日時:
一介の服飾デザイナでプログラマではありませんので専門的な回答ではありません。
そういうことで参考程度にされて下さい。
(1) 部署コード、事業部コード、社員コード=プライマリキーという発想はいかがかと思います。
(2) リレーション・シップを張るべきか否かは、必要に応じて適宜に判断されてもよいと思います。
<社員>
ID____________1,2,・・・,N
コード_______101
部署_ID_____1
事業部_ID__1
<部署>
ID____________1,2,・・・,N
コード_______101
名称_________総務部,営業部
<事業部>
ID____________1,2,・・・,N
コード_______101
名称_________第一事業部、第二事業部
確かに、社員コードや部署コードが存在するので、それをプライマリキーにという発想も理解できます。
が、プライマリキーは、現実を映す鏡ではなく単なるデータベースの内部処理上で必要なもの。
こういう類の列は、現実を全く反映しない純粋なシステム列でいいのじゃないですかね。
この場合、参照整合性も、部署コード、事業部コードではなく[ID]で参照しているので問題ではないです。
さて、社員.部署_ID、社員.事業部_ID が、単なる社員の大区分、中区分であればリレーションシップは不要。
そういう場合は、大区分や中区分の区分名を単にテーブルからルックアップしているに過ぎないとも言えます。
ですから、その限りでは、リレーション・シップも別段に必要不可欠ではないです。
と、私は、このように思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- 法学 コンピューター プログラミングの言語で記述されたプログラミングのコード一式は、作った人に 著作権があ 4 2023/08/04 17:31
- JavaScript HTML&CSS Javascriptによる動的テーブル 1 2023/03/27 19:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AccessVBA SetFocusとGoToCon...
-
「年」と「月」だけの日付の表...
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
差込印刷での全角表示について...
-
リンクされたテーブルのレコー...
-
ACCESSの時間帯の抽出について
-
Accessで、1つの項目に複数の...
-
アクセスのエラー「クエリには...
-
Accessでリストの並び順を変更...
-
AccessのDLookUpの第3引数の値...
-
PCゲームから音声ファイルを抽...
-
今週分だけ表示させたい
-
アクセス 項目毎にデータを横...
-
Access2013 クエリ内別フィール...
-
Access 複数のクエリの結果を...
-
ACCESS2000で複数のクエリをフ...
-
最新日のデータのみ抽出するク...
-
EXCELの外部データ取得ができない
-
Word2010の差込印刷で金額にコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのフォームのテキストボ...
-
初心者なのですが・・・access...
-
AccessVBA SetFocusとGoToCon...
-
Accessのフォームで計算した結...
-
アクセスのデータをCSVファイル...
-
Access フォームの参照先について
-
Accessでアンケート集計を構築...
-
アクセス クエリーの作成
-
access 2016で請求書アプリを作...
-
アクセス 各テーブルでのフィ...
-
accessについてです。
-
筆ぐるめ2004での住所録のソー...
-
Access97のフォームで一人につ...
-
access2019 コンボボックスの値...
-
CUBASE LE5でアクティベーショ...
-
ACCESSで他のテーブルからのデ...
-
差込印刷での全角表示について...
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
アクセスのエラー「クエリには...
おすすめ情報