• 締切済み

Accessのテーブルの作り方について

Access初心者です。学校のデータベースをAccessで作ろうと思っていますが、テーブルの設計で躓いています。 テーブルの種類 T生徒名簿 ・生徒CD(主キー) ・入会日 ・生徒名 ・フリガナ ・郵便番号 ・住所1 ・住所2 ・TEL ・コースCD ・担任CD ・DM T担任 ・担任CD(主キー) ・担任名 Tコース名 ・コースCD(主キー) ・コース名 ・料金 T教材一覧 ・教材CD(主キー) ・教材名 ・定価 リレーショナルは「T生徒名簿」と「T担任」の担任CD 「T生徒名簿」と「Tコース名」のコースCD にしてあります。 もうひとつ「T必要教材」をつくりたいのですが、どう作ってよいのかわかりません。T必要教材には項目としては「コース名」「教材CD」を入れてコースごとに必要な教材を「T教材一覧」から引っ張ってきたいのですが、コース毎に複数の教材が必要なんです。 例 Aコースは教材1と教材2と教材3が必要。 Bコースは教材1と教材3が必要 Cコースは教材2と教材4が必要 「T必要教材」の作り方ともっと効率的なテーブルの作り方があれば教えていただけませんでしょうか。よろしくお願いいたします。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.5

あと、素人がよく忘れるのが「履歴管理」です。 アナログの過去書類をファイリングしてませんか? 「2009年度 生徒名簿」とか。 「2010年度 生徒名簿」とか。 データベースって過去のデータをどこまで管理する のかって重要ですよね。生徒が途中で「コース変更届」 を出した時、過去のデータは残さず上書きしていいのか どうか。 きりが無いのでこの辺でやめます。

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.4

どの程度分散させるかどうかは登録すべきデータの パターンによると思います。 (本当はデータ量とか更新頻度とかも考えますが、 それは1つ上のステップだと思います。勉強して いただく事前提ですので、省略します) まずはどこにデータが所属すべきかを考えます。 質問文では生徒中心ですよね。 生徒一人にコースCDと担任CDが一つ決まってしまう。 つまり ・同じ生徒は複数のコースは受けれない ・生徒一人に担任は一人固定 ・同じ生徒は複数のコースは受けれない …まぁ、義務教育の学校ならありの場合もあるかな。 生徒は、理数系コースか文系コース1つしか選べない。 これが大学や学習塾だと 生徒がAコースとCコースを同時に受ける場合が発生します。 そうなると今回の教材と同じような形にすべきですよね。 ・生徒一人に担任は一人固定 小学校とか主担任ならそれもありですよね。 一人で全部見ちゃうという。 一般的にはコースがもっと教科に近い場合など、数学の教師 だけで複数居るとか考えられます。そうなると質問文のように 生徒によって担任が決まるのでなく、コースや教科に担任が くっつく形になります。 #3さんは、その辺りも考慮に入れようとしているのではないで しょうか。 とはいえ、この辺りの仕様ってアナログで存在すると思います。 例えば「入会申込書」。生徒一人に1枚ですよね?で、生徒に 紐付くデータが一式載っているはずです。 どのデータがどこに所属すべきかの基本はそれらアナログの 書類を参考に出来ます。 本当は、そこから「正規化」と呼ばれる理論に基づいた整理を するのですが、これもちょっと勉強が要りますね。

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.3

テーブルはもう少し分散させたほうが良いと思います。 T生徒名簿 ・生徒CD(主キー) ・入会日 ・生徒名 ・フリガナ T生徒住所 ・生徒CD ・開始日 ・終了日 ・郵便番号 ・住所1 ・住所2 ・TEL Tコースデータ ・生徒CD ・コースCD ・担任CD ・DM ・開始日 ・終了日 Tコース名 ・コースCD(主キー) ・コース名 ・料金 T教材一覧 ・教材CD(主キー) ・教材名 ・定価 T必要教材 ・コースCD ・教材CD 別にインデックスが必要になるかは、将来的なレコード数による。 のような感じかな。 必要教材のレコード的には コース 教材 A    1 A    2 A    3 B    1 B    3 C    2 C    2 見たいに入れたら良いと思う。

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

よくあるのは T必要教材 ・コースCD(主キー) ・教材CD(主キー) で Aコース,教材1 Aコース,教材2 Aコース,教材3 Bコース,教材1 Bコース,教材3 Cコース,教材2 Cコース,教材4 を登録。 コース毎に教材が被ると主キー違反。 教材は何個でも登録可。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

T必要教材 ・コースCD(主キー) ・教材CD1 ・教材CD2 ・教材CD3 とフィールド設定するか Tコース名 ・コースCD(主キー) ・コース名 ・料金 ・教材CD1 ・教材CD2 ・教材CD3 とTコース名にフィールド追加ですね

関連するQ&A

  • アクセス2000のテーブルで・・・

    よろしくお願いします。 住所録を作っています。 テーブルには、「個人名簿」「地区一覧」「住所一覧」があります。 個人名簿のテーブルで、住所を入力するとき、地区と住所をそれぞれコンボボックスで入力できるようにしているのですが、、、 ここから質問です。 ある地区を選択すれば、その地区に含まれる特定の住所のみが住所のコンボボックスに現れるように出来ませんか? またその反対に、ある住所をコンボボックスから選択すれば、自動的にその住所が属する地区が表示されたり・・・。 わかりやすく教えてください。

  • Access2000のテーブルのフィールドについて

    Accessのテーブル設計で困っています。 担当者マスターテーブルに担当者CD(主キー)と担当者名のフィールドが入っています。取引先マスターテーブルには取引先CD、取引先名、担当者を2名いれたいのですが、どのようにしたらいいかわかりません。ひとつの取引先に2名の担当者がいる場合どのように管理をしたらいいでしょうか。1つの取引先に対し、1名の担当者だったら、担当者CDをいれクエリで出すことが出来るのですが、2名となるとどうなのでしょう? どなたかご教示ください!よろしくお願いいたします。

  • Accessでの名簿作成2

    一昨日、Accessについて質問をさせていただき(http://okwave.jp/qa/q7723986.html)、無事に解決いたしましたが、またすぐにわからないことが出てきてしまいました。。。。 前回の質問で、生徒の名簿と入退室記録を同じテーブルにするのではなく、「生徒名簿テーブル」と「入退室テーブル」を分けると良いと教えていただきました。 『生徒名簿(と入退室)』も『講師名簿(と任期)』も『寄付者名簿(といつの寄付か)』等もみんなこのやり方でやろうと思っていたのですが・・・中には、生徒であり寄付者でもある、という人や、講師でもあり寄付者でもある、という人もいます。 何か訂正があった時に一度の訂正で済むように、ID番号をオートナンバーでつけて管理しようと思ったのですが、『生徒』にも『寄付者』にも名前が出てくる人をオートナンバーでつけるとIDが違ってしまいます。 氏名と住所を主キーにして管理しようかとも思いましたが、番号と違って、特に住所なんかは色んな表記の仕方があり、少し書き方が違えば例え同じ人物でも別人と判断されてしまいます。 氏名だけでは同姓同名がいるかも知れませんし・・・。 このような場合はどうすればよろしいでしょうか。 オートナンバーではなく数値型で1人1人に番号を付けて管理するしかないでしょうか。 その場合手動になるので、その時点で自分が間違うのではないかと心配なのですが(汗) よろしくお願いいたします。

  • ACCESSについて

    Accessの入力フォームについて教えてください。 現在のテーブル構成の一部↓ [学生]テーブル〔主キー:学生コード〕 学生コード 氏名 コースコード [コース]テーブル〔主キー:コースコード〕 コースコード コース名 現在入力フォーム作成に当たって 入力されるテーブルには事前に学生コードだけは全て はいっています。 入力フォーム上で学生コードに対応する氏名を表示することはできたのですが、コース名を表示させたいのですができません。 誰かわかる人がいれば是非ご教授いただきたいのですが よろしくお願いいたします。

  • Accessのテーブルから成績一覧表を作成したい。

    こんにちは。 ExcelはVBAまで使えるレベルですが、Accessはまったくの初心者です。 基本的なことだと思うのですが、Access2003の使い方で質問です。何をどう調べていいのかわからないので、お願いします。 Accessのテーブルで「名簿」、「成績」、「科目名」の3つのテーブルがあります。 それぞれのテーブルのレコードの内容は以下の通りです。 「名簿」--- 番号(5桁で1年1組1番は10101となっています)、氏名 「成績」--- 番号、氏名、成績(5段階です)、科目番号(1~100まで) 「科目名」 --- 科目番号、科目名 以上のテーブルを使って、エクセルの表で成績一覧表を作るようなことは可能なのでしょうか?エクセルだとA列に番号、B列に氏名、C列以下が科目名が入り、それぞれの生徒の成績が横並びになりますが、そのように表示させることは可能かどうかということです。 Accessのことはよくわからないので、補足が必要であれば指摘して下さい。 よろしくお願いします。

  • Access マスターテーブル

    Accessについて。 テーブル1がID(主キー)、注文日、商品番号、納期など入力欄の項目で、テーブル2が商品番号(主キー)、商品名で商品のマスターテーブルになっています。 商品番号を入力すれば商品名が表示されるようにクエリを作成し、そのクエリからフォームを作っています。 ここまでは良いのですが、新しい商品番号を入力したときに限りフォームから商品名も入力する事でマスターテーブルに登録されるようにしたいのですが、どうすれば良いでしょうか?

  • Accessで質問です

    現在Accessでデータベースを練習で作っているのですが、フォームでIDを入れるとテストの名前が出るようにしています。(例:ID:0001を入れると自動的にテスト名:テスト1)が入力される。 これを逆にテスト1を入れるとID0001が入力できるようにできますか? テーブルとクエリは以下のようになってます。 Tテスト ・テストID(主キー) ・テスト名 T生徒 ・生徒NO(主キー) ・生徒名 ・テストID(TテストのテストIDとリレーション) Q各受験テスト ・生徒NO ・生徒名 ・テストID ・テスト名 フォームは「Q各受験テスト」を元に作っています。(すべての項目を使っています) リレーションの関係で当然「テストID」を入れると「テスト名」は自動的に入るのですが、逆のことをしたいのです。「テスト名」を入れると「テストID」が自動的に入るようにしたいのです。 よろしくお願いいたします。

  • フォームから2つのテーブルにデータを書き込みたい

    Accessで T_aテーブルとT_bテーブルがありそれぞれのフィールドが以下のようになっているとします。 T_a:フィールド名 データ型    ID  オートナンバー型    商品番号 テキスト型 主キー T_b:フィールド名 データ型    ID  オートナンバー型 主キー    商品番号 テキスト型 このときフォームから入力したデータをそれぞれのテーブルの商品番号に追加したいのですがどのようにすればよいのでしょうか。  よろしくお願いいたします。

  • access2000で名簿を作っているのですが・・・

    アクセス自体の初心者です。よろしくお願いします。 テーブル:団体名      個人名簿      地区名      住所一覧  を作ってあります。 (1)団体名のサブデータシートに個人名簿をつける。 (2)地区名のサブデータシートに住所一覧をつける。 (1)、(2)まではできました。 ここからが質問です。 a)個人名簿の地区名フィールドで地区名を選択すると、住所フィールドで地区名のサブデータシートを見られるようにしたい。  今現在の設定では、住所フィールドに住所一覧のすべてのデータが表示される状態です。 b)さらに、住所を選択すると郵便番号が自動的に入力されるようにしたい。  住所を手打ち入力すれば郵便番号は入力されるし、郵便番号を入力すれば住所も出るのだけど、今のまま住所を選択しても郵便番号は自動入力されない。 c)団体名のサブデータシートを一枚ずつ表示して、印刷できるようにしたい。(団体名ごとに個人名簿を表示印刷したい。)  以上、質問自体をわかっていただけるかどうか不安ながらも、ご指導よろしくお願いします。

  • Accessでの設計

    次のようなデータの設計に困っています。 前回他の方に答えていただいたのですが、問題が生じたので再度投稿させていただきます。 例)受験者名簿テーブル 受験者番号   主キー 受験者氏名 受験者かな    郵便番号 住所 電話番号 例)申込者テーブル 申込者番号(主キー) 受験者番号 受験者との続柄 申込者氏名 申込者かな 郵便番号 住所 電話番号 上記のテーブルが2つあります。また、受験者と申込者テーブルの受験者番号はリレーションを設定してます。 まず、受験者との続柄が「本人」の場合、申込者名前や住所、その他の項目は全て、受験者テーブルのデータを元に入力できるようにしたいです。また、受験者との続柄が「本人」ではないときには、氏名などを直接入力できるようにしたいです。 その際、申込者に「主キー」は必要かどうか。 また、他にテーブルを作成する必要があるのか。など初心者にわかりやすいように教えていただきたいです。クエリで、試してみましたが「本人」以外のデータを入力できなくなってしまいました。 どなたか回答願います。   

専門家に質問してみよう