Accessでのデータ管理のベストな方法

このQ&Aのポイント
  • Accessでのデータ管理において、商品(洋服)のリレーションを活用した複数テーブルの上手な使い方を探しています。
  • 商品(名)は同じだけど、サイズの違いや価格の違いがある場合、1つのマスターテーブルで管理する方法について教えてください。
  • 特に洋服など、1つの商品名でサイズ違いがあり、サイズ別に定価も違う場合の最適なリレーションの活用方法について知りたいです。
回答を見る
  • ベストアンサー

Accessでのデータ管理

Access1日目の初心者です。 商品(洋服)のデータ管理をしようとしていますが、リレーションを活用した複数テーブルの上手な使い方を教えてほしいです。 今は、商品(名)は同じだけど、サイズの違い、価格が違う商品を1つのマスターテーブルで管理しようとしています。 例 - 商品マスターテーブル 商品ID|商品名|サイズ|定価 1S | スウェット | S | 1000 1M | スウェット | M | 1200 1L | スウェット | L |1400 1XL| スウェット | XL |1600 2S | パーカー | S | 1000 2M | パーカー | M | 1200 2L | パーカー | L |1400 2XL| パーカー | XL |1600 1商品で4列~もレコードを使うので、1つのテーブルのデータ量が増えてしまって、もっとうまく出来ないかと思い質問しました。 洋服など、1つの同一商品名でサイズ違いあり、サイズ別に定価も違う場合は、どのようにリレーション等を活用して、データ管理するのがベストなのでしょうか?

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

  • ベストアンサー
  • panacon
  • ベストアンサー率31% (214/679)
回答No.4

商品マスタは、商品IDと商品名、サイズと定価に法則性があるわけでもないでしょうから、正規化でこれ以上ちいさなテーブルにはならないと思います。これはこのまま使って良いと思います。この他に、顧客マスタと祝祭日マスタ、販売の積み上げ記録としてワークテーブル、天気の記録としてのワークテーブルがあると将来データが積み上げたときに、クエリで分析をすることができると思います。各テーブルには、下記のようにアイテムがあると良いと思います。 顧客マスタ 顧客ID|顧客名|連絡先|他 祝祭日マスタ 日付|祝祭日名 ワークテーブル(販売記録) 日付|曜日|時間|商品ID|顧客ID|販売価格|数量|小計|他 ワークテーブル天気と気温 日付|天気|最高気温

okwave00000000
質問者

お礼

分かりやすい回答、ありがとうございました。 このまま使ってよいとのことでスッキリしました。 天気と気温のデータを使っての分析、使ってみたいと思いました。

その他の回答 (5)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.6

回答No.4の追伸です。 商品テーブルと他のテーブル(例えば売上)とリレーションを組むためにユニークなフィールドを追加します。 ・商品  商品ID(テキスト型、重複なし)  商品種別ID(数値型、主キー、標題を商品名、商品種別をルックアップ設定)  サイズID(数値型、主キー、標題を、サイズをルックアップ設定)  登録日(日付/時刻型、既定値date())  更新日(日付/時刻型、既定値date())

okwave00000000
質問者

お礼

画像つきで分かりやすく回答いただき、ありがとうございました。m(_ _)m

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.5

重複登録を避けるため添付のように次の3つのテーブルで構成します。 ・商品種別  ID(オートナンバー型、主キー)  商品名(テキスト型、インデックスで重複なし)  フリガナ(テキスト型、商品名でフリガナ機能を使用) ・サイズ  ID(オートナンバー型、主キー)  サイズ(テキスト型、インデックスで重複なし) ・商品  商品種別ID(数値型、主キー、標題を商品名、商品種別をルックアップ設定)  サイズID(数値型、主キー、標題を、サイズをルックアップ設定)  登録日(日付/時刻型、既定値date())  更新日(日付/時刻型、既定値date())

noname#231195
noname#231195
回答No.3

