Microsoft Access 掲示板

YesNo型で、Yesのものを羅列したい / 2

6 コメント
views
4 フォロー
2

T_履歴というテーブルに、「機種_A」から「機種_Z」までの26種類のフィールドがあるとします。

発想がデータベース的ではないですね。
データベースではデータを横方向に展開する(フィールドが増える)ような設計はしません。
このような設計ではデータベースとして使い物になりません。

そのような設計にしたいのならエクセルで作成することをお勧めします。


提示されている情報だけではテーブルデータの全体像が分かりませんので、具体的にどのようなテーブル設計にすべきかは提示できません。
とりあえず、「テーブル 正規化」をキーワードにWEB検索してみて、データベースの基本を学習されることをお勧めします。

通報 ...
  • 3
    NoName 2024/07/24 (水) 17:36:05 修正 f3f60@44ebd >> 2

    機種マスタ

    機種ID(主キー)機種名
    1A
    2B
    3C
    4D
    26Z

    こんな感じのマスターテーブルを作って、T_履歴には機種フィールドにマスタの機種IDをいれればいいのでしょうか?でもそれだと機種を複数選択できません。

    今のT_履歴のテーブル構成は、詳細省いてますがこんな感じです。


    履歴ID(オートナンバー)受注№(主キー・数値)担当者コード(数値)得意先コード(数値)受注日(日付)品名(短いテキスト)納期(日付)機種_A~Z(YesNo)加工_1~10(YesNo)特記事項_1~3(YesNo)包装_ゴム止め個数(数値)包装_ケース個数(数値)包装_紙帯個数(数値)

    ①T_入力という上記フィールド(受注№以外)を持つテーブルをレコードソースにした、F_入力というフォームで入力を行う(T_履歴には登録ボタンを押して、確定した情報しかレコードして残したくないため)
    ②F_入力の登録ボタンを押すと、T_入力の内容を追加クエリでT_履歴に追加(この際に受注№を取得)
    ③F_前回受注№入力というフォームのtxb_受注№(非連結)というテキストボックスに受注№を入力して反映ボタンを押すと、追加クエリでF_入力にその受注№のレコードを追加し、前回入力した内容がF_入力に反映された状態で入力を開始できる

    以上のようなことをやりたいのです。
    フィールドを横並びにしておけば、追加クエリとかが少なくて済むかなと思ってこのようなテーブルにしました。

    きちんと正規化するとT_履歴_機種、T_履歴_加工とかのテーブルも作らないといけないですよね?

  • 4

    画像1

    正規化調べましたが、T_入力をどうしたらいいかわかりません。
    ここからどのようにすればよいでしょうか。