
アクセスのテーブルを分ける理由に関して質問です。
現在参考書を利用してデータベースの勉強をしてます。
試行錯誤中で弱っています。
受注テーブル(受注コード、受注日、締切日、出荷日、顧客コード)
受注明細テーブル(受注コード、商品コード、数量)
とテーブルが分かれている例題がありました。
テーブルを2つに分ける理由がよくわかりません。
もし1つのテーブル
(受注コード、受注日、締切日、出荷日、顧客コード、商品コード、数量)
などとまとめたら何か問題があるのでしょうか?
どうぞよろしくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
補足)
システムの核となるテーブルは分ける
受注テーブル(受注コード、受注日、締切日、出荷日、顧客コード)
受注明細テーブル(受注コード、商品コード、数量)
入力用の1次的なテーブルは1つにする。
(受注コード、受注日、締切日、出荷日、顧客コード、商品コード、数量)
という使い方はあります。
更新に必要な情報は1テーブルに格納し、個々のテーブルへはこの情報から更新させる。
別々で
更新用受注テーブル(受注コード、受注日、締切日、出荷日、顧客コード)
を入力した2日後に
更新用受注明細テーブル(受注コード、商品コード、数量)
を入力とすると同期がとれませんので
(受注コード、受注日、締切日、出荷日、顧客コード、商品コード、数量)
を一度に入力させるという意味です。
基本的には無駄のないよう正規化します。
テーブルというものなんでもかんでも分けるかというとそうでもないです。
用途によって、どういう構造にするかは変わります。

No.4
- 回答日時:
顧客コードという項目があるので、顧客情報が入るテーブルがあると思いますが、いかがでしょうか?
あるとしたら…どうして顧客情報を別テーブルに入れるのか。
受注ごとに顧客の名前や住所、電話番号を受注テーブルとかに入れるのは、入力者も、また処理的にも負担がありますよね。
でも顧客コードで紐付けられれば、入力者も処理的にも楽ですよね。
#2さんとかぶりますが、要するに「また住所を入力するのかョ…」といった面倒くささが解消されますよね、入力者も処理的にも。
また顧客コードで紐付けられれば、顧客の名前や住所を受注テーブルに入れる必要がないので、
データ量のエコにも。
No.3
- 回答日時:
実業務に就くと分かるのですが、よくあるパターンは
一つの受注で複数の製品を出荷するというものです。
例えば、プリンタの注文を貰ったとして、予備のインクや
用紙も一緒に注文されることはよくありますね。
この場合は注文:明細が1:nになります。質問者さんの
設計だと、一つの注文で一つの商品しか管理できません。
しかし、受注本体と明細を分け、受注コードで紐付けする
ことにより、1:nが実現できるのです。
実務というほどまだ勉強できていませんでしたので、
わかりやすい例をありがとうございます。
一つのテーブルでは色々制限や面倒が生じることがわかりました。
ありがとうございます!
No.2
- 回答日時:
簡単に言うと、分けた方が楽で便利だからです。
例の場合、1つのテーブルだと、
商品1つごとに、受注コード、受注日、締切日、出荷日等を入力しないといけませんが、
分けておけば、
受注コード、受注日、締切日、出荷日、顧客コード
は商品ごとに入力する必要がありません。
簡単なフォームを作って、
サブフォームを受注明細にしてみれば
実務的に良く分かると思います。
早々の回答をありがとうございます。
利便性を考えて作られていたのですね。
まだまだ実績が足らないのがよくわかりました。
ありがとうございます。
No.1
- 回答日時:
リレーショナルデータベース理論を勉強してください。
そうやってテーブルを分けたりすることを正規化と呼びます。
正規化について、ここで説明するには、無理があります。
ちなみに、上記の例ではなぜダメか。
ひとつの注文に対して複数商品があったとします。
テーブルをひとつにしていたとします。
出荷日を更新するときは、さて、どうなりますか?
そうそうのご返答ありがとうございます。
リレーショナルデータベース理論の勉強もしてみます!
正規化という言葉も参考書に出てきていましたが、それに関してももう少し勉強が必要なようです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Access サブフォームでの選択行の取得
その他(データベース)
-
Access 同じデータをたくさんのレコード(同一列)に一度に入力するには
Access(アクセス)
-
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
-
4
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
5
Accessでのテーブルの分け方
Access(アクセス)
-
6
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
7
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
8
AccessでIDを入力したら他の項目も自動で表示
Access(アクセス)
-
9
主キーはオートナンバー型のIDを使った方が良いのか
Access(アクセス)
-
10
access マクロでのフィルタの解除の方法
Access(アクセス)
-
11
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
12
ACCESS VBA でのエラー解決の根拠がわかりません エラー「イベントプロパティに指定した式・・
Access(アクセス)
-
13
データベースの2GBって・・・?
その他(データベース)
-
14
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
15
サブフォームの切り替え方を教えてください
その他(データベース)
-
16
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
17
Accessのフィールド数が255しかない=業務では使えない?
PowerPoint(パワーポイント)
-
18
Accessで、固定アルファベット+オートナンバーを表示する
Excel(エクセル)
-
19
Accessのフォームで、空欄のレコードを検索したい。
その他(データベース)
-
20
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのテーブルを分ける理...
-
Accessの帳票フォームで重複デ...
-
Access2021 「ISNULL関数には引...
-
あるフィールドの最大値を条件...
-
Accessでクエリの作成、多対1対...
-
受注明細テーブルについて
-
MS ACCESS 商品価格変更時の該...
-
Excel 2019 のピボットテーブル...
-
Accessでテーブル名やクエリ名...
-
「直需」の意味を教えてください
-
Access テキスト型に対する指定...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
エクセルグラフの凡例スペース
-
FROM の中で CASE を使えるでし...
-
Accessでテーブルからテーブル...
-
セルの右クリックで出る項目を...
-
異なるサーバのDBデータ同士を...
-
Oracleのビュー作成時に「指定...
-
【Access】フォームで自動計算...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessの帳票フォームで重複デ...
-
Accessフォーム全レコードをPDF...
-
あるフィールドの最大値を条件...
-
MS ACCESS 商品価格変更時の該...
-
アクセスのテーブルを分ける理...
-
ACCESS VBA クエリを開く
-
Accessでクエリの作成、多対1対...
-
Excelで重複する情報に番号を付...
-
【Access2000】マシンIDの取得方法
-
フィールド名が取得したい
-
再計算って出来ますか?
-
受注明細テーブルについて
-
SQL文でのDISTINCT
-
accessについて
-
Access2021 「ISNULL関数には引...
-
usingの意味がわからないのですが
-
曜日を表す項目
-
集計結果を別テーブルに更新ク...
-
SQL Server 2005 Expressで営業...
-
【Accessクエリ】存在しないデ...
おすすめ情報