そのままでいいです。 無理に別のテーブルを作る必要はないです。 もちろんこういう風に構成することはできます。 商品マスターテーブル 商品ID|定価 1S | 1000 1M | 1200 1L | 1400 1XL|1600 2S |1000 2M | 1200 2L | 1400 2XL| 1600 商品種別 種別ID|種別名 1| スウェット 2 | パーカー 商品IDの一桁目が商品の種類を表し、二桁目以降がサイズを表すようですから、商品マスターテーブルに商品名とサイズのデータは不要といえば不要です。 そういう風に最適化して、「リレーションを活用した」いというご希望に合わせるとすれば、上に示したように2つに分けることはできます。 でもこのようにすると商品の種別名やサイズを呼び出す時に、いちいち特別の仕掛けが必要になりますから、私ならやらないです。 商品種別が10種を超えたら商品IDの頭の部分がどうなるのか知りませんが、桁が増えるたびにデータベースを直さなければならないとかいうことになりかねませんしね。 それにMS-Accessのリレーションシップの機能なんか無理して使う必要ないんですよ。 連鎖更新だとか連鎖削除なんかのオプションを使った場合、思いもかけないテーブルでレコードが勝手に更新・削除されます。それでデータベースを丸ごとおじゃんにしたことがあります。連鎖更新・連鎖削除を使わないのなら、リレーションシップをわざわざ別に設定する必要がないです。 参照整合性のチェックはもっと鬱陶しいです。親のテーブルに当該レコードがなくても、子のテーブルにとりあえずレコードを入力したい場面はいくらでもあります。

okwave00000000
質問者

お礼

ありがとうございました。m(_ _)m

回答No.2

>Access1日目の初心者です。 それじゃー、活用するのは無理。 1、最初は、MZ-80KでのFortran演習からスタート。 2、次に、UNIXでC/Sシステムを開発。 3、そのついでにC言語もマスター。 4、Windowsが登場した際には、まずQuick Basicを習得。 5、その後、Access2.0に挑戦。 5ではAccessのヘルプ文を全て印刷し、全例文をテストすること3回。それに要した日数は一日5時間の6ヶ月。で、ようやくAccessシステムの開発の目途が立ちました。 UNIXでのC/Sシステム開発経験があったのでSQL文とかテーブル設計は問題なし。また、C言語とQuick Basicを習得していたのでVBAもOK。が、AccessにマッチしたAccess流のアプリケーションを開発する手法を確立するのに半年を要しました。 Access1日目の初心者では、まーだ無理じゃーないかな。

okwave00000000
質問者

補足

ありがとうございます。 サイズ違いの商品をどのように対応すればいいのかの考え方のヒントでも教えていただきたいです。 引き続きよろしくお願いいたします。

  • catpow
  • ベストアンサー率24% (620/2527)
回答No.1

>>Access1日目の初心者です。 >>今は、商品(名)は同じだけど、サイズの違い、価格が違う商品を1つのマスターテーブルで管理しようとしています。 >>洋服など、1つの同一商品名でサイズ違いあり、サイズ別に定価も違う場合は、どのようにリレーション等を活用して、データ管理するのがベストなのでしょうか? リレーショナルDBの機能を使って、質問者さんの希望するテーブル設計を行います。 このあたりは、わりと難しいので、書店でデータベース設計の本を購入して勉強する必要があります。 ここで答えるような分量の話ではありません。 また、作り始めると、いろいろと疑問点が出てくる可能性もあります。 なので、ご希望のシステムの開発期間は、短くて3か月とか半年以上かかることもありえますね。 がんばってください。

okwave00000000
質問者

補足

ありがとうございます。 入門本を一冊読みました。 引き続き今後も勉強していきますが、一冊読み終えたので、やりながら覚えようと思って、サイズ違いにどう対応させるかで躓いています。 例えば 商品マスターテーブル 商品ID|商品名|Sサイズ定価|Mサイズ定価|Lサイズ定価|XLサイズ定価| 1S | スウェット | 1000|1200|1400|1600 のようにフィールドで対応しようとすると、この商品マスターテーブルはスッキリしますが、これだと後々、リレーションした販売データを管理したいトランザクションテーブルで、どのサイズが売れたか分からなくなってしまいます。 サイズと価格を別のマスターテーブルで管理してリレーションを使っても、テーブルが無駄に増えるだけであまり意味がないと思いまして… 最初の質問の例のテーブルのように、商品名は同じでもサイズ違いのものは、サイズごとにレコードを作るのがベストでしょうか? 初歩的な質問かもしれませんが、他の方々も、引き続きよろしくお願いいたします。 質問の意図がわからない等ありましたら、補足追加していきます。

