ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

テーブルで、名称から一意になる場合のIDについて

2007-07-25 19:27:54 | Weblog

 テーブルを設計するとき、名称だけで、すでに一意になる場合がある
 たとえば、会社の場合、部名と課名をあわせると一意になるときがある
(って、ならないと困るよ!違う部で同じ課名はOKだけど、同じ部で、同じ課の名前で、実態が違うって言ったら、わかんなくなってしまう(>_<!)


 このような場合、IDを振らなくても、名称を主キーにするケースがある
 (もちろん、同姓同名が合ったり、課名変更があるので、主キーにしたくないというケースがあるのは別。そうではなく、まず、名称が、そう変わる危険もない場合。種別コードなどで、特にありえる)。

 上記のケースにおいては、正規形の立場をとれば、IDと名称は、従属関係になるので、IDはいらないということになる。
 そこで、このとき、IDをもつことの有利不利について、ちょっとまとめ。




■IDを振ったほうがいい理由

・ハッシュテーブルのとき、連番のほうが、きれいに散る

 ハッシュキーを計算式で求める場合、キーが一様のほうがきれいに散る(シノニムが出来にくい)が、名称だと、そーいかないかも・・・


・文字列を検索することになる
 それって、おそくない?




■IDを振らないほうがいい理由

・JOINが多くなる。
 ユーザーにIDを見せるわけにはいかない場合、名称を入力することになる。
 その場合、たとえば、部、課、係とあったとき、
 部名、課名、係名を入力してもらったら、

 もし、IDを振らず、名称がキーなら、係名テーブルを検索するだけでOK
 (部名、課名は、係名テーブルの外部キーとして入っている)

 それに対し、IDを振った場合、部名テーブル、課名テーブル、係名テーブルをJOINし、そのテーブルから検索することになる。
 このように、JOINが増える危険がある(実務上、JOIN数には限度がある)




ふとおもいついたのは、こんなかんじかな・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

オブジェクト指向で開発の最初から最後までの手順例-その15:ユースケース図をつくる

2007-07-25 17:43:26 | 開発ネタ

オブジェクト指向でやる場合の最初から最後までの流れを、実際の例を挙げて書いていくシリーズ「オブジェクト指向で開発の最初から最後までの手順例」ここの順番でいくと、今回は、「(5-2)プロセス解析ルート」の「(5-2-2)ユースケース図にまとめる」です。




■アクティビティ図からユースケース図へ

 アクティビティ図におけるアクティビティのうち、コンピューター化するアクティビティをユースケースとしてとりあげます。

 そのユースケースに対して、入出力があるわけですが、その入出力が、外部からくる場合、アクターになります。入出力は実際にはデータなわけなのですが、データそのものではなく、データを入力する人(コンピューターの場合もあるけけど)、データを受け取る人をアクターとして、人の形で書きます。




■今回の場合

 ユースケースは、

   発注する
   編集する
   確認する

 で、「発注する」のアクターは発注者と受注者
 「編集する」、「確認する」のアクターは発注者
 です。




■ただし、この場合も・・・

 アクティビティ図のところに書いたように、この業務以外にも、マスタの作成として、事前にやっておかないといけないことがあります。
 つまり、発注企業(+部署、店舗、納品先)、受注企業、商品などのマスタの作成、編集、参照(検索)削除。

 これを、ユースケース図に含めるかどうかは別として、システムとしては、つくらないといけません。




 ということで、簡単ですけど、ユースケース図もおわりにします。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

悲しいときー。サーブレットからXMLを書いてもブラウザにすら何も表示されないときー。。

2007-07-25 10:24:27 | Weblog

 クライアントがAJAXで、サーバーをサーブレットでやろうとしたとき、どーしても、XMLHttpRequestで受け取った結果を、responseXMLでうけとると、firstChildですらNULLになる(responseXMLの結果自体は、入ってくる)。

 で、ブラウザで、そのサーブレットのURLを打っても、帰ってこない(前の画面のまま。ちゃんと帰ってくればXMLの構造が表示されるはず・・・)


ということに、ある人がはまりました(ウィリアムのいたずらではない、他の人)

おかしい・・・

悩みました・・・

答え:

UTF-8でXMLで書いているので、出力する前に、
response.setContentType("text/xml; charset=utf-8");


とすべきところを
response.setContentType("text/html; charset=Shift_JIS");


と、HTMLでシフトJISと送っていた。。


 ごめんよお(>_<!)
 たしかに、まず、JavaでHello World の サーブレット (Servlet)編で、Hello Worldをだして、そのあと、出力部分をXMLに変えてね!っいったけど・・・




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする