- ベストアンサー
社員DBを作る
お願いします。 Accessで社員DBを作ろうと検討しておりますが、基本的な考え方についてアドバイスください。 1)社員の氏名、所属、住所などの基本情報を入れるマスタテーブルを作る(社員番号を主キー)。 2)付加的な情報を入れるテーブルを作る。たとえば、 (1)家族情報(2)資格情報(3)人事考課情報(4)勤怠情報など・・。 3)上記、基本情報を入れるテーブルと付加的情報テーブルを社員番号をキーとしたリレーションで結ぶ。 4)各社員について、付加的情報テーブルに情報を入力していき、必要に応じてクエリで取り出す。 情報の入力の仕方として考えているのが、 1)基本情報入力フォーム上に、付加的情報の入力用のフォームを開くボタンを配置する。 2)基本情報入力フォームを開いた後、必要に応じ、該当するボタンを押して入力フォームを開き、付加的情報を入力していく。 具体的に言えば・・ 1)Aという社員の基本情報を開いて、付加的情報たとえば家族情報を「家族テーブル」に入力する。 2)その後、Bという社員の同じ家族情報を入力するためにBの基本情報を開いて、Bの家族情報を入力する。 3)家族テーブルには、Aの家族とBの家族のレコードが混在して蓄積されるが、区別するために、各レコードに「社員番号+行番号(連番)」を自動的につけていく。 4)基本情報フォームで社員を選択し、家族情報フォームを開くと、社員番号をキーに抽出されたレコードが表示される。 長々と書きましたが、この社員台帳データベース作成上の基本的な設計方法に問題はないでしょうか? もしおかしければ、どこをどうすれば使えるDBになるのでしょうか? アドバイスをお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>勤怠情報について日付を組合せる場合ですが、同じ日付けで複数の入力(例:遅刻と早退)がある場合を考えて、社員番号+日付+行番号・・となりますでしょうか? 「社員番号+日付+行番号」が主キーでOKです。 {データの例} 社員番号, 日付, 行番号 0001, 2004/08/02, 1 0001, 2004/08/02, 2 0001, 2004/08/03, 1 0001, 2004/08/04, 1 0002, 2004/08/02, 1 0002, 2004/08/03, 1 0002, 2004/08/03, 2 0002, 2004/08/04, 1 0002, 2004/08/04, 2 ・ ・ ・ 「社員番号+日付+行番号」と「社員番号+行番号」のどちらを主キーにした方が良いかは、 他の項目を全て検討しなければ厳密にはわかりません。
その他の回答 (2)
- rotesKomet
- ベストアンサー率31% (83/265)
(1)家族情報(2)資格情報(3)人事考課情報(4)勤怠情報の主キーは「社員番号+行番号(連番)」で基本的には問題ないと思います。 資格情報は、資格の種類が固定的であれば、資格マスタテーブル(主キー:資格コード)を作成して、資格情報テーブルの主キーを「社員番号+資格コード」にする方法もあります。 勤怠情報は、内容によっては、主キーを「社員番号+年月日」でも良いかもしれません。
お礼
ありがとうございます。 社員番号と資格番号の組合せですね・・なるほど。 勤怠情報について日付を組合せる場合ですが、同じ日付けで複数の入力(例:遅刻と早退)がある場合を考えて、社員番号+日付+行番号・・となりますでしょうか?
- laputart
- ベストアンサー率34% (288/843)
基本的なDBで問題はないと思います。 (1)家族テーブルには、Aの家族とBの家族のレコードが混在...と言うことはその通りですが、この管理は親テーブルのリンクを社員番号で行う場合は 行番号(連番)は必要ないと思います。 ただこの情報を入力日(日付 自動)をもっていれば 家族情報がいつ更新されたかわかります。 (2)あとは問題ないと思います。途中までテスト的にテーブル、クエリーを作成しながら修正される方が わかりやすいです。
お礼
早速の返信ありがとうございます。 なるほど日付フィールドで更新日がわかりますね。
お礼
ありがとうございました。 いろいろテストしながら作りこんでみます。 また質問がありましたら宜しくおねがいします。