過去の桐井戸端BBS (桐ver.8)
10441 出身校マスタを作って生徒情報を桐で扱う方法は? 野良犬 2001/03/22-14:49
 表題の件なのですが、私はとある高校での生徒情報を桐で扱っていますが出身校のデータを入力する必要があり、
以下の様な表を作っているのですがここにきて問題が発生しました。

中学.TBL
[中学番号] カウンタ
[中学校名] 文字列
[住所]   文字列

高校.TBL
[高校番号] カウンタ
[高校名]  文字列
[住所]   文字列

最近少子化の影響で、廃校になるものや統合される学校、あるいは校名が変更されるものがでてきています。
例えば、○中学校が△中学校に校名変更された場合、単純に[中学校名]を△中学校に変更してしまうと、
過去に○中学校の時に卒業した生徒まで出身校が△中学校になってしまいます。
かといって新しい行を追加すれば○と△が別の学校ということになってしまってこれも困ります。

さらに、○と△が統合されて□になるケースではもっとややこしくなってしまいます。
なんとか矛盾なく、事実のままに保存したいのですが、どのような表定義にしたらよいのでしょうか?
ご意見よろしくお願いします。

10444 Re:出身校マスタ 宮城 2001/03/22-15:53
記事番号10441へのコメント
野良犬さん、悩ましい話ですね。結論からいえば、年度を持ち込むしかないでしょう。
有効年度というかたちでいいと思います。

取り敢えずひとつの案。
10452 Re:出身校マスタ えむに 2001/03/22-18:48
記事番号10441へのコメント
野良犬さん、こんにちは。

系列を識別する為の項目を別途に持たせてはどうですか?

<系列テーブル>・・・新設
[コード][グループ名]    [記事]
 001  中央尋常グループ  S43八重洲小学校へ校名変更
 002  山田小学校グループ T10廃校
 003  鈴木小学校
 004  千代田グループ   鈴木小学校と八重洲小学校が統合

<校名変更のケース>・・・学校テーブルまたは卒業者テーブル
[カウタ] [校名]  [系列コード]←この項目を追加。
100  中央尋常小学校  001
101  八重洲 小学校  001

<統廃合のケース>
関係する学校の系統コードを新規である004に置換しその系統を維持する。

とすれば、個々の名称に影響されずにデータを抽出・印刷など可能ですが・・どうでしょう?
10457 Re:出身校マスタ 野良犬 2001/03/22-22:41
記事番号10444へのコメント
こんばんは、野良犬です。

>野良犬さん、悩ましい話ですね。結論からいえば、年度を持ち込むしか
>ないでしょう。有効年度というかたちでいいと思います。

年度、あるいは日付の項目を作り、ある時点(生徒の卒業日)での校名は得ることはできそうですが、
卒業時の校名に関係なくその学校の出身者をリストするとか、統廃合には対応できないように思います。
さて、困った。
10458 Re:出身校マスタ 野良犬 2001/03/22-22:43
記事番号10452へのコメント
えむにさんこんばんは。

>系列を識別する為の項目を別途に持たせてはどうですか?

う〜む、私のおつむではすぐに理解できないので、明日ゆっくり考えてみます。
ありがとうございます。

10459 マスタの中身の時系列的変動 Ogo 2001/03/22-23:51
記事番号10441へのコメント

これは表定義でなく、コードの持ち方の問題なのです。

このような場合、喩え同一校であっても、名称が変わった(または合併があった)時点で、
新たなマスターコードを作り、新学校名を新規登録するべきなのです。

この代表的なものが市区町村 JIS コードです。
合併等で新たに市区町村が発生した場合、元の市町村のどれかを引き継ぐわけではなく、
全く新たに JIS コードを作成します(今回新たに「埼玉市」ができるなぁ)。

但し、吸収合併の時に限っては、新規として登録するか否かはポリシーによって変更して良いでしょう。

>かといって新しい行を追加すれば○と△が別の学校と
>いうことになってしまってこれも困ります。

○と△が別物と認識できないと困ると言うのが最初の相談なのに、こんな矛盾したことでは困りますね。

○と△を同一校と認識したい時は、学校の住所を単一化するだけで目的が達成できると思うのですけど?
(例外はあるけど――学校が移転した場合と住居表示が変更された場合)

せいぜいマスタに[学校判別]という項目でも作って、同一学校であると判断した時は同一のコードを入れるぐらいでしょうね。

