• ベストアンサー

データベース設計の基本を教えて下さい

従業員の出勤簿をデータベース(access)に保存しています。現状は数年前から分をそのままにしてどんどん追加しています。月ごとのクロス集計をするときなどは、年度分だけでないと、対応できません。(私の知識では) このような場合、一般的には(?)テーブルは年度ごとに更新(分離)するのがいいのでしょうか。 それとも、年度をまとめるクエリを作成して、それに対して月ごとのクロス集計をするのがよいものですか。 それとも別の方法? #「常識」を教えて下さい。 (^^;

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

  • ベストアンサー
  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.1

年度が異なる、というのは別種のリレーションではないので、 論理的には年度によってテーブルを分割するのは好ましくありません。 クロス集計の際に対象となる年度を指定したい場合には、 WHERE句に日付に関するBETWEEN条件をANDで足せば良いですので、特にテーブルを分ける必要も、クエリを分ける必要もありません。 但し、データ件数が多い場合には、同時には処理対象とならないデータを分割する、というのはパフォーマンスの観点からは良策だと思います。

s-holmes
質問者

お礼

回答ありがとうございました。 >WHERE句に日付に関するBETWEEN条件をANDで足せば良いですので あ、そうか。クロス集計をウイザードで作成しているもので、自分のささやかな知識と統合されていませんでした。 #それほどデータが多いわけではないので、この方式で処理させていただきます。 #ウイザードだよりからの脱出をめざします。 (^^;

