Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7全般 : Access 2013)
テーブル構成とリレーションシップについて
投稿日時: 18/04/05 15:43:11
投稿者: saitooffice

仕入先の台帳を、Accessで整備しようと思っています。
現状のExcelはこうなっております。
--------------------------------------------------------
行   取引CD  会社名  代表者   住所   振込先
1    1001    A社   Fさん   東京   みずほ
2    1002    A社   Fさん   東京   住友
3    1001    A社   Fさん   千葉  (空欄)
 
4    2001    B社    Gさん  埼玉   ゆうちょ
5    2001    B社    Gさん  埼玉  (空欄)
 
6   (空欄)   C社    Hさん  千葉  (空欄)
--------------------------------------------------------
1、2、3の会社名と代表者は同じ。
1、3の振込先は同じなので取引CDは同じだが、住所が異なる。
1、2は住所は同じだが、振込先が異なるので、取引CDが異なる。
 
4、5は振込先は同じなので、取引CDは同じだが、住所に含まれる
建物の階数が異なるので、5を削除はできない。
 
6は取引しそうな会社だから、とりあえずは登録しておき、実際に
取引が開始したら、取引CDと振込先を登録する。
 
--------------------------------------------------------
★基本テーブル
基本ID(オートナンバー)、会社名、代表者
 
★住所テーブル
住所ID(オートナンバー)、住所
 
★振込先テーブル
取引CD、振込先
 
★まとめテーブル
仕入ID(オートナンバー)、基本ID、住所ID、取引CD
--------------------------------------------------------
上記のようなテーブルを考えたのですが、各テーブルをリレーションで
繋げるときは、まとめテーブル?のようなテーブルを作成すれば
良いのでしょうか?
 
それとも、各テーブルに他2つのテーブルのキー列を設ける?
(住所テーブルに基本IDの列を追加するなど)
 
一般的なやり方、考え方についてヒントをいただけますか?
よろしくお願いいたします。

回答
投稿日時: 18/04/05 16:14:44
投稿者: sk

引用:
取引CD

何に関する取引が、どのような流れで発生するのかが不明。
 
引用:
1、2、3の会社名と代表者は同じ。
1、3の振込先は同じなので取引CDは同じだが、住所が異なる

・ここでの住所が、何の住所を表しているかが不明。
 
引用:
4、5は振込先は同じなので、取引CDは同じだが、住所に含まれる
建物の階数が異なるので、5を削除はできない。

・同上。
 例えば「ある 1 つの企業(法人)の中にある複数の部署の
 それぞれを相手に何らかの取引を行なっている」のであれば、
 それぞれの部署は「同じ企業内の異なる取引相手」でしかなく、
 ここでの住所とは「企業」ではなく「部署(取引相手)」に属する情報である。
 
引用:
6は取引しそうな会社だから、とりあえずは登録しておき、

・各企業の情報は[企業マスタ]に当たるテーブルによって
 管理をすればよい。
 
引用:
実際に取引が開始したら、取引CDと振込先を登録する。

・取引案件ごとに振込先(口座情報)が異なるのならば、
 1 つの取引に対して 1 つの振込先を持たせればよい。
 
・取引相手(企業または企業内の部署)ごとに既定の振込先が
 決まっているなら、1 つの取引相手に対して 1 つの振込先を持たせればよい。
 
・上記の両方のケースが発生し得るならば、前者の振込先を設定する際に
 後者の振込先を初期値として参照する仕組みを作ればよい。
 
引用:
一般的なやり方、考え方についてヒントをいただけますか?

まずやるべきなのは業務分析。テーブルの設計はそれからです。

投稿日時: 18/04/06 09:33:24
投稿者: saitooffice

skさん
 
>まずやるべきなのは業務分析。テーブルの設計はそれからです。
 
とりあえずテーブルを作成すれば、何とかなるかな〜と
思っていましたが、考えが甘かったようです。
 
もう一度、じっくりと、何がやりたいのかを考察してみます。
回答ありがとうございました。