しかし、A校とB校が合併してC校になった場合、A校とC校が同一で、B校とC校が同一なんて考えたら、
A校とB校が同一になってしまいますよ。

10460 Re:出身校マスタ 宮城 2001/03/23-00:01
記事番号10457へのコメント
>卒業時の校名に関係なくその学校の出身者をリスト
>するとか、統廃合には対応できないように思います。

できますよ。ならば「履歴」データをかまえるまでのこと。
「なにをしたいのか?」が明らかで、手段を見いだせないと
決めつけるのは性急すぎる敗北宣言ではありませんか?

>卒業時の校名に関係なくその学校の出身者をリスト
>するとか、統廃合には対応できないように思います。

これはどういう要件を差しているんでしょうか? キーワードはさりげなく書かれている「その学校」です。
A・B・C校が合併して D校になりました。
D校出身者とは何を指すのですか? A校出身者は? 
これが一般的に「そんなの当たり前でしょう?」と言われがちだけど、システム屋が本当に聞きたいことなのです。

# 万能システム設計なんてありません。表現されたニーズ
# に応じた設計があるだけ。どうしてもしたいなら、重く
# なろうがどうしようが、組めばいいだけの話です。
10462 Re:出身校マスタ 宮城 2001/03/23-00:32
記事番号10460へのコメント
>D校出身者とは何を指すのですか?

Ogoさんも書いてるのでもう少し。ある時は合併後の出身者、ある時は合併前のABC校すべて、ある時は A校だけ。

これでも結構です。
その代わり、煩わしい限りとは思います
が、どれがお望みなんですか?というワンクッションを入れることになります。

10465 Re:出身校マスタ 磯田 2001/03/23-01:06
記事番号10441へのコメント
私も学校で同じような業務をしています。
データベース設計的には、生徒個人のデータの欄には学校コードだけを入れておき、
実際の学校名は別にテーブルを作るのが正道でしょうが、そうすると校名変更のときおっしゃるような問題が生じます。
そこで生徒の欄に学校コードと学校名を両方入れておけばどうでしょうか。
そうすれば学校コードで検索すれば、校名が変わったものでも同じ学校として認識させられるのではないでしょうか。
つまり学校コードから対応する学校名を項目初期値として、入力していけばいいのです。
そうすれば出身校マスターが変われば同じ学校コードでもその年から新しい学校名で入力されるし、
古い生徒のデータは旧名のままになるのではないでしょうか。
10466 Re:出身校マスタの件 ezer 2001/03/23-02:00
記事番号10441へのコメント
野良犬さん 初めまして超初心者のエゼルと申します。

私なら、こうするかな?と言うような超初心者的なコメントを差し上げます。
はずしていたらごめんなさい。

学校マスターに現在の学校名の項目を追加する事ではいかがでしょうか?

中学.TBL
[中学番号] カウンタ
[中学校名] 文字列
[住所]   文字列
[現在中学番号] 長整数
[現在中学校名] 文字列

高校.TBL
[高校番号] カウンタ
[高校名]  文字列
[住所]   文字列
[現在高校番号] 長整数
[現在高校名]  文字列

学校マスターをこの様にすれば解決するような気がするのですがいかがでしょうか?
そうすれば検索するときに簡単の様な気がするのですが?
私の考えが簡単すぎましたらお許し下さい。(何せ、超初心者ですから!!!!)
10467 Re:出身校マスタの件 ezer 2001/03/23-02:19
記事番号10466へのコメント
野良犬さん 超初心者のエゼルと申します。追加コメントです。

学校マスターはあくまでも新規追加をして固有学校番号をとる。
学校名が変更及び統廃合は現在の学校番号&学校名を変更する事で対応する。
後は生徒情報の中に現在の学校番号&学校名(なくても良いかな?)を追加する。
検索は卒業年度と現在の学校番号で検索したり印刷したり出来るのではないかな??等と思ったわけです。

10471 Re:出身校マスタの件 野良犬 2001/03/23-12:46
記事番号10466へのコメント
こんにちは、野良犬です。
 
 いろいろご意見いただきありがとうございます。用件の説明が明確でなかったようで申し訳ありません。

出身校は生徒のプロパティとしての見方が主で学校そのもののデーターベースを作るのが目的ではありません。
まず、必要なものをあげますと、