関連するQ&A

  • ACCESS 更新クエリについて

    更新クエリで更新したいのですが、クロス集計クエリの数値を元にテーブルを更新することは出来ないようで、困っています。 なぜそのようなことをしているかと申しますと、 商品品目_個数_コード(主キー) のようにフィールドを持っているのですが、 印刷に関しては品目ごとに印刷したい、ということで 一度クロス集計クエリ(TRANSFORM)で りんご_ばなな_ぶどう_コード(主キー) 数値_数値_数値_数値 のような並びにして、テーブル作成クエリでテーブルを作成し そのテーブルをレポートに使用しています。 数値などが変わった場合その作成したテーブルの数値を 作成元になったクロス集計クエリで更新したいのですが、出来なくて困っています。 テーブル作成クエリで上書きすると、古いデータが消えてしまうため 何か良い方法はないかと思っています。 回答のほどお願いします。

  • クロス集計クエリの結果を一時テーブルに保存する 

    タイトルのような操作を求め下記のようなやり方を発見したのですが、なぜこのような2種類のクエリを作成しなければならないのかがわかりません。 2つのクエリの意味・役割をご存知の方がいらっしゃったら教えて下さい。 宜しくお願いします。 Q あるテーブルからクロス集計クエリを作成し、そのままそのクエリをテーブル作成クエリにしたところ、クロス集計が解除されてしまいます。クロス集計の結果をテーブルに保存することはできないのでしょうか A クロス集計クエリを作成して、そのままそのクエリをテーブル作成クエリにすることはできないようです。 その場合は、クエリを2つ作成し2段階でテーブルを作成するようにします。 1つめのクエリではテーブルなどを基にしてクロス集計を行います。 2つめのクエリでは1つめのクエリを「テーブルの表示」一覧から「クエリ」タブに切り替えて選択してテーブル作成クエリとします。 参照:http://www.nbcom.co.jp/PC-Support/FAQ/acc/ht/acc092004ht001.shtml

  • データベース設計のこと

    最終的に下記のような表示をしたいのですが、どのような組立てをしたらよいか迷ってます。(素人なりに) 従業員データベースです。 本社、各支社異動があり、その履歴を表示したいのです。      2000    2001      2002 山本太郎 本社4月~ 名古屋支社10月~ 同 と従業員を同じ行で複数年を表示したい。 テーブルは      区分 転入年月日 転出年月日 山本太郎 本社 2000/04/01 2001/03/31 山本太郎 名古屋支社 2001/10/01 のような内容となっています。これは変更せずに。 #よくありそうな表のような気がするのですが、 #access2000です。 #「考え方」(ロジックというの?)のアドバイスを。

  • Accessクロス集計クエリで詳細を表示できる?

    ピボットテーブルでは「値」の詳細表示ができますが、クロス集計クエリで詳細表示は可能でしょうか? 具体的には テーブル クライアントID   来店日 0001_________________2013/1/1 0001_________________2013/2/3 0001_________________2013/3/1 0002_________________2013/3/5 0002_________________2013/3/7 0003_________________2013/2/5 0003_________________2013/3/10 クエリで来店年、来店月、来店日それぞれに表示指定 求めるクロス集計結果 _______________1月________2月__________3月 0001__________1____________3_____________1 0002_______________________________________5 _____________________________________________7 0003________________________5___________10 こんな感じです。 内部の運用ルール上VBAは使えません 出来る限りAccessでレポート印刷したいのです。 ピボットでの印刷はすでに行っていますが、改ページ位置などで不満が残ります。 出来ないのであれば、出来ないで上司にはあきらめてもらいます。 (無駄な時間をとらなくてすみますし・・・) 二重、三重のクエリやら、関数やら、追加・更新クエリやら試してみましたが、アイディア切れです。 どうか助けてください。 よろしくお願いいたします。

  • アクセス クロス集計クエリ→テーブル作成クエリ

    クロス集計クエリは、 そのままテーブル作成クエリを使って クロス集計クエリのままテーブルにすることはできないのでしょうか? クロス集計クエリの時は、行見出し・列見出しがあるのに、 そのままテーブルにはなりません。

  • アクセスでデータベースを作っているのですが

    いつもお世話になります。 とっても基本的なことですが、データベースのテーブルの中のAとBとCのフィールドを集計してDのフィールドに記入したいのです。  A+B+Cという式を入れた選択クエリを作ってその集計をDに返すようにしたのですが、A,B,Cとも数値が入っていないと空白になります。テーブルの規定値には 0が入っているのでいいと思うのですが(汗) 多分ホントに簡単なことかと思うのですが、判りません(泣) よろしくお願いいたします。

  • SQLクエリでデータベースが壊れる?

    AccessアプリでSQL Serverデータベースを更新しています。 データベースをODBCデータソースとして登録して、AccessdeそのODBCデータソースへのリンクテーブルを作っています。 データベースが何回か壊れたのですが、AccessVBAから発行したリンクテーブルへのSQLクエリでデータベースが壊れるようなことはあるんでしょうか? あるとしたら、そのクエリを発行すると必ず壊れると思うんですが・・・。 同じAccessアプリを使っても、データベースが壊れない環境もありますし・・・。 データベースが壊れた原因がわからなくて困っています。 Windows 7、SQL Server 2008 R2 Express です。

  • Access データベースウィンドウが上に行き過ぎて見えなくなってしまいました

    AccessでDBを作っています。 おそらくデータベースウィンドウの位置ドラッグしてしまい、 データベースウィンドウが上に行き過ぎて見えなくなってしまいました。 (現状だと、「テーブル」「クエリ」のあたりがまったく見えません。) 直し方をご存知の方がいらっしゃったら教えてください。

  • テーブル作成クエリとデータベースの分割

    当方、Accessは全くの素人ですが、急遽Accessにて連絡先台帳を 作ることとなりました。 参考書を片手に、なんとかそれ相応のものになってきましたが、 表題部分にて四苦八苦しております。 どうぞ、ご教授のほどよろしくお願いします。 まず、連絡先テーブルを作成しました。 この中には個人名、会社名、住所などを入力するようにしました。 会社名の中には複数のレコードがあるため、個人向けではなく、会社向けの 送付用のラベルを作成したいと思い、テーブル作成クエリを用いて 会社テーブルを作成しました。 上記テーブルから、ラベル作成までは何とかできるようになりましたが、 複数のユーザーがこのデータベースを使うため、データベースの分割をし 運用したいのです。 また、この会社テーブルを別のデータベースでも使用したいと思っております。 ツールを用いて、データベースの分割はできましたが、新たな連絡先が 追加されたときなど、再度テーブル作成クエリを実行してしまうと、リンクが 外れてしまいます。 外部データからリンクテーブルを作りなおすと、以前のデータのままなので、 分割したデータベースを更新しなければならないことはわかりましたが、 その方法が全くわかりません。 できれば、更新ボタンを押した際に、 テーブル作成クエリを起動して、テーブルを作成し、分割したデータベースを 更新させたいのですが、何か良い方法はございませんでしょうか? 他の方法でも全く問題ありません。 VBAやマクロでも構いません。 ただ、VBAもマクロも殆どわかりませんので、できればコード等を記載して いただけると助かります。 Access2007を用いております。 どうぞよろしくお願いします。

  • Accessの集計クエリで計算

    Microsoft Access2016において、クロス集計クエリに表示される数値を使って計算をするには、どこにどんな数式を入力すれば良いですか。テーブルに表示される数値ではなく、クロス集計クエリで計算された合計の値を使 います