• ベストアンサー

ACCESS テーブル間のデータリンク

こんにちは。 ほぼアクセス初心者です。 大学の頃に習った記憶といくつか購入した本を頼りに、実家の会社の仕入や在庫の管理データベースを作ろうとしています。 とりあえず商品データや仕入先データをテーブルにまとめました。 次にしたいのが年度末の棚卸の数量を入力しておくテーブルの作成です。 そこで先に作った商品データを元に棚卸入力用のテーブルを作ろうとしているのですが、テーブルのコピーくらいしかわかりません。 商品の種類が約1000種類前後あるんですが、先に作ったデータが完全なものではないこともあり、テーブルのコピーをした後にデータの入れ忘れや入れ間違いの訂正をする必要もあると思います。 そこで商品データで更新した情報を棚卸入力用のほうでも自動で更新するようにしたいのですが、何かいい方法があるのでしょうか? 過去の質問も探してみたのですが、専門用語はイマイチわかりませんでした。 ちなみに商品データと棚卸入力用のテーブルは次のようなフィールドで構成しています。 商品データ ・種別名 ・メーカー名 ・個別ナンバー(種別ごとに1~999を割り当ててます) ・商品名 ・備考 棚卸入力用 ・商品名 ・備考 ・事務所在庫数 ・車A在庫数 ・車B在庫数 どなたか宜しくお願いします。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.2

ウーン。 図書館で販売管理ソフトの設計と構築に関する解説書を探す必要があると思います。 それは、さておき、目の前のテーブル設計を私流に修正してみます。 ただ、私は、プロのプログラマではなく一介のデザイナーですので参考程度にして下さい。 <商品マスター> ID・・・・・・・・・・・長整数。一意に商品を管理する主キー。 機種名_ID・・・・整数。テーブル<機種名一覧>よりリストを作成する。 仕入先_ID・・・・長整数。テーブル<仕入先マスター>とリンク。 商品名・・・・・・・Char(32) 検索スペル・・・Char(32) 備考・・・・・・・・・Char(32) <棚卸集計一時テーブル> 商品マスター_ID・・・・長整数。テーブル<商品マスター>とリンク。 事務所在庫数・・・・・・倍精度 Or 長整数 Or 整数。 車A在庫数・・・・・・・・倍精度 Or 長整数 Or 整数。 車B在庫数・・・・・・・・倍精度 Or 長整数 Or 整数。 備考・・・・・・・・・・・・・・Char(32) [種別名][メーカー名][商品名]という列を、[OOOO_ID] と他テーブルのリンク情報列に置き換えただけです。 これですと、[種別名][メーカー名][商品名]は、一つのテーブルだけで管理できます。 なお、[個別ナンバー]列は、Access の検索機能を活かすことを考えて[検索スペル]列にしています。 ところで、<商品マスター>と<棚卸集計一時テーブル>との主キー列が一致していますね。 これは、無理に両者を別々に管理する理由が強く無いことを意味しています。 棚卸の都度に<棚卸集計一時テーブル>を全レコードを削除し再集計しないと、この分離は意味ないです。 とすれば、テーブル<入出庫伝票><仕入伝票>が必要なことになりますね。 そういう発展方向を展望する限りでは、分離もありでしょう。 <商品マスター>が10万レコードで<棚卸集計一時テーブル>が1000レコードもありえますので・・・。 とりあえず、こんな回答です。

kobutoriman085
質問者

お礼

教えて頂いたことを参考にいろいろ試してみました。 なんとなく先が見えてきた気がします。 ありがとうございました。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

データベースの大原則は「データは一箇所で管理する」です >商品データを元に棚卸入力用のテーブルを作ろうとしているのですが こんなことをしてはいけません >先に作ったデータが完全なものではないこともあり、 なら、そのテーブルを完全なものにするべきです 商品データのようなテーブルがあるのなら、棚卸入力用テーブルは 棚卸入力用 ・場所 ・個別ナンバー ・在庫数 のようにします (商品データとは個別ナンバーでリレーションシップを設定します) (商品データのほうでも個別ナンバーを主キーにしてください) 場所というところには、事務所、車A、車Bがデータとして入ります 以上に書いたことが分かるまで本で復習してくださいね 仕入や在庫はデータベースとしてはかなりレベルの高いものになります 簡単じゃないですよ

kobutoriman085
質問者

お礼

>データベースの大原則は「データは一箇所で管理する」です なるほど、根本から理解してなかったようです。 もうちょっと勉強しないといけませんね。 ありがとうございました。

関連するQ&A