• ベストアンサー

出勤管理のデータベース設計

↑をアクセスで作成しています。今のところ、社員テーブル、作業場テーブル、部門テーブルなどを作ってあるのですが、肝心の出勤データはどう設計すればよいのかぜんぜんわかりません。月ごとに申告するものですが、年、月、日、さらに一日分の出社時刻、退社時刻、場所、その他いくつかの項目があり、複雑すぎてどうやればわかりません。もちろん社員分のデータ管理なので、一人分ではありません。かなりぱにくってます。どうぞおしえてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.2

社員番号 作業場番号 日付 (以下時刻) IN OUT 外出1~3 戻り1~3 (以下時間) 時間内 時間外 深夜 休日 休日深夜 だいたいこの位でしょうかね~ 時間の部分は一括計算させる処理で算出すればいいでしょう。 作業場が一日に複数箇所あり得るなら工夫が必要でしょう。 部門は社員の所属先と考えたので、出勤データにはいれてません。 頑張ってくださいヽ(^。^)ノ

YSK-Dream
質問者

お礼

返事がおそくなってすみません! 列挙していただいたフィールドがかなり参考になりました。ありがとうございました!

その他の回答 (3)

回答No.4

こんにちは。 具体的なやり方は、仕様書を見ないとなんとも言えませんが、 1.テーブルは、なるべく一番細かい段階のものを作る。(ここでは1日?) 2.ひとつのテーブルに詰め込まず、リレーショナルな概念を持たせる。(時間、場所、社員など・・・) 3.サマリー(年、月など・・・)は必要なときに抽出すれば十分。 のような感じで作ってみてください。 答えになってませんね・・・。 (^^ゞ

YSK-Dream
質問者

お礼

だいぶ返事が遅れました。すみません・・・。 taka451213さんが言われたとおり、テーブルは一番細かい段階のものにすることでなんとか一番困っていた点は解決できました。 テーブルも正規化することでスッキリしました。 ほんとに助かりました。ありがとうございます!

回答No.3

マスタは出来つつあるので、今度は、データといったところでしょうか。 データ設計は、画面設計から入ったほうがいいかもしれませんね。 まず、何を管理するかを決めます。 質問文にあるように、 年、月、日 出社時刻 退社時刻 場所 以外ですよね。 ・プロジェクト管理するのか ・個人によってシフトが変わるのか ・勤務区分(通常、有給、代休)は必要か 画面入力のイメージ図を考え、必要入力項目を決め、データ項目設計を考えます。 その上で、マスタ管理しなければいけない項目をマスタ化します。 たとえば、 プロジェクトコードマスタ 勤務区分マスタ ・ ・ ・ あと、過去のデータのどの項目を管理し続けるかによって、月次更新(月締め)の項目が変わってきますね。

YSK-Dream
質問者

お礼

返事がおくれてしまいもうしわけございません! なんとかそれらしきものはできたのですが、 ・プロジェクト管理するのか ・個人によってシフトが変わるのか などといったような若干複雑な項目はまだまだ難しいようです。 これからやっていきたいと思います。 ありがとうございました。

  • ryou0607
  • ベストアンサー率27% (71/261)
回答No.1

社員番号、出社日付(年月日日時)、退社日付(年月日日時)、この三つのカラムを用意して ・一日ごとに行を作成する ・月ごとに社員番号でselectしたものを出力する ・その他の項目は、日ごとのものであれば同じテーブルに、そうでなければ別のテーブルを用意し、社員番号でselectする 社員番号で結びつけたクエリを作った方が良いかも知れません。 それとも、もっと複雑なのでしょうか。

YSK-Dream
質問者

お礼

遅くなってしまい、申し訳ありません。 「・一日ごとに行を作成する」というアドバイスにはっとしました。要は一番小さな単位でレコードをつくっちゃえばいいんですね。 やっと解せました、ありがとうございました☆

関連するQ&A

  • エクセルで出勤簿を作ってます。

    時間をSUMで計算していて、 「退社時間-出社時間-昼休みの時間=就業時間」 という式を入れています。 就業していればちゃんと計算が出るのですが、本日以降の分が、出社時刻と退社時刻が0時間のまま昼休みを引いているので「-1時間」で出てしまいます。 時間が負の数になったら「0時間」で表示させたいと思っているのですが、どうやったらできるのでしょうか? 明日以降の就業時間のセルには式を入れずに”出勤したら式をコピー”で対応できるかもしれないのですが、効率的にやりたいのでわかる方お願いします。

  • アクセス クエリ アドバイス下さい! 従業員出勤退勤のデータ

    お分かりのかた、アドバイス、ご教示いただけますと幸いです。 以下のテーブルがあります。 --------------------------------------------------------------------------------- 出勤時刻 退勤時刻 8:47:00  13:15:00 8:49:00  18:03:00 9:00:00  13:00:00 10:00:00  19:09:00 11:47:00  20:43:00 ※日付/時刻型です。 --------------------------------------------------------------------------------- (1)クエリで時間ごとに纏めて表示しカウントしたい。  ※条件として勤務時間は15分単位で、8:47出社は9:00、18:03退社は18:00となります。 出勤時刻 退勤時刻 人数  9:00  13:00   1  9:00  13:15   1  9:00  18:00   1 10:00 19:00    1 12:00 20:30   1 (2)クエリで時間ごとにまとめた上で在籍人数をカウントしたい 時間帯 人数  9:00  3  9:15  3  9:30  3  9:45  3 10:00  4 10:15  4 10:30  4 10:45  4 11:00  4 11:15  4 11:30  4 11:45   4 12:00   5 (1)と(2)上記のようなことは可能でしょうか? 大変お手数をお掛けいたしますが、ご教示いただけますと幸いです。 どうぞ宜しくお願いいたします。

  • (労務系)従業員の時間管理について

    社員数が増えてきたので新しいタイムカードの購入を検討しております。私の会社はほぼ全ての社員が裁量労働制になるのですが、出社時間や退社時間の管理は必要となるのでしょうか? 具体的にタイムカードって下のような感じだと思うのですが 日付   出勤   退勤   備考(残業?) 12/1   9:14   19:44   これを下記のようなタイムカード(打刻ではなく自己申告用紙)に変更することは問題ないでしょうか。 日付   出社   退社   深夜残業   休日出勤 12/1    ○    ○     4h     裁量労働制においても出勤と退勤の時刻を会社側として管理しておかねばならないのでしょうか。。 宜しくお願いします。

  • メッセンジャーで出勤管理することできますか?

    うちの会社では、入社時退社時に出勤名簿に手で時刻を記入して出勤管理をしています。朝早く来た場合や夜遅く帰った場合は、本当に正しく記入されてるか分かりません。社員全員に配布してるメッセンジャーでPCの起動時間やシャットダウン時間は分かりませんでしょうか?

  • データベース設計、同一マスターへの外部キーについて

    例えば社員マスターテーブルがあり、稟議書のテーブルがあったとします。 稟議書のレコードには、作成者、指示者、承認者など、 社員を入れるべき項目がいくつもあり、 データ上はIDとしたいですが、表示は氏名を利用したいと思っています。 こういった場合はどうテーブル設計したらいいでしょうか、 または皆様はどういうテーブル設計にしているでしょうか。 私は以下の2案しか思いつきませんでしたが、 もっとスマートな方法、または実際にどうしている、 どうすべきなどありましたら、ご教授、ご意見ください。 よろしくお願いいたします。 案a.稟議書テーブルに各項目の社員IDフィールドを作り、 表示時は、必要数分の社員マスターテーブルを別名で結合する →リレーションとしてあまり正しくない? 処理が重くなる? 案b.稟議書テーブルに各項目分の社員IDフィールドと 社員氏名フィールドも作る →冗長である? 整合性が問題?

  • データベースの設計について

    朝からデータベースの設計について悩んでいます。 テーブルにしたいデータがあるのですが、 それぞれカテゴリーが違うデータがあります。 構造的には少ししか違わないのですが、 これらのデータを1つのテーブルとしてまとめるか、 それとも、それぞれ1つずつのテーブルにするか迷っています。 迷っている理由として: ・同時にアクセスがあった場合、全て一つのテーブルにまとめていると、障害がないか? ・全てを1つのテーブルにすると、多少は構造が違うので、必要のないフィールドが出てしまう。 それぞれを1つのテーブルで分割するということも考えたのですが、 例えば、全てのデータからある特定のデータの検索をかける場合に 不都合なのではないか?と考えてしまいます。 こういう場合には: select * from table_A where field="検索したいデータ"; select * from table_B where field="検索したいデータ"; select * from table_C where field="検索したいデータ"; とテーブルの分だけSQLを実行するしかないのでしょうか? どちらを選択しても、それぞれ一長一短のようで、混乱しています。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 解雇予告後の出勤簿

    8月1日に社員に解雇予告をしました。 新規のプロジェクトに対し、本人の能力が適応しなかった為です。 翌日から社員は出社していません。 離職日は8月31日になり、給料は8月分は満額支給します。 そこで相談なのですが、出勤簿は8月2日以降はどのように 記入すべきでしょうか? 出勤していたことにするのか、有給扱いにするのか、それとも 自宅待機と記入するのか、教えてください。 また、この出勤簿を持ってハローワークへ行くのですが、 書き方によって何か問題になることはありますか?

  • 良くある風俗の出勤管理のシステムを作ってるのですが、

    良くある風俗の出勤管理のシステムを作ってるのですが、 【管理画面でやりたい事】 ・管理画面でアクセスした日から一週間分の出勤予定データを登録できる。 【表示ページ】 ・日付ごとに出勤予定の女の子の写真と名前表示 【現在の状況】 ・table「girlsprof」で女の子のID、名前、プロフを管理。 【質問】 出勤予定を管理できるよう、table「schedule」を作って管理しようと思ったのですが このtableにはどのようなカラムをもたせればよいですか? 例1:6/1 6/2 6/3 6/4と月日を全部カラム(366カラム+女の子のIDカラム)にしておき、管理画面ではプログラムでその日から一週間分を 取得し、それぞれの日付と一致するカラムを更新。ってやらないとだめなのか? 例2:1~31までをカラムとする。しかしこれだと、30日に管理画面をひらいたときは本来なら30日~翌月の5日までの 予定を登録できなきゃいけないのに、その月の日数(2月は28日までしかない)とかによっても、狂ってきてしまいます。 これはどうやれば解決できますでしょうか?

    • 締切済み
    • PHP
  • エクセル dmina関数 条件指定

    えてください。 a b c d e g 1 社員コード  出社時刻  退社時刻  売上       社員コード 2 101   7:00 13:00 5000       101 3 102   9:00 14:00 2000       社員コード 4 103  10:00 16:00 5500       102 5 101  17:00 19:00 2000        ・    ・    ・      ・     ・          一日の社員の出社退社時刻と売上金額の表です 社員は100人ほどいます。 一日に2回出勤する社員もいるので、 一日に2回出勤する社員は、出社時刻の早い時刻と退社の遅い時間を数式で 求めたいと思います。 社員101の出社時刻=dmin(a1:e5,e2,d1:d2)で求めたのですが、 社員102の出社時刻を求める時上の数式をコピーすると、条件セルが(d2:d3) となってしまいます。 条件指定を(d1:d2) (d3:d4) (d5:d6)とコピーしたい場合何かいい方法がありますか?      一行ずつセルを変えていくのは社員が100人ほどなので大変です。      教えてください。

  • 休日出勤について

    私は現在特定派遣会社の社員としてA社へ外勤している者です。そこでご質問なんですが、私どもの会社では月1回全体出社というものがあります。これは全社員対象で毎月ある土曜日に割り当てられており、時間帯としては午後1時から午後5時までとなり通常その日出勤日扱いとなります。私はたまたまこの日は客先の仕事が忙しいためA社から出勤してくれないですか?と言われたので出勤をしました。時間は8時から5時と平日の定時時間帯と同じ様に仕事を行ったのですが、後日給与明細を見るとこの日の分が全く含まれておりませんでした。そこで会社へ確認したところ、この日は全体出社日なので定時時間帯に出ても普通の出勤扱いとなる為付かないんですよと言われました。結局会社としては私がこの日働いた時間分はA社へ請求するので当然売り上げが発生しますが全体出社で出た場合は売り上げが発生しないのになぜ同じ扱いなのかがよくわからないのですが、皆さんはどう思われますでしょうか?