日本の国公立中学校で児童達・生徒達の情報を管理する為に、
もしデータベースを設計するのでしたら、
どんな正規化が望ましいのかを知りたいですので、
過去に私が伺いました内容を踏まえまして、再度の質問を致します。
そこで、一先ず、下記の通りに3つのテーブルを考えました。
(1)学生ID/氏名/緊急連絡先/現住所/保護者氏名
(2)学校ID/学校名/所在地/代表電話番号/創立時期
(3)学校ID/教師ID/教師名/担当役職名
そして、更に纏める為に、次の3テーブルを追加しました。
(4)年度/学年/クラス/教師ID/性別/出席番号/学生ID
(5)学生ID/試験実施日/教科番号/取得点数/平均点
(6)教科番号/教科名/教師ID
でも、いざ纏めてみますと、残念乍ら、
(4)~(6)のテーブルの主キーがどれなのかが私には分からなくなりました。
従いまして、非常に恰好が悪いのですが、
それぞれの主キーを教えて頂けませんでしょうか?
No.6ベストアンサー
- 回答日時:
ANo.2,ANo.3,ANo.4に賛成。
http://oshiete.goo.ne.jp/qa/7600713.html の私の回答ANo.2 の最初の段落
(4)クラステーブルとクラス名簿テーブルを分離すべき。
教師というのが,クラス担任・副担任のようにクラスに紐づけられたものなのか,
教師Aはある学生を担当,教師Bは別の学生を担当のように学生に紐づけられたものなのか,
によってテーブル設計も主キーも変わります。
(5)試験テーブルと試験受験テーブルを分離すべき。
同一試験だけれどクラスによって実施日が異なる,一部の公欠学生のために同一試験を日程変更して実施した,などのニーズがあります。試験という実体に対しては試験コードを割り当てるのが常套。
(6)教科テーブルと教科担当テーブルを分離すべき。
同一教科を複数の教師が担当することがあります。教科名は教科という実体に紐づけるものであり教科担当講師に紐づける必要はありません。
No.5
- 回答日時:
前質問みたいで書き飛ばします。
すいません。主キー(あるいは重複しないインデックス=unique)と考えれば、分かりやすいでしょうか。
恐らく学生IDは、未来永劫Uniqueだと思います。(私は大学のうん十年前の学生番号を覚えています)
まずこれを大基に考えます。
学生ID(学生さん)に関する、複数の情報を持つ場合、これは別のキーを作ってあげます。
さて、Uniqueキーは、必ずしも実際に運用されている番号である必要はありません。
情報対象数にもよりますが、オートナンバーなどを利用する方法もあります。
(1)の学生IDは、 A中学校とB中学校の学生番号が被る場合があります。よって、uniqueではないことが考えられます。
学生に唯一の番号を振る必要があります。
オートナンバーでもいいですし、意味を持たせるなら、文字列にして学校IDがX桁&学生番号がY桁でも良いでしょう。
(1)は、学生ID/氏名/(略)/学校ID/学生番号みたいな感じになります。
(1)と(2)を学校IDでリレーションします。
(2)中学校の学校情報ですね。
(3)これはあとからテストの成績とヒモ付けするための中学教師の担当教科でしょうか。役職と担当教科が別であれば、いちおう担当教科欄も付け足したほうがいいです。そして、教師IDも唯一である必要があります。
オートナンバーでもいいですし、意味を持たせるなら、文字列にして学校IDがX桁&教師番号がY桁でも良いでしょう。
(3)は、教師ID/教師名/担当役職名/(担当教科)/学校IDになります。
(2)と(3)を学校IDでリレーションします。
(4)は学年毎の情報ですね。
性別、学年変わると変わりますかね。今の中学は複雑ですね。特に配慮が不要であれば性別は(1)に。
この場合の教師IDは担任ということで良いでしょうか。
このテーブルはテーブルの一意性の都合上、ユニークなデータがないことから、先頭に割と無意味なオートナンバーIDをつけます。
(4)ID(オートナンバー)/学生ID/年度/学年/クラス/出席番号(そういえば中学ってクラス内の1~40くらいの番号だった)/教師ID
(1)-(4)を学生IDでリレーション (3)-(4)を教師IDでリレーション
(5)は学生のテストの成績ですね。
(5)にも唯一のキーがありませんから、オートナンバーでIDを振ります。”ScoreID”にしておきますか。
(5)ScoreID(オートナンバー)/学生ID/試験実施日/教科番号/取得点数/(平均点ってなにの?個人全科目?全体?たぶん、場所はここじゃないです)
(1)-(5)を学生IDでリレーション (5)-(6)を教科番号でリレーション
(6) 教科番号が唯一キーでいいと思います。 ただ、全中学校の「英語I」の成績となった場合は、少し意味合いが変わってきます。「教科名」という文字列でフィルターを掛けるのは、もし記入した文字列にタイプミスがあった場合、統計が取りづらいからです。
(6)教科番号/教科名 これを全中学校共有のマスターテーブルにします。
A中学校の教科番号1番は誰先生が担当しているか。
これは、(5)テーブルに情報持たせるのかなぁ。(5)ScoreID/(略)/教科番号/教師ID/
なんか、わからなくなってきました(笑) 言葉で伝えるのはむずかしいですね。
この回答への補足
有り難う御座います。
転校にも対応させ得るだろうと予想しまして、
『出席番号』の他に、一意の『学生ID』を準備したつもりでいました。
でも、3年間に渡って同じ学校に同じ生徒が留まっている状況が、
日本社会では趨勢を占めていますので、
其の『学生ID』とは違うコードを各生徒達に紐付けませんと、
此のDB設計は簡単に行き詰まるのですね。
(4)の『性別』を(1)の側へと移す正規化の方が比較的に望ましい、
との旨の御指摘を賜りましたので、じっくりと考えさせて頂きました。
但し、当質問の締め切りの後で畏れ入りますが、
其の過程の途上で、私は別の見解に至りました。
そもそも、学生毎の家庭事情の都合で苗字が変わる可能性さえもが御座いますので、(1)の内容は(4)の各キーによって一意の値に絞られ難い、
と私には思われますが、(4)は違う様です。
つまり、もし(4)へと『学期』が追加されましたら、
其の場合には、たとえ転校が有ったとしましても、
『年度』・『学期』・『学生ID』が主キーになって、
『学年』・『クラス』・『(担任)教師ID』・『性別』・『出席番号』が一意に決まりますでしょう。
従いまして、矢張り、
『性別』は(4)のテーブルの属性なのではないでしょうか?
因みに、下記URLのページでも御指導を賜れますと、
非常に助かります。
http://okwave.jp/qa/q7684686.html
No.4
- 回答日時:
では、言い方を変えてみよう。
(4)を考えるにあたっては、
どの時点で、どの学校にどういうクラスが存在するのか?
とそれぞれの生徒がどのクラスにいつからいつまで所属しているのか?
を別に考えないと、正規化がうまくできなくなり、メインキーをどうつけたらよいのかはわかりにくくなるのではないでしょうか?
この回答への補足
有り難う御座います。
地方自治体全体で分かる通し番号としまして、
生徒IDを割り当ててみたつもりでした。
でも、確かに『学期』を更に追加させませんと、
年度途中での転校を盛り込めませんね。
No.3
- 回答日時:
何を管理したいのかはっきりしない気がするんですが?
管理したいものがはっきりしないので、正規化した各DBの
主キーが判らなくなっているんです。
メインになるテーブルは、「最終的に管理したいデータ」に
直結していないと、実際の実行時に効率が悪くなります。
この回答への補足
有り難う御座います。
そもそも、最初の時点では、
学生の個人名の絞り込みの為のDBを考えてみたのですが、
重複し得る内容の存在に気付きましたので、
其処への配慮を踏まえた編成を行なっています内に、
収拾が着かなくなって参りました。
此処迄の正規化は不毛なのでしょうか?
No.2
- 回答日時:
ちょっとDBの役割が見えないです。
簡単に(1)~(6)のテーブルの名称、何を管理するテーブルかを説明してください。
本来役割が分かっていれば主キーがわからないということはありえないはずです。
この回答への補足
有り難う御座います。
又、後で下の枠へも追記を致しますが、
此の質問は次のURLのページからの続きです。
http://okwave.jp/qa/q7679251.html
No.1
- 回答日時:
素人の私が言うのもなんですが、
インデックスに関してはもう少し、
構造を考え直すしてからにしましょう。
(4)転校にどのように対応するのですか?
この回答への補足
有り難う御座います。
そうですね。
但し、現状の私の学習の段階では、
其処迄の余裕が御座いませんでしたから、
畏れ入りますが、今回には、
此処迄の内容での御容赦を賜れますと、助かります。
(4)へと『学期』を追加しますと、御指摘の通りに、
『血液型』等のセンシティブ情報さえをも其処へ盛り込める様に、
当該DBが改良されますね。
因みに、次のURLのページに此の話題を発展させましたので、
其処でも御指導を賜れますと、幸甚に存じます。
http://okwave.jp/qa/q7686382.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- その他(データベース) accessについて 2 2022/05/31 16:58
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- その他(学校・勉強) スシロー “ペロペロ高校生” は、日本の教育の失敗ですね? 20 2023/02/08 07:08
- Access(アクセス) ACSESS初心者です マンション管理をACCESSで出来ないかとチャレンジしています。 リレーショ 3 2022/10/08 11:45
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- 大学受験 推薦入試について教えていただきたいことがあります。 私は、この春高校三年生になります。進路について考 1 2022/04/05 02:04
- MySQL 三科目合計点のクラス別平均点求めるクエリ式を教えてください 1 2023/07/04 09:44
関連するカテゴリからQ&Aを探す
医師・看護師・助産師
薬剤師・登録販売者・MR
医療事務・調剤薬局事務
歯科衛生士・歯科助手
臨床検査技師・臨床工学技士
理学療法士・作業療法士・言語聴覚士
臨床心理士・心理カウンセラー・ソーシャルワーカー
介護福祉士・ケアマネージャー・社会福祉士
弁護士・行政書士・司法書士・社会保険労務士
フィナンシャルプランナー(FP)
中小企業診断士
公認会計士・税理士
簿記検定・漢字検定・秘書検定
情報処理技術者・Microsoft認定資格
TOEFL・TOEIC・英語検定
建築士
インテリアコーディネーター
宅地建物取引主任者(宅建)
不動産鑑定士・土地家屋調査士
マンション管理士
電気工事士
美容師・理容師
調理師・管理栄養士・パティシエ
シェフ
保育士・幼稚園教諭
教師・教員
国家公務員・地方公務員
警察官・消防士
その他(職業・資格)
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
学校の先生になりやすい教科と...
-
教員はやたら無能が多いのはな...
-
教師の格について
-
教員採用試験辞退について
-
建設省告示1460号の接合金物 9...
-
引っ越していて出身中学に教育...
-
公立中学校や高校で働く教師は...
-
教員不足とのことですが、教員...
-
教師で懲戒処分になると全国の...
-
最近の公立小学校、中学校の教...
-
《非常勤講師》 こんばんは、質...
-
教師が、解任になる場合どのよ...
-
先生が生徒に対して「お前」と...
-
中学生です。 同じ学校の10歳上...
-
高校の男性教師と、シたいです...
-
教師が生徒を抱きたいと思った...
-
なぜ教員不足
-
担任も副担任も給料は変わらな...
-
20代後半の男教師は胸が大きい...
-
中学の教師です。 最近「やる気...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
公立中学校や高校で働く教師は...
-
教師の格について
-
最近の公立小学校、中学校の教...
-
学校の先生になりやすい教科と...
-
教員不足とのことですが、教員...
-
引っ越していて出身中学に教育...
-
教師で懲戒処分になると全国の...
-
自衛官の一般曹候補生の倍率は6...
-
教員はやたら無能が多いのはな...
-
教師が、解任になる場合どのよ...
-
教員採用試験辞退について
-
懲戒処分歴があるとどこの教員...
-
国土地理院の一般職の倍率はど...
-
建設省告示1460号の接合金物 9...
-
教員ってクズが多いのでしょう...
-
《非常勤講師》 こんばんは、質...
-
美術教師の年収は働く場所によ...
-
学校ナンバー2ってなんで副校...
-
教師です 学校に私のクレームが...
-
教職を取っていて、教員になら...
おすすめ情報