1.生徒の出身校の名前。
2.おなじく出身校の校名と住所。
3.どの学校からどれだけ来たかの統計
4.出身校別の生徒の一覧表
  
それぞれの条件は
1.は卒業当時の校名。
2.では現時点での校名と住所
3.例えばA校卒が10名いてB校卒が5名のとき、現在A校とB校が統合されC校になっていてC校卒が2名ならば、C校17名となる。
4.これも3.の条件と同じで、A校、B校、C校の出身がC校出身者一覧として取得できるひつようがあります。

校名変更には、磯田さんの方法がもっともシンプルで、問題も少ない方法だと思うのですが、
統合された場合の入力が...新しいコードをとり新規レコードを追加すると2,3,4の処理が困難になります。

 とこんな感じなんですが、伝わりますでしょうか。

10475 Re:出身校マスタの件 ezer 2001/03/23-14:09
記事番号10471へのコメント
野良犬さん 超初心者のエゼルです。
>
>出身校は生徒のプロパティとしての見方が主で学校そのもののデーターベースを作るのが
>目的ではありません。まず、必要なものをあげますと、

多分そうだろうと思いコメント差し上げたつもりですが・・・
学校マスターは現在の学校名&学校コードが入っていれば良いのかなと思ったのです。
そして、生徒マスターに現在の学校名が反映されていれば良いような気がするのですが?
>
>1.生徒の出身校の名前。
>2.おなじく出身校の校名と住所。
>3.どの学校からどれだけ来たかの統計
>4.出身校別の生徒の一覧表
>  
>それぞれの条件は
>1.は卒業当時の校名。
>2.では現時点での校名と住所
>3.例えばA校卒が10名いてB校卒が5名のとき、現在A校とB校が統合され
> C校になっていてC校卒が2名ならば、C校17名となる。
>4.これも3.の条件と同じで、A校、B校、C校の出身がC校出身者一覧として
> 取得できるひつようがあります。

私が考えるに生徒のマスターの項目の持ち方で全ての検索が可能と思われるのですが??
氏名  卒業学校名  卒業年度  卒業学校住所 現在学校名  現在学校住所
他にも項目があるでしょうが、上記に記載の代表的な項目を考えてみると
統廃合の場合は現在学校名等を置換すれば良いのではないでしょうか??
そして現在の学校名をもとにして選択して、その生徒の卒業学校名を印刷したりすれば良いのではないでしょうか??
うまく、説明できないのですが・・・・・・・・・
はずしておりましたらお許し下さい。
10485 Re.しつこいようですが??もう一度!! ezer 2001/03/24-00:22
記事番号10471へのコメント
野良犬さん 何度もコメント差し上げますが超初心者のエゼルです。
システム設計に関する問題なので勉強がてらコメントをさしあげています。

> 校名変更には、磯田さんの方法がもっともシンプルで、問題も少ない方法だと
>思うのですが、統合された場合の入力が...新しいコードをとり新規レコードを
>追加すると2,3,4の処理が困難になります。
>
実は磯田さんの方法で考えてみると生徒データの内容に整合性がなくなるような気がするのです。
学校コードと学校名称の関連性が失われ入力支援の為だけに学校マスターがある様な気がするのですが?
Ogoさんがおっしゃっておられますが
>喩え同一校であっても、名称が変わった
>(または合併があった)時点で、新たなマスターコードを
>作り、新学校名を新規登録するべきなのです

と書かれていらっしゃるように学校名は統廃合された全てのデータが入っている事が
学校マスターの必要条件の様な気がするのですが?
結局 1生徒個人にとって必要なのは卒業した学校のデータと現在の学校のデータが解れば良いのではないでしょうか?
その学校がA学校からB学校、B学校からC学校と校名が変更になっても生徒のデータには学校遍歴のデータは
必要ないのではないでしょうか?
つまりエゼル君が松茸中学校の卒業生だとすればいつまで経っても松茸中学校の卒業生に変わりはないのではないでしょうか?
松茸中学校が現在マツタケ学園に変わっていたとしても卒業学校名は変更する必要はないのではありませんか?
つまり学校が統廃合いくらしようと学校マスターは変更せず生徒データの中に現在の学校名が解れば
良いことになるのではないでしょうか?

どなたか、諸先輩のご意見もお聴きしたいのですが。
システムの設計の考え方が正しいのか間違っているのか知りたいものですから・・・・・・
皆様、よろしくお願いいたします。 

