Access (一般機能)

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

 
(Windows 10全般 : Microsoft 365)
テーブルの構造
投稿日時: 23/09/07 00:15:34
投稿者: pleco_mon

例えば、下のようなテーブルがあります。
 
■[品名マスタ]テーブル
|品名ID  | 品名  | 品名コード  | 発注先ID  |
| -------- | ------- | ------------- | ----------- |
| 1   | A    |        | 1     |
| 2   | B    |        | 1     |
| 3   | C    | JP123    | 2     |
| 4   | D    |        | 2     |
| 5   | E    |        | 3     |
 
このとき、品名コードは、すべての品名に存在するわけではないとします。
このように、空白データが多くなってしまうようなテーブルは分割したほうが良いのでしょうか?
現在50列くらいのテーブルがあり、Nullのセルがだいぶ増えてきてしまいました。
 
例えば、
 
■[品名マスタ]テーブル
|品名ID  | 品名  | 発注先ID  |
| -------- | ------- | ----------- |
| 1   | A    | 1     |
| 2   | B    | 1     |
| 3   | C    | 2     |
| 4   | D    | 2     |
| 5   | E    | 3     |
 
と、
 
■[品名コードマスタ]テーブル
|品名コードID  | 品名ID  | 品名コード  |
| -------------- | --------- | ------------- |
| 1      | 3     | JP123    |
 
の2つにわけて、[品名コードマスタ]テーブルには、品名コードが必要なものだけ、
登録するような形にして、品名IDで1対1で結んでみたのですが、
思ったような動きをしてくれませんでした。
・[品名コードマスタ]テーブルの行を削除すると、[品名マスタ]テーブルのデータも削除されてしまう
・[品名コードマスタ]テーブルでは、品名が表示できて、必要な品名のみ登録/削除できるようにしたい。
 
このような場合、どのようにテーブルを作成するのが良いのでしょうか。
ご教授いただければ幸いです。
よろしくお願いします。

回答
投稿日時: 23/09/07 10:52:24
投稿者: sk

引用:
このとき、品名コードは、すべての品名に存在するわけではないとします。
このように、空白データが多くなってしまうようなテーブルは分割したほうが良いのでしょうか?

・その業務、およびシステム上における[品名コード]の役割とは何なのか。
 
・[品名ID]と[品名コード]の違いとは何なのか。
 
・[品名マスタ]に[発注先ID]を定義しているのは何のためか。
 
まず以上の点について具体的に明記されることをお奨めします。

投稿日時: 23/09/07 11:41:56
投稿者: pleco_mon

sk様
 
回答ありがとうございます。
 
例えにあまり意味はなかったのですが、
例えば、「品名」ごとに、
「製造番号」、「納品までにかかる日数」、「注意メッセージ」などなど、
すべての品名に登録できるデータがあるわけではないのに、
フィールドを増やしていったとき、
どのようなテーブル構造にするのが良いのかという質問だったのですが、
きっと、データの内容によっていろいろやり方は異なるということなのですよね。
 
ありがとうございました。