![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
アクセスのテーブルを分ける理由に関して質問です。
現在参考書を利用してデータベースの勉強をしてます。
試行錯誤中で弱っています。
受注テーブル(受注コード、受注日、締切日、出荷日、顧客コード)
受注明細テーブル(受注コード、商品コード、数量)
とテーブルが分かれている例題がありました。
テーブルを2つに分ける理由がよくわかりません。
もし1つのテーブル
(受注コード、受注日、締切日、出荷日、顧客コード、商品コード、数量)
などとまとめたら何か問題があるのでしょうか?
どうぞよろしくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
補足)
システムの核となるテーブルは分ける
受注テーブル(受注コード、受注日、締切日、出荷日、顧客コード)
受注明細テーブル(受注コード、商品コード、数量)
入力用の1次的なテーブルは1つにする。
(受注コード、受注日、締切日、出荷日、顧客コード、商品コード、数量)
という使い方はあります。
更新に必要な情報は1テーブルに格納し、個々のテーブルへはこの情報から更新させる。
別々で
更新用受注テーブル(受注コード、受注日、締切日、出荷日、顧客コード)
を入力した2日後に
更新用受注明細テーブル(受注コード、商品コード、数量)
を入力とすると同期がとれませんので
(受注コード、受注日、締切日、出荷日、顧客コード、商品コード、数量)
を一度に入力させるという意味です。
基本的には無駄のないよう正規化します。
テーブルというものなんでもかんでも分けるかというとそうでもないです。
用途によって、どういう構造にするかは変わります。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_05.png?5a7ff87)
No.4
- 回答日時:
顧客コードという項目があるので、顧客情報が入るテーブルがあると思いますが、いかがでしょうか?
あるとしたら…どうして顧客情報を別テーブルに入れるのか。
受注ごとに顧客の名前や住所、電話番号を受注テーブルとかに入れるのは、入力者も、また処理的にも負担がありますよね。
でも顧客コードで紐付けられれば、入力者も処理的にも楽ですよね。
#2さんとかぶりますが、要するに「また住所を入力するのかョ…」といった面倒くささが解消されますよね、入力者も処理的にも。
また顧客コードで紐付けられれば、顧客の名前や住所を受注テーブルに入れる必要がないので、
データ量のエコにも。
No.3
- 回答日時:
実業務に就くと分かるのですが、よくあるパターンは
一つの受注で複数の製品を出荷するというものです。
例えば、プリンタの注文を貰ったとして、予備のインクや
用紙も一緒に注文されることはよくありますね。
この場合は注文:明細が1:nになります。質問者さんの
設計だと、一つの注文で一つの商品しか管理できません。
しかし、受注本体と明細を分け、受注コードで紐付けする
ことにより、1:nが実現できるのです。
実務というほどまだ勉強できていませんでしたので、
わかりやすい例をありがとうございます。
一つのテーブルでは色々制限や面倒が生じることがわかりました。
ありがとうございます!
No.2
- 回答日時:
簡単に言うと、分けた方が楽で便利だからです。
例の場合、1つのテーブルだと、
商品1つごとに、受注コード、受注日、締切日、出荷日等を入力しないといけませんが、
分けておけば、
受注コード、受注日、締切日、出荷日、顧客コード
は商品ごとに入力する必要がありません。
簡単なフォームを作って、
サブフォームを受注明細にしてみれば
実務的に良く分かると思います。
早々の回答をありがとうございます。
利便性を考えて作られていたのですね。
まだまだ実績が足らないのがよくわかりました。
ありがとうございます。
No.1
- 回答日時:
リレーショナルデータベース理論を勉強してください。
そうやってテーブルを分けたりすることを正規化と呼びます。
正規化について、ここで説明するには、無理があります。
ちなみに、上記の例ではなぜダメか。
ひとつの注文に対して複数商品があったとします。
テーブルをひとつにしていたとします。
出荷日を更新するときは、さて、どうなりますか?
そうそうのご返答ありがとうございます。
リレーショナルデータベース理論の勉強もしてみます!
正規化という言葉も参考書に出てきていましたが、それに関してももう少し勉強が必要なようです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) accessについて 2 2022/05/31 16:58
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
アクセスVBAのMe!と[ ]
Access(アクセス)
-
選択クエリで空欄のテーブルがあっても表示したい
Access(アクセス)
-
アクセスのフォームの幅の最大値はいくつでしょうか?
Access(アクセス)
-
-
4
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
5
アクセスでテーブル入力用のフォームを他のテーブルのレコードを参照しながら入力するには
Access(アクセス)
-
6
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
7
レコードを保存するコード アクセスvba
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Accessクエリ】存在しないデ...
-
アクセスのテーブルを分ける理...
-
ACCESS VBA クエリを開く
-
フィールド名が取得したい
-
Accessの帳票フォームで重複デ...
-
正規形の定義
-
SQL文でのDISTINCT
-
SQL EXISTS演算子について
-
usingの意味がわからないのですが
-
あるフィールドの最大値を条件...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Accessでコードを入れると名前...
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルの値をテキス...
-
変数が選択リストにありません
-
Access テキスト型に対する指定...
-
「直需」の意味を教えてください
-
異なるサーバのDBデータ同士を...
-
3つの表を1つに縦に連結する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでのフォームの連携について
-
accessでの請求管理について
-
あるフィールドの最大値を条件...
-
MS ACCESS 商品価格変更時の該...
-
Access2021 「ISNULL関数には引...
-
Accessフォーム全レコードをPDF...
-
usingの意味がわからないのですが
-
アクセスのテーブルを分ける理...
-
Accessの帳票フォームで重複デ...
-
ACCESS VBA クエリを開く
-
集計結果を別テーブルに更新ク...
-
Accessについて(DLOOKUP関数、...
-
SQL EXISTS演算子について
-
accessについて
-
曜日を表す項目
-
Accessでクエリの作成、多対1対...
-
フィールド名が取得したい
-
SQL文でのDISTINCT
-
SQL Server 2005 Expressで営業...
-
SQLで合計表示
おすすめ情報