関連するQ&A

  • アクセスで在庫管理

    Access初心者ですが、在庫管理をアクセスでしたいと思います。Windowsでアクセス2003です。管理する商品の種類はそれほど沢山ないのですがサイズと色が沢山あります。商品マスターテーブルはこのようなテーブルです。サイズマスター、色マスターも 別途作りました。 商品ID 商品名 サイズ 色 ・・・・ 1   ABC   60A White 2 ABC 60A Black 3 ABC 70A WHite 4 ABC 70A Black ・ ・ このABCの商品以外にも他に7種類くらいの商品があり、それぞれに同じサイズ・色展開をしています。 ひとつのテーブルに全部まとめて7種類とも入れてしまえばよいのですが、他のサイズの在庫が増えた場合に追加しなくてはいけなく、一番下から追加して、テーブルを見たときにあまり綺麗ではありません。そこで商品マスターを7種類作って、新しいサイズ・色が加わった場合に各々の商品マスターに加えたいのです。この考え方は間違っていますか? さらに質問なのですが、レポートで出したい情報は「サイズ60Aは今いくつ在庫があるか?」です。7種類のテーブルからサイズ順に在庫がわかるようなレポートを出したいのですが、一つのテーブルからならやり方はわかるのですが、複数のテーブルからだとわかりません。 すみませんが、教えてください。自分でウェブ上のトレーニングなどを試みましたがギブアップです。宜しくお願い申し上げます。

  • Accessのフォームの並び替えを、特定の並び方に指定したい。

    商品管理データベースを作っているものです。 主なテーブルのフィールドは、商品名、サイズ、単価などです。 そこでですが、帳票フォームで一覧で見れるようにしてありますが、サイズの並び替え表示をしたいと思ってます。 基本的には、L,M,Sとありますが、普通に昇順ですと、L,M,Sですが、S,M,Lの順になるようにしたいです。 なにか設定があったと思うのですが、設定の仕方を忘れてしまいました。 よろしくお願い致します。

  • アクセス2003 クエリについて

    いつもお世話になっています。 商品管理用にデータを作っています。 商品マスターテーブルでIDや商品名と共に、わかる範囲で定価と過去の仕入値を入力しています。 クエリで<商品マスター>を下記のようにまとめた<参考仕入価格クエリ>を作りました。 商品ID…商品マスターより 商品名…商品マスターより 参考仕入価格…CCur(IIf([過去の仕入値]>0,[過去の仕入値],[定価]*0.6)) さらに<参考仕入価格クエリ>と<仕入記録クエリ>を使って<仕入価格クエリ>を作ろうとしています。 <仕入記録クエリ>は、<商品マスターテーブル>と<仕入記録テーブル>を組み合わせ、仕入れのなかった商品はNz関数で仕入額が0円になるようにしています。 <仕入価格クエリ>のデザインビューで参考仕入価格をフィールドに入れてみたところ、<参考仕入価格クエリ>では×0.6で表示された定価が、0.6かけない状態で表示されてしまいました。 この場合×0.6の状態で反映させるにはどうしたらよいのでしょうか? よろしくお願いします。

  • データシート上の計算について

    お世話になります。Access2002のフォームのデータシートでの計算についてご教授願います。 計算させる上での構成としましては、 1.マスターテーブルが存在し、そこにデータを格納する 2.マスターテーブルに格納するデータは別個に品目テーブルを参照して固有のIDのみをインプットさせてたい。 すなわち、品目テーブルの値(ID値、品目名、単価)が存在し、マスターテーブルに品目テーブルのIDのみを格納し、データシート上では個数を入力させると、自動的に計算させたいです。 <マスターテーブル>は、ID、M_ID、数量という構成をとり、品目テーブルは、M_ID、品目名、単価という構成をとり、M_IDでリレーションをとっています。 データシート上は、マスターテーブルのM_IDでコンボボックスをつくり、マスターテーブルのM_IDのコンボボックスは品目テーブルの品目と単価をデータで持っています。 データシート上での計算のしかたについてよろしくお願いいたします。 不明点がありましたら、補足いたします。

  • テーブルAの2つのフィールド内のデータを連結したい

    ファイルメーカー11 WINで、リレーション組んだ後、 元テーブルAの2つのフィールド内にあるデータを結合して、テーブルBの指定フィールドに表示させたいのです。 フィールドオプション>計算式の指定 からこんな感じに入力したのですがうまくいきません。 商品マスタ::商品名 & 商品マスタ::キャッチコピー1 (商品マスタ::商品名)部分が0か1になって入力されてしまいます。 演算子が違っているのでしょうが、&だけでは結合して表示できないのです。 お願いします。

  • アクセスでのデータ管理について(長文です。)

    アクセス初心者です。 これからデータの入力、管理、帳票をアクセスで構築しようと思っているのですが、アクセスはデータを入力した時点でデータが保存されてしまうので過去のデータが残りません。またデータの変更及び共有をうまくやりたいのですがよい方法がわかりません。 今回構築したいデータベースは、 1.過去の記録がすぐわかるようにしたい。(更新前のデータがわかるようにしたい。) 2.データの変更及び共有を簡略化したい。(A社で変更したデータをB社のデータベースにいれこみたい。) 【データベースの概略イメージ】  A社      B社 データベース1 データベース2(1と同じもの) テーブル1 → テーブル1 テーブル2 → テーブル2 テーブル3 → テーブル3 クエリ1    クエリ1 クエリ2    クエリ2 フォーム1   フォーム1 フォーム2   フォーム2 *リレーションあり *A社でテーブル1の内容を変更して、B社のテーブル1を新しいものに置き換えたい。 (本を読むとリレーションが崩れると書いてありました。) *B社で変更してA社に戻すこともある。 テーブル1 項目 ID 100 住所 あああ 氏名 △△様 電話番号 111-1111 *例えば、ID100のデータの氏名を変更するとき、変更前がどうだったかわかるようにしたい。(1月時点では△△様、2月時点では□□様とか) 誰かアクセスの操作方法に詳しい方がおられましたら、よい方法又はアクセスに関する詳しい本とかサイト等教えて下さい。よろしくお願いいたします。

  • アクセスで2つのコードから1つのデータを引き出したい

    アクセス2003で工程管理のデータベースを作っています。うまく説明できなくて申し訳ないのですが、ふたつのコードからひとつのデータを引き出したいのですが、どうしたらよいか分からないので、どなたか教えてください。 ○テーブル「部品マスタ」 部品番号 部品名 ○テーブル「工程マスタ」 工程番号 工程名 ○テーブル「受注マスタ」 受注番号 部品番号 工程番号 ○テーブル「日数マスタ」 日数ID 部品番号 工程番号 日数 となっています。 テーブル「受注マスタ」の部品番号と工程番号からテーブル「日数マスタ」にある日数を引き出したいのですが、方法が分からず質問しました。

  • Access フォームのデータがテーブルに反映されない

    こんにちは。 現在、アクセスを使って簡単なデータベースを 作っていたのですが、ひとつわからないことがございます。 テーブルを二つリレーションを組んで、 フォームを作ったのですが、 うまく二つのテーブルにデータが 保存できません。 フォーム:顧客ID、名前、電話番号 サブフォーム:商品ID、商品名、納期、など。。。 こういった二つのテーブルで、サブフォームの方のテーブルに 顧客のデータも保存したいんですが、できるものなのでしょうか? 初心者でわかりづらくて、 大変申し訳ございませんが、よろしくお願い致します。

  • phpmyadminでのデータ挿入について

    phpmyadmin(ver3.4.9)を利用しています。 リレーションビューを用いて、以下のようなリレーションを組んだとします。 【商品テーブル】 id name 【売上テーブル】 syouhin_id uriagegaku ※商品テーブルのidと、売上テーブルのsyouhin_idがリレーション 売上テーブルのデータ挿入において、 現在は、syouhin_idのセレクトボックスには、 商品テーブルのidの値が出てきます。 これだと何の商品かよくわからないため、 データ挿入の効率を上げるため、 syouhin_idのセレクトボックスに商品名(nameの値)が出るような方法はありますでしょうか。 あくまでも、データ挿入時に商品名を参照したいのであって、 実際のデータは商品id(idの値)をsyouhin_idに入れたいのです。 つたない説明ですが、ご教授ください。 社内プログラマが急病のため、 プログラムを組んだりすることができず、 phpmyadmin画面内でのデータ挿入となりました。 なにとぞ宜しくお願いいたします。

    • ベストアンサー
    • MySQL
  • Accessで、二つのテーブルを比べて、ダブってないデータだけ取り出すことって出来ますか?

    えーっと、Accessで入荷情報の処理ソフトを作ってます(大きくつまづくごとに質問させていただいてますがw 商品名を検索して今月の入荷数を入力・・・といった具合にデータを入力していくわけですが、毎月月末に一度だけ入力するので、同じ月に同じ商品の入荷数を二度入力するということはありません。 なので、一度入力した商品データは次に検索したときに検索にひっかからないようにしたいのですが・・・。 二つのテーブル・・・マスタテーブルと入荷情報のテーブルがあって、入荷情報テーブルに入力されている商品IDをマスタテーブルの商品IDと比べて、違うのだけ抽出、とやれば出来そうな気がするのですが・・・どうやれば良いのかさっぱり分かりません。 一応、ネットで検索かけてますが、どう検索していいやら分からず右往左往してます(汗 詳しい方、どうかご教授願いまする。

専門家に質問してみよう