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

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

Hello World程度のデータベース 準備編(3層スキーマアーキテクチャ)

2006-12-20 23:34:36 | 土日シリーズ

 前に書いた、Hello World程度のデータベースのための準備として、思ったことをメモするコーナーです。




■データベースがないと、こまること

 プログラムで処理するときには、ファイルの中にデータをいれてました(もちろん、今も入れるけど)
 そーすると、極端に言うと、プログラムの数だけ、ファイルが存在しちゃうことになっちゃいます。そして、ひとつのもの、たとえば、ウィリアムのいたずら納豆という商品データが、各プログラムのファイルに書き出されてしまい、データが散在してしまうという結果になってしまいます。そーすると、おかしなことが起きる危険があります。。。。。

 具体的に話しましょう。

 たとえばウィリアムのいたずらが商売を始めたとします。
 ウィリアムのいたずらは、発注票、受注票、納品書、など、さまざまなものを、コンピューター化していったとします。それぞれのプログラムで、売り物の商品、まあ、ここで、ウィリアムのいたずら納豆としましょうか、そのデータを持っています。

 ここで、ウィリアムのいたずら納豆という名前は面倒なので、納豆2.0という名前にしたとします。そーすると

 発注票のプログラムの商品データを納豆2.0に直して
 受注票のプログラムの商品データを納豆2.0に直して
 納品書のプログラムの商品データを納豆2.0に直して

 って各プログラムのファイルを直さないといけません。
 もし、納品書を直し損ねると、納品書では、ウィリアムのいたずら納豆なのに、受注票は納豆2.0、どっちやねん!となってしまいます。

 これ、名前ならいいけど、金額なんかで直しそこねると、大変です。
 損しちゃいます。




■データベースが出てきたわけ

 では、どうしてこんな問題が起こったのか?っていうと、実社会では、ウィリアムのいたずら納豆というのは、1つの商品なのに、それをプログラムでいくつもデータをコピーして、それぞれにファイルの中にもっているからいけないのです。

 実社会とまったく同じようなモデルをつくって、そこにデータをいれて、各プログラムは、そのモデルにアクセスして、値を取得すれば、だいじょーぶ。

<<自分へのメモ:ここで、納豆と上記3つのプログラムで例を示す>>




■3層スキーマアーキテクチャとは?

 3層スキーマアーキテクチャは、これ(<<自分へのメモ>>これをさすものを書く)を実現したものです。
 まず、世の中を、「概念スキーマ」というカタチでモデル化します。
 そして、その概念スキーマをデータベースに落とすものを作ります。
 これが内部スキーマです。
 そして、データベースの中にあるものを、プログラムで使えるようにします。
 このしくみが、外部スキーマです。

 まず、概念スキーマの作るにはデータからエンティティというものを出してくるわけなのですが、それは、正規化という考え方に基づいて出してくる方法と、佐藤正美氏がT字型ER図を作成する場合の考え方とがあります。これについては、以降説明します(<<自分へのメモ:ここで正規化の説明につながる>>)。

 内部スキーマですがデータベースの細かいことは、DBMSでやってくれるので、あとは、そいつに、概念スキーマをデータベースに落とし込むように、エンティティを意味するテーブルや検索用のインデックスを作成するように指示することになります。

 外部スキーマは、プログラムが必要なときに、データベースからデータを取ってきて受け渡すものを記述すればいいわけですが(Viewと呼ばれる)、この書き方は、データベースによってきまっています。

 なお、3層スキーマの3層とは、上記の概念スキーマ、内部スキーマ、外部スキーマの3層のことをさします。




こんかい、おもいついたことは、ここまで


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

業務と入出力をExcelシートに書いて、関連付ける

2006-12-20 17:24:51 | 開発ネタ

 以前、業務をまとめたシートについて書き、また、入出力についてまとめたシートについても書いたので、今日は、その関連について。




■業務シートにおける入出力

 業務シートは、以下のとおり。

 入出力は、"入出力"の項目にかかれます。

 ここに、
    テーブル名.項目名、または
    ファイル名.項目名、
    画面名.項目名、
    メッセージレコード名.項目名、
 のようなかんじでかかれます。
 ただし、項目が全部、あるいは、はっきりしない場合は、項目名は*になります。




■入出力一覧との関係
 入出力一覧は、こんなかんじです。

 これと、データ定義部分との関連ですが、まず、業務における入出力は、結局
    モノの名称.項目名
 の形になっているので、.の前のモノの名称の部分を取り出し、入出力一覧をみて、もしなかったら、追加するようにします。そして、汎用(テーブル、ファイル、画面どれでもOK)の、データ入力シートを作成します。

 削除はしてもいいのですが、してしまうと、テーブル、画面定義などが、書きかけの場合、消されてしまうので、しないことにします(手作業で削除する)