10487 やりたい事がわかりましたので・・ えむに 2001/03/24-11:39
記事番号10441へのコメント
まず一般的なシステムの基本と言う観点からは磯田さんの言うコードと名称が自由になると言う仕組みは
ezerさんの言う様に出来るかぎり避けた方が良いでしょう。
(磯田さんのが間違ってと言う意味では有りません)
Ogoさんの言う内容はとても重要です。

校名が変更になった、統合して名称が代わったなどは別途校名登録するのが基本です。

野良犬さんの主旨は、過去のA校や同じくB校でも、現存C校として扱う事がある・・
と言う理由であれば校名テーブルにその情報を盛り込めば済みます。

●校名テーブルの例
 コード 校名   記事             属性校
 001 A校 B校と統合しC校となる      C校
 002 B校 A校と統合し校名変更後C校となる C校
 003 C校 A校とB校が統合し・・      C校

卒業者テーブルに「識別項目」でもそれなりの項目を追加し表引きを使い上記の属性校を読み込んでしまえば
野良犬さんの目的は達成されると思います。
10497 中間報告 野良犬 2001/03/26-00:35
記事番号10441へのコメント
みなさんこんばんは、野良犬です。

 いろいろご意見頂きありがとうございます。
今、整理しているところなんですが、おおきく次の二つになるようなのでさらに検討してみようと思います。

1.生徒マスタに卒業時の学校名と学校コードを入れておく。
 学校名は卒業時のまま(入力時のまま)保持され、学校マスタの校名が変更されても影響を受けない。
また現時点でのその学校の校名や所在地は学校コードから学校マスタを引くことで得られる。
(これは磯田さんのご意見そのままですね)
 ※最初、この方法では統合にうまく対応できないと思ったのですが、大丈夫ですね


2.とにかく校名が変われば新しい学校コードをとる。
この場合、実装方法はいろいろあると思います。
#10487えむにさんのご意見のようにするか、別の履歴テーブルを作るか、あるいは別の方法か。


10504 Re:意志の疎通の難しさを痛感しました。 ezer 2001/03/26-12:25
記事番号10497へのコメント
野良犬さん こんばんは、ezerです。
>
私が考えるにそんなに難しく考える問題ではないような気がするのですが>
多分、宮城さんも、Ogoさんも、えむにさんも、もちろん私も言いたい内容は同じではないのでしょうか?
詳しく書いていないので分かりませんが、野良犬さんが今まで書かれた内容からするともうシステムの設計と言うよりは
表定義の問題のような気がするのですが?
一番詳しく書かれているえむにさんのコメントをそのまま導入し、お作りになられれば
それでもう終わりという気がしてなりません。
もし、言葉の行き過ぎた点がありましたらお許し下さい。
なかなか、BBSで意志の疎通はむずかしいものですね?勉強になりました。

10515 Re:意志の疎通の難しさを痛感しました。 野良犬 2001/03/26-23:27
記事番号10504へのコメント
こんばんは、野良犬です。

 私の説明が下手なため、みなさんにお手数かけ申し訳ないです。

>多分、宮城さんも、Ogoさんも、えむにさんも、もちろん私も言いたい内容は同じではないの
>でしょうか?

その内容は理解したつもりです。学校マスタには新しいコードで登録し、
同じ扱いをする学校を識別するための項目を作るというものですよね?
確かに、#10487のえむにさんのコメントで完結したように思いますが、
私の難しいと感じるのは、それが唯一の方法ではないし、最善であるかも判断しづらいからです。
 例えば#10465の磯田さんの方法でも#10471であげた要件を満たしているのです。
もいちど要件を整理してみれば、
・生徒のプロパティとして出身校をもつ(学校データーベースを作るのが目的ではない)
・学校名は学校(学校という組織)の一属性であって学校そのものではない。
・生徒の卒業当時の学校名が必要
・生徒の現時点の出身校が必要
となるので、どちらの方法でも表現可能ならば、それぞれの長所、短所は?と考えていくと、
数千件を超えるかもしれないデーターを、桐に詳しくない人が入力・保守する場合、いろいろ考えることがでてきた訳です。

>詳しく書いていないので分かりませんが、野良犬さんが今まで書かれた内容からするともうシ
>ステムの設計と言うよりは表定義の問題のような気がするのですが?

というか、表定義の問題かと思っていたらシステムの設計にまで関わってきたという感じです。

戻る