• ベストアンサー

データベース(アクセス)の問題

【テーブル名】       【フィールド(項目)名】  履修表      学籍番号,授業コード,履修年度,成績  科目表      授業コード,科目名,教員コード,単位  教員表      教員コード,教員名 *授業コードは数字4桁で、「曜日・時限・コード」からなる。曜日は月~金に1~5の数字を割り当 て、コードは時間割に記載してある2桁の数字とする。 例) データベース論: 2363 *教員コードは4文字とし、データ入力時に各自定義しなさい。 【質問】 ●アクセスで上記のテーブルを作成する場合、追加する3つのテーブルの基本キー、連結キー、外部キー、また、リレーションシップで結ばれるテーブルを示す場合、下記のような解答で合っていますでしょうか? 間違いの指摘をお願いします! 【自分の解答】  【テーブル名】  【基本キー】   【連結キー】        【外部キー】    【リレーションシップで結ばれ                                                     るテーブル】        ・履修表       学籍番号     授業コード                      科目表  ・科目表       授業コード    授業コード・教員コード   授業コード      履修表・教員表 ・教員表       教員コード    教員コード          教員コード      科目表

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>連結キーも学籍番号と授業コード >というふうになるということでいいんですよね? 違います この設問では出てきていませんが 通常はもうひとつ生徒名簿というテーブルがあり そのテーブルの学籍番号と履修表の学籍番号が リレーションするのです

hamasaki--
質問者

お礼

丁寧なご説明ありがとうございます!  理解できました!ありがとうございました!

その他の回答 (2)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

この設問の肝は授業と生徒が多対多の関係になるというところですね 履修表の主キーは学籍番号と授業コードの複合キーになります 【テーブル名】【基本キー】     【連結キー】  【外部キー】      【結ばれるテーブル】        ・履修表   学籍番号・授業コード          授業コード       科目表  ・科目表   授業コード       授業コード   教員コード       履修表・教員表 ・教員表   教員コード       教員コード                科目表

hamasaki--
質問者

補足

ご回答ありがとうございます! 基本キーが、学籍番号と授業コードの二つということは、連結キーも学籍番号と授業コードというふうになるということでいいんですよね?        【基本キー】     【連結キー】         ・履修表    学籍番号       学籍番号         授業コード      授業コード

  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.1

科目表の外部キーは主キーにはならないので教員コードでしょう。そうなればリレーションシップで結ばれるのは教員表です。 教員表には教員コードしかないので外部キーはありません。

hamasaki--
質問者

お礼

ご指摘ありがとうございました!