■各属性の一覧について
 各種の項目一覧、とりわけ画面項目については、こんなかんじです。

 これは、入出力項目の.の前と後でわけて、
   前のほうを、テーブル、ファイル、画面、メッセージ名として、シートを探します。
   →すでに作成されているはず
   後のほうは、項目名として、探したシートに書かれている項目中になかったら、追加します。



■ついでに
 将来、CRUD図におとすなら、入出力のところで、

 書き出し(Write)で、
   削除されるエンティティの項目は赤、
   編集されるエンティティの項目は二重枠、
   生成されるエンティティの項目は下線
 など、見分けられるようにしたほうがいいかもしれません。
 (色にしてしまうと、U,Cのように、2つの機能があったとき困る)。

 読み込みはReadになるので、OKです。



 これによって、業務シートと入出力のシートが一致します。
 なお、入出力シートから先に作ってもかまいません。

 次回のこのシリーズでは、この業務シート、入出力シートをER図など、各種の図におとしていく方法論をやります。

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

任天堂,Wii用Webブラウザ「Opera」のベータ版を無償提供へ

2006-12-20 16:41:40 | Weblog

ここのニュース
任天堂,Wii用Webブラウザ「Opera」のベータ版を無償提供へ
http://itpro.nikkeibp.co.jp/article/USNEWS/20061220/257372/

によると(以下斜体は上記ニュースより引用)


任天堂とノルウェーのOpera Softwareは米国時間12月22日,ゲーム機「Wii」用のWebブラウザ「Opera」(ベータ版)の無償提供を開始する。任天堂が12月19日に明らかにしたもの。同ブラウザは,Wiiの「Wii Shop Channel」画面からダウンロードできる。

 同ブラウザをダウンロードすると,メニュー画面「Wii Menu」内で「Internet Channel」が有効になり,テレビでWebサイトを閲覧できる。Flashコンテンツにも対応している。


ほー、これで、オンラインゲーム市場もとりこめる?

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

Web2.0でまだまだ稼げるっていう意味ですかね(^^)。。。

2006-12-20 15:13:38 | Weblog

ここのスラッシュドットニュース

ティム・オライリーが語る?「Web 3.0」
http://slashdot.jp/interview/06/12/19/1845217.shtml


によると(以下斜体は上記ニュースより引用)

11月に開催されたウェブ2.0サミットでティム・オライリーに単独インタビューをした内容が公開されている。

結論から言うと、

Web 3.0は来年とか、1年、2年で来る話ではないよ。もっと独創的なイノベーションや、革新的な進化の話なのだから。もしWeb 3.0が来たなんて話をする人がいたとしたら、信じない方がいいね(笑)。

とのこと。「Web3.0」はまだまだだよ、ということらしい。


えーっと、オライリーさんって、出版社の社長さんですよね。
で、Web2.0って、もちあげた人。

マスコミや出版社が持ち上げたって言うことは、当然一儲けしたいからと
考えるのが自然。

 ということは、Web2.0で儲けたオライリーさん、
 まだまだ、2.0ネタでいけるぞ(^^)v
 っていう意味ですよね。

 つーか、本作りすぎちゃったのかなあ。。

(気がついたと思うけど、Web3.0が、もうきているっていったら、
 Web2.0の本は売れなくなる。もし、Web2.0の本や企画をいっぱい抱えていたら。。。)

 これって、そーいう意味ですよねえ。。。とーぜん(^^)v

P.S 冗談です。マジレスしないでくださいね。
   。。。って、今日、コメントはずしたんだっけ(^^;)
   コメントはずしていて良かった。



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

Javaの画面表示-その4:JSPで表示、JavaBeanで処理(その3:配置)

2006-12-20 11:11:08 | JavaとWeb

シリーズJavaの画面表示のつづきです。現在、JSPから、Javaのクラスを呼び出す話をやっています。

 前回、以下のソース
・index.jsp
・kekka.jsp
・Javaのプログラム(パッケージpac1のShori1.class)
 を示しましたので、今回は、置き場所について書きます。
 Tomcatは、4.1を使っています。




■ファイルの配置

 Tomcatのホームの下に、webappというフォルダ(ディレクトリ)があると思います。
 その下に、testというフォルダをつくり、以下のようにおきます。
(webappは、どのような場合でもこの名前ですが、testは、今回の例です。好きな名前にしてください)

TOMCATのフォルダ
   |-webapp
      |-test
        |-jsp
        | |-index.jsp
        | *-kekka.jsp
        |
        |-WEB-INF
           |-classes
              |-pac1
                |-Shori1.class




 JSPは、testフォルダ(今回の場合。他の名前でもいい)の下なら、どこにおいても大丈夫なのですが、Javaのclassファイルは、
・testフォルダの下に、
・WEB-INFというフォルダを作成し(この名前は、絶対WEB-INFでないとだめ)、
・その下にclassesというフォルダを作成し(これもclassesという名前でないとだめ)、
・その下にパッケージ名のフォルダを作成し(今回はpac1)、
・その下にクラスファイルをおきます。

こうしたら、ブラウザから、
http://ホスト名(場合によってはポートも指定)/test/jsp/index.jsp
で、アクセスできます。ローカルでTomcatデフォルトの場合、
ローカルIPは127.0.0.1(これは、世界全国??同じ)
Tomcatポートは8080(デフォルトの場合)なので

http://127.0.0.1:8080/test/jsp/index.jsp

でアクセスできます。




■問題点

 で、これで一通り、「JSPで表示、JavaBeanで処理」をやったのですが、ちょっと問題があります。それは、今回の場合、エラーでもkekka.jspにいってしまうということです。
 エラーのときは。kekka.jspからindex.jspに戻してもいいけど。。

 画面遷移を変更する場合とか、複雑になってしまいそうです。

 ということで、MVCの構成にして、モデルをJavaBeanにして、Vは今までどおりJSP,コントローラー(C)となるJSPを作るようにしたほうが、よさそうです。




ということで、このシリーズ、次回から、その「JSPで表示、JavaBeanで処理(MVC版)」をやってみたいと思います。


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

Hello World程度のデータベース 準備編(正規化くずし)

2006-12-20 02:45:57 | 土日シリーズ

 前に書いた、Hello World程度のデータベースのための準備として、思ったことをメモするコーナーです。



■第四、第五正規形について

ここがくわしい
第四正規形と第五正規形
http://itpro.nikkeibp.co.jp/article/lecture/20061128/255079/?ST=lecture&P=4


自分へのメモ:
第四正規形は、順番にやっていくと、多くは第一正規形でひっかかることを
書くかどうか、検討する。




■正規化をくずすとき

 一般に、第二正規形は行うのですが、第三正規形は、行わない場合があります。
 その理由は以下のとおりです。
1.(昔言われていた理由)第三正規化まですると、テーブルがふえ、検索が遅くなる
 →いま、この考えの信憑性は?といわれている。
  正規化をして、インデックスを多く張り、インデックスだけでSelectしたほうが、
  結果としては早くなるというのが、佐藤氏の考え

2.第三正規化まですると、テーブルがふえ、”更新が”遅くなる
 インデックスが増えると、インデックスの書き出しもしないといけない。
 なので、テーブルがふえると、遅くなる。

3.第三正規形を行ったあとで、仕様変更になった場合、手が付けられなくなる。
 エンティティによって分ける第二正規形の場合、実体がある(エンティティがある)ので、
これが、なくなる可能性は低い(従業員が急になくなったり、商品がなくなることは、まずない)

 一方、第三正規形は、関係によって成り立っている。たとえば、部署と内線番号の場合、部署が決まれば、内線番号が決まるといったとき、第三正規形として、部署テーブルを作成し、そちらに内線番号を持っていくこともできる。

 しかし、この場合、部署が決まれば、内線番号が決まるという関係は、現時点の話であり、たとえば、「開発部に新人が入って大きくなったので、開発部は、内線を2つもつことにする」といって、部署と内線が、1対Nの関係になり、部署が決まっても(開発部と決まっても)、内線が決まらない(2本のどっちかわからない)っていう話は、あり得る。

 また、逆のケースも考えられる。「今日からリストラ部というのをつくったけど、ウィリアムのいたずら1人だけ配属なので、開発部といっしょに、電話を使ってくれ」といわれたら、1つの内線番号で2つの部署、どっちかわかんなくなる。

 つまり、もし、内線番号と部署の間に第三正規形が成立すると思って、元のテーブルに部署IDだけを入れておいた後で、上記のように、その「関係」を崩す事態が起こったら。。テーブルをきりなおすことになる。

 このように、第三正規形はエンティティの裏づけではなく、関係(1部署1内線)にもとづいて作成される場合があり、このようなケースでは、将来的なリスクを考えて、今、再三正規形にできても、あえてしないこともある。




自分へのメモ:

・データの説明から、3層スキーマにもっていって、概念スキーマから、
その作り方の方法として、正規化理論と、佐藤氏の方法を紹介する。

・データのところ、説明については、
 NASAの命名言語、OF LANGUAGEのありかがわかったら、
 書いておく(主要語(ドメイン)-分類語)




すみません。おもいつきをかいてるだけなので、意味通じないですよね。
ちゃんと、来年に入ったら、まとめますので、
こうご期待


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

メルマガについて&コメント・トラックバック中止しました

2006-12-20 00:35:01 | コピーされるほど儲かるシステム!

 メルマガ、「コピーされるほど儲かるシステム開発日記」をほんとうに久々に
12月20日に、出します。

 で、そのメルマガをみて、コメントを書きたい人へという話が1つと、

 ぜんぜん話は違いますが、このブログのコメント&トラックバック中止のお知らせです。




■メルマガを見て、コメントを書きたい人へ

 すみません。メルマガにも書いたように、メルマガの話、ちょっと方針が変わります。
 で、それに伴い、ブログについてなのですが、わけあって、以下のようにします。

●<<現在>>ここのブログは以下の話が書いてあります
(1)メルマガの感想、コメントなどをかくためのブログ
(2)その他ウィリアムのいたずらが思い付きを書くブログ
(3)シリーズものを書く


●<<今後>上記のうち、(1)をお引越しします。
つまり、ここのgooブログは
(2)その他ウィリアムのいたずらが思い付きを書くブログ
(3)シリーズものを書く
のみになり、

新しくメルマガ用のブログがgooブログ以外にできて、
(1)メルマガの感想、コメントなどをかくためのブログ
は、そこに行きます。さらに、そこに
(4)シリーズもののまとめ
という機能がくわわります。なぜか?という話と、
メルマガ用のブログ先は、次回のメルマガに書きます。

 なので、次回のメルマガまで、感想を書くのはまってくださいませ。
 で、そのメルマガで書かれたブログ先に、今回のメルマガの感想を書いて
くださいませ。




■このブログのコメント&トラックバック中止のお知らせ

 このブログのトラックバック、コメントをしていた理由は、メルマガのためですので、
 そうすると、理由がなくなったわけです。

 そこで、このブログのトラックバック、コメントを中止します。

 というのも、最近、トラックバックがすごく、あまりにもひどい(アダルト系とか)は、削除してるんですけど(保留にいったんしているので、皆さん見ることはないけど、かなり多く来ているのです)、それ以外でも、判断に悩むやつがきてて、それを載せていたら???っていう感じになってしまいました。

 なので、そんなのに時間を費やしてるのは無駄なので、もう、廃止っす(-_-)




■コメントについて

 で、コメントを廃止する理由なのですが、「答えている時間がないから」です。

 ここのブログの目的は、”開発・企画関係、研究者の人に”、多く見てもらうことです。
 (ごめんなさい。ここ、分家は一般の人を対象にしていません。
  一般の人は、本家が対象にしています。)

 でも、最近のコメントを見ると、ひょっとして、コンピューターが好きな、一般の人?っていうコメントが増えてきてしまった気がします。。。勘違いかもしれませんが、そのように読めます。

 で、そういう人たちは、多分、このブログのエントリの主題が分からないと思います。

 たとえば、この前、ここの記事にコメントを書いていた人がいたんだけど、アメリカの「動画配信会社が」著作権違反が成立するための構成要件(普通の構成要件と、条例が出ていて、変わっています)を多分知らない人が書いている??っていうように読めるわけで。。

 で、ついでにいっておくと、日本刀の話の境目の問題は、あのチーズケーキダイエットの話と同じことを主題にしてたわけなんだけど、チーズケーキダイエットは、(この話で日本刀を売る立場の)教授がシロになったよね。でも、たぶん、コメントをいただいた日本刀の話がクロになると思うような人は、なぜ、チーズケーキダイエットがシロになるかがわかんないと思うんですよ。

 なので、シロになる可能性を書いた、あの文は、さっぱり意味不明??だと思います。




 というか、それ以前に、一般の人は、今の上の文をみても???だと思う。

 で、その一般の人までフォローすると、いろいろ書かないとなんないけど、(たとえば、上記の話だと、アメリカにおける動画投稿サイトの違法性の認定と、日本の違法性の認定の違いについて、どの条例のどの条文が成立すると、どうのこうので、だからYouTubeが、あの削除ソフトを配っているわけで。。とか。。)そのレベルの説明ををいくらかいても、見る人は、へっちゃうのよ。。

 事実、そのコメントを書いた人も、見ないって書いてたし。。。ね!




 このブログは、たぶん、一般の人が読んで分かるブログではないと思います。最低でも(やさしいやつで)学部の人、普通の記事は、業界5年以上いる人向けに書いているので。。。*

 なんで、それを、一般の人がコメントくれても。。それに答えている時間が、正直もったいないし・・・かといって、何も答えないでコメント載せていると、「こいつ、なに??」ってことになるので、コメントも、廃止することにしました。

*:なので、専門の人でも、エントリによっては、分野が違うので、わかんないことも
  あると思います。

  そういうエントリは読み飛ばしてください(^^;)

  全部説明してると、すべて、シリーズものになってしまい、ウィリアムのいたずら、
  24時間ブログ書いてないといけなくなってしまうので(^-^;)




ということで、このブログに関しては、以上です
(コメント、トラックバック廃止以外に、変わったところはありません)

メルマガに関しては、次号のメルマガで、これ以外の変更点、新しいメルマガ用ブログサイトについて書きます。


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