関連するQ&A

  • Accessでデータベースの設計

    大学内での成績管理をアクセスでデータベース管理するという想定です。 (アクセスの使い方を身に付けるための演習課題ですので、本格的なものでないです) 私の考えていること次の4つのテーブルを作る。(1)学生名簿(2)学生成績(3)教員(4)講義 (1)には、学籍番号、学生氏名、フリガナ、学部、学科、入学年度、学年、備考を  (2)には、学籍番号、講義ナンバー、教員ナンバー、試験得点、試験評価 (3)には、教員ナンバー、教員氏名、フリガナ、学部、学科 (4)には、講義ナンバー、講義名、担当教員、学部、学科、開講学期、単位数、必修・選択 と作ります。 *ただし、大学を想定しているので、成績テーブルを、単に学籍番号、文学、科学、歴史・・・・と作りたくないのです。(高校までなら教科数は限られてますが、大学となると科目数が多すぎるのでフォームがとんでもないことになる) で、ここからが質問です。 最終的に、作りたいものは、(1)各学生への成績通知表(学籍番号・氏名・講義科目・評価・合計の取得単位数)が印刷されたもの(2)各科目の担当教員への成績表(学籍番号・学生氏名・評価)が学籍番号順に印刷されたもの の2つです。 Q1:(1)から(4)のテーブル設計で、最終的にやりたいことができますか? Q2:Q1が可能ならリレーションシップを結ぶために、各テーブルの主キーは何になりますか? Q3:クエリーは、どんなのが必要と考えられますか? Q4:Q1では不可能なら、どんなテーブルが必要となりますか?

  • リレーショナル型データベースについて

     このような問題についてです。  以下に示す学生の成績表をリレーショナル型データベースで管理することとした。第3正規化の結果できあがるリレーションのスキーマを表の下に示した「スキーマの表現例」に倣って記述しなさい(1つとは限らない)。正規化されたリレーションスキーマの名称は適切なものを指定すること。また、主キーには○を施すこと。なお、学籍番号、科目番号は、それぞれ学生と科目を一意に識別する値である。学生は1つの学部に所属している。学部名は一意であり、所在地も学部によって一意に決まっているものとする。担当科目教員も課目によって一意に決まっているものとする。 成績表 (学籍番号、学生氏名、所属学部名、学部所在地、科目番号、科目名、担当教員名、成績) ※スキーマ表現例  商品を表すリレーションが3つの属性、商品コード、商品名、価格から構成されているとき、「商品(商品コード、商品名、価格)」と表す。ここで、商品コードが主キーである。 自分なりに考えた答えがこれです。 学生(○学籍番号、学生指名、所属学部名) 学部(○所属学部名、学部所在地) 科目(○科目番号、科目名、担当教員名) 成績(○学籍番号、○科目番号、成績) になりました。これでよいでしょうか。よろしくお願いします。

  • データベースの問題

     (テーブル名)     (フィールド名)   学生表       番号,氏名,電話番号,アドレス,コースコード,出身県コード   コース表     コースコード,コース名   出身県表      出身県コード,出身県名 *コースコードは2文字で、経営コース(BM)、会計コース(AC)、情報コース(IS)、国際コース(IB) *出身県コードは2文字とし、データ入力時に各自定義するものとします。 ●上記のようなテーブルからなるデータベースを作成したいのですが、 (1)各テーブルの基本キーを教えてください。また、外部キーがあれば、その項目名と、その外部キーによって関係付けられているテーブル名を教えてください。  (2)各項目に適するデータ型を決めて、このデータベースのデータ定義をどのようなSQL-DDLで記述すればよろしいのでしょうか? ●このデータベースを用いて、つぎの検索を行うためのSELECT文をSQL-DMLでの記述の仕方を教えてください。 (3) 学籍番号、氏名、電話番号からなる表Aを作る。 (4) コース名、学籍番号、氏名からなる表Bを作る。 (5) 学籍番号、氏名、メールアドレス、出身県名からなる表Cを作る。 (6) 自分と同じコースの人の氏名とメールアドレスからなる表Dを作る。 (7) 学籍番号、氏名、コース名、出身県名からなる表Eを作る。 ちなみに、自分の解答は下記のようになったのですが、間違っている部分があるかと思うのでご指摘おねがいします。 (1) (テーブル名) (主キー)   (外部キー)    (外部キーによって関連付けられるテーブル)    学生表       番号    コースコード   コース表(コースコード)                     出身県コード   出身県表(出身県コード)        コース表    コースコード    なし        出身県表    出身県コード    なし (2)<データ定義(SQL-DDL)>  CREATE SCHEMA  AUTHORIZATION HAMADA  CREATE TABLE 学生表 (番号      CHAR(10) NOT NULL PRIMARY KEY,  氏名      CHAR(20),  電話番号   CHAR(30),  アドレス    CHAR(30),  コースコード CHAR(2) NOT NULL REFERENCES コース表)  出身県コード CHAR(2) NOT NULL REFERENCES 出身県表)  CREATE TABLE コース表 (コースコード CHAR(2) NOT NULL PRIMARY KEY,  コース名   CHAR(20) NOT NULL )  CREATE TABLE 出身県表 (出身県コード CHAR(2) NOT NULL PRIMARY KEY,   出身県名   CHAR(20) NOT NULL ) (3) SELECT 番号, 氏名, 電話番号 FROM 学生表 INTO 表A (4) SELECT コース名, 番号, 氏名 FROM 学生表, コース表 INTO 表B WHERE 学生表, コースコード = コース表, コースコード (5) SELECT 番号, 氏名, アドレス, 出身県名 FROM 学生表, 出身県名 INTO 表C WHERE 学生表, 出身県コード = 出身県表, 出身県コード (6) SELECT 氏名, アドレス FROM 学生表, コース表 INTO 表D WHERE 学生表, コースコード = コース表, コースコード AND コース名 = "情報コース" (7) SELECT 番号, 氏名, コース名, 出身県名 FROM 学生表, 出身県名 INTO 表E WHERE 学生表, 出身県コード = 出身県表, 出身県コード AND 学生表, コースコード = コース表, コースコード

  • 正規化

    問題 次の履修テーブルを第三正規化しろ。 ひだりから、学生番号、学生名、科目番号、科目名、科目区分、単位、教員番号、教員名、成績。そして僕の見解は 第1が、「履修テーブル」・・・成績コード、学生コード、科目コード、教員コード、単位「科目マスタ」・・・科目番号、科目名、科目区分、単位「教員マスタ」・・・教員番号、教員名 あっているのか分からないですし、ここから分からないのですが教えていただけないでしょうか? よろしくお願いします。

  • クエリの抽出方法について

    Ms-Accessのクエリの抽出条件の記述方法に関する質問です。 そもそも不可能なことかもしれないのですが、質問させていただきます。 T_時間割:年度、科目キー、曜日コード、時限コード、教員コード、・・・ T_科目:年度、科目キー、単位、・・・ T_教員:教員コード、教員名、・・・ cd曜日:曜日コード、曜日名称、・・・ cd時限:時限コード、時限名称、・・・ といったテーブルをもとにクエリを作成します。 1行目の抽出条件:曜日コード:1 2行目の抽出条件:単位:2 とし、3行目の抽出条件にクエリのもとになっていないテーブル ↓↓ T_受講者なし科目:年度、科目キー、・・・ の科目キーを指定したいのですが、どうにも抽出条件の記述方法がわかりません。 DLookUpを使うと、「T_受講者なし科目」の1行目のフィールド値のみが抽出条件となってしまいます。 「T_受講者なし科目:科目キー」の全てのフィールド値を抽出条件とする場合、どのようにすればいいのでしょうか?? よろしくお願いいたします。

  • リレーショナルデータベースについて(情報処理試験用)

    現在情報処理の勉強をしているのですが、 データベースが苦手でどうしても理解できないことがあります。 いくつかの項目を表にする際,区分の仕方がわからず,SQLがつくれません。 1. ・学籍番号 ・氏名 ・住所 ・専攻 ・科目番号 ・科目名 ・単位数 ・成績 これは,全ての項目を学生表,科目表,履修表の3つに分ける例です。 この場合, 学生表(★学籍番号,氏名,専攻) 科目表(★科目番号,科目名,単位数) 履修表(★学籍番号,★科目番号,成績) 以上のように分けられるというのは,学生なので理解できます。 そして次の問題なのですが, 2. ・品目番号 ・品目名 ・在庫量 ・受注番号 ・顧客名 ・受注日 ・受注残 ・納期 これらの項目を「品目表」,「受注表」,「受注明細表」の3つに分ける問題です。この場合どのように区分したらよいでしょうか。 また,区分する際のポイントも教えていただければ嬉しいです。

  • 【ExcelVBAまたはExcel関数】成績管理

    ※Excel2010を使用しております。 約100名の成績一覧に入力した成績を、個人の成績表(学生ごとにシートがあります)に 反映させるようにしたいのですが、どのようにすればよいか分かりません。 Sheet1に、成績一覧があります(画像sheet1) なお、9001、9002、9003・・・は学籍番号で、3001、3002・・・は科目コードです。 生徒はすべての科目を履修しているのではなく、履修していない科目については、 空欄になっています。 sheet2以降に各生徒の成績表があります。(画像sheet2、sheet3・・・)成績表には、履修していない科目は表示 されていません。 ここで、成績一覧に入力されている成績を、個人の学籍一覧に反映させるように したいのですが、どのようにするのが最も効率的でしょうか。 VLOOk関数でできるかと考えましたが、できませんでした。

  • Accessのデータベースの構築の仕方について

    Accessのデータベースの構築の仕方について Access初心者です。 1注文書にmax3品目まで記入できる注文書データベースの構築について教えて下さい。 メインテーブルと、サブデータを作っており、 メインテーブルには、注文書Noと注文者名、日付の1注文書内の重複するフィールドを サブテーブルには、連番(max3)、品名(max3)、金額(max3)の重複しないデータとしています。 以下の様な感じです。 メイン→注文書No  1   2   2   3   3   3 サブ →連番      1   1   2   1   2   3 本当は、注文書Noを主キーにして、同じ注文書Noを入力出来ない様にしたいのですが、インデックス、主キー、リレーションシップで値が重複しているのでテーブルを変更できないというエラーメッセージが出ます。 仕方が無いので、現在は諦めて、以下の様に注文書Noでリレーションシップを組んでいます。なので注文書Noの2度打ちの可能性はあります。 メインIDもサブIDも意味が無いと思っていますが。 メイン                    サブ(主キー設定無し) メインID(オートNo)主キー      サブID(オートNo) 注文書No-----------注文書No 注文者名                   連番 日付                      品名                          金額 私のやりたいことは、一つの注文書Noに対し、max3つまで連番で紐づけて、同じ注文書Noを入力出来ないようにしたいことなのですが。 この様な場合、どの様にデータベースとして、リレーションシップはどの様にして、主キーもどの様にするのが正しいやり方なのでしょうか? リレーションシップも良く理解出来ていない状態ですが、宜しくお願いいたします。

  • Accessで家計簿を作っているのですが。。。

    こんにちは。 タイトルの通り家計簿を作成しています。 テーブルは以下のとおりになっています。 (1)家計簿・・・金額や勘定科目コード、補助科目コードなどデータが入っていく (2)勘定科目・・・勘定科目コード、勘定科目名がある (3)補助科目・・・勘定科目コード、補助科目コード、補助科目名がある フォームウィザードで上の3つを使ってフォームを作成し、データを入力するのですが、勘定科目コード、補助科目コードはコンボボックスから選択するようになっています。そこで、例えば「通信費」という勘定科目コードを入力したら、補助科目コードには「インターネット」「電話代」など通信費に関係のある科目だけが出てくるようにしたいのです。 上の(2)、(3)を勘定科目コードでリレーションシップをしています。しかし、今は登録されている全ての補助科目コードが出てきてしまいます(例えば、通信費なのに食費関係のコードが出てしまいます)。 説明が長くなり、わかりにくいかもしれませんがどうぞよろしくお願いします。

  • Access2007について教えてください。

    VB.NETを独学で勉強している者です。(知識はあまりありません) 学生時代にプログラムを勉強してた時、Accessのテーブル(試験の点数データ)をVB.NETのDavtaGridViewから表示するようなプログラムを作っていました。 テーブルのカラム構成としては、 ・テスト日時(8桁数値型、主キー) ・科目A(数値型、点数を入力) ・科目B(数値型、点数を入力) ・科目C(数値型、点数を入力) となっていて、これを画面上にそのまま表示する仕組みです。 今勉強で色々やっていて、これを以下のようなカラム構成にして画面に表示するように変更したいです。 ・テスト日時(6数値型、主キー) ・科目名(科目A、B、C、主キー) ・点数(数値) テーブルそのものはそのままで、Accessでクエリを作成してその結果を表示するか、VB.NETのプログラム上でテーブルのデータを操作するかで方法をネットなどで探してるのですがよい方法が見当たりません。 特に悩んでいるところが、上のように1行のレコードを複数の列に分けることはAccessかVBでどうやったら可能なのか、また「科目名」列の内容をどうやって前の表から紐付けるかということです。 詳しい方にお聞きしたいのですが上記の方法を実現するにはどういった方法が考えられますか? こういった技術が応用できるとか、ヒントになることを教えていただければと思います。