2007年7月20日金曜日

岡山理科大学「データベース」定期試験

  • 実施日: 2007-08-02(木) 7・8限時間枠
  • 試験範囲: 第1回〜第13回(表の設計)まで
  • ノート、配布資料持ち込み可。WWWで公開している資料のプリントアウトも可。参考書の持ち込みは認めないが、参考書を自分で要約してまとめた資料を持ち込むのは差し支えない。
  • 素点をベースに成績をつける。その際、出席点を加味する。

岡山理科大学「データベース」第14回

  • 実施日: 2007-07-19(木) 7・8限
  • 内容: トランザクション、インデックス
  • 講義ノート
今回は講義の最後ということで、残った話題の中から、データベースを使う上で比較的目にする機会の多い用語である「トランザクション」「インデックス」について説明しました。いずれも、データベースの特徴である「複数のユーザが同時に利用する」「大量のデータを扱う」ということから生まれてきた考え方です。

これまで扱ってきた「表」とは異なり、これらはいずれもデータベースシステム内部の仕組みに密接に関連しています。その意味で、この講義の主旨とはやや外れるテーマです。ですが、SQLを通してデータベースを使う、というだけであっても、トランザクションやインデックスを意識しなければならない場合もあります。そこで、この講義では、大体どのような概念なのか、なぜ必要なのか、を中心にお話を進めました。より詳細に知りたい方は、データベースに関する書籍などを参照して下さい。

これで今年度の「データベース」の講義は終わりです。皆さんが将来、データベースに関わる必要が出てきたときに、この講義の内容が役に立てば幸いです。

2007年7月19日木曜日

「コンパイラ」定期試験結果

以下は合格である。
  • 21170xxのうち、xxが以下の者:01, 03, 04, 05, 08, 11, 12, 13, 15, 17, 18, 19, 22, 23, 24, 25, 27, 28, 33, 34, 35, 38, 40, 41, 44, 46, 47, 49, 55, 57, 58, 59, 61, 62
  • 2115027, 2115045
  • 2116010, 2116020, 216022, 2116048, 2116058
以下は、追加判定により合格(C判定)となる可能性がある。追加判定を希望する場合は、課題を2610まで取りにくること。
  • 21170xxのうち、xxが以下の者:02, 14, 21, 29, 32, 39, 42, 43, 48, 50, 52
  • 2115001, 2115004
  • 2116046, 2116051

2007年7月13日金曜日

フレッシュマンセミナー

一応記録だけつけておこう。
  • 実施日: 2007-06-29(水) 2限
  • 内容: 高校数学から情報科学・情報数学への橋渡し
毎年あまり内容を変えてないので、手の内を明かさないということで、資料は置いていません。あしからず。

岡山県立大学「データベース」定期試験

  • 実施日: 2007-07-20(金) 2限
  • 場所: 8105
  • 試験範囲: 6/29講義分(第10回)の内容まで
  • ノート持ち込み可
  • 評価方法: 定期試験の素点で評価する。ただし、場合によっては、レポート課題等により追加判定を行うことがある。合格者、追加判定対象者は掲示するので、注意しておくこと。(ブログにも掲載する予定である)

岡山県立大学「データベース」第12回

  • 実施日: 2007-07-13(金) 2限
  • 内容: データベース技術の応用(情報システム、Web)
  • 講義ノート
今日の講義は最終回ということで、情報システムやWebとデータベース技術の関わりについてお話しました。

もともとデータベースは、情報システムの基盤技術として広く使われていました。情報システムで最も良く使われるシステムアーキテクチャはサーバ・クライアント型ですが、これがデータベース管理システムと合っているのが一つの理由だと思われます。この状況は今も変わっていません。

一方で、インターネット、とりわけWebの広がりにより、従来のデータベース技術ではカバーし切れないデータ管理手法が求められるようになりました。特にWeb検索では、Webページというスキーマのないデータを、大量かつ高速に処理しなければならないということで、クローリング(Webページ収集)、ランキング(ページの重要度を計算し、それにより検索結果の並べ替えを行う)など、新しいデータ管理手法がいろいろ提案され、現在も活発に研究が行われています。今回はその一端をご紹介するということで、PageRankというランキング手法を中心にお話しました。これはGoogleで実際に使われる(と言われている)手法で、グラフ理論を基に、ページ間のリンク構造だけで重要度を計算するものです。現在研究が盛んに行われている分野ということで、あまり体系だったお話ができないのですが、今の技術進歩の一端を感じ取ってもらえると幸いです。

2007年7月12日木曜日

岡山理科大学「データベース」第13回

  • 実施日: 2007-07-12(木) 7・8限
  • 内容: 表の設計(2) (第3正規形、実体・関連と正規形)
  • 講義ノート
今回の講義では、表の設計についてお話しました。前回の続きになります。

前回お話した第2正規形によって、更新時の不整合をかなり回避することができました。しかし、第2正規形でもまだ更新不整合を完全に取り除くことはできません。今回はまず、第2正規形で発生する更新不整合についていくつか例を出した後、これを回避する方法として、推移的関数従属性という考え方をお話しました。これを解消するように表を分割すると、第2正規形の更新不整合を回避することができます。このようにして得られた表を「第3正規形」と言います。この分割は、外部キー制約に着目したことになっています。

実のところ、第3正規形でもやはり更新不整合が発生することがあり、その回避のために、ボイス・コッド正規形、第4正規形、第5正規形など、さまざまな正規形が提案されています。ただ、実用上は第3正規形まで知っておけば充分だと思われますし、講義の後半で述べたように、実体・関連に着目した表の設計は、第3正規形までの手法と密接に関わりがあります。そのため、この講義では、第3正規形で話をとどめておくことにします。

次回は、この講義の最後として、インデックス(索引)、トランザクションという2つの用語について、簡単に説明を行います。

2007年7月11日水曜日

「コンパイラ」定期試験

  • 実施日: 2007-07-18(水)1限(8:40〜10:10)
  • 場所: 8105講義室
  • 配布資料、ノート持ち込み可。
  • 試験範囲:配布資料1章〜7章(実行時環境まで)
  • 成績評価:定期試験の素点により評価します。今のところ追加判定も考えています。
過去の問題は、配布資料9章に掲載した練習問題にほとんど含まれています。練習問題の解答は用意していません。

「コンパイラ」第12回

  • 実施日: 2007-07-11(水) 1限
  • 講義内容: 実行時環境、目的プログラム生成
  • 配布資料7章、8章
この講義の最後として、アセンブリ言語の生成手法、プログラムの実行時環境についてお話をしました。

プログラミング言語の構文には、アセンブリ言語との対応が比較的つきやすいものと、つきにくいものがあります。ここでは簡単な代入文、if文についてアセンブリ言語との対応を示した後、数式についてコード生成の手法を述べました。数式を題材にとったのは、解析木との関連が分かりやすいためです。講義でも述べた通り、簡単な形の数式(三番地コードといいます)の並びに直してみるとアセンブリ言語との対応が容易につきます。また、三番地コードの並びは解析木と深く関連しており、これまでお話した翻訳スキームによりコード生成を行うことができます。

後半の主題は、より複雑なプログラミング言語の動作を、ハードウェアに近いコンピュータの動作に対応づけることでした。特に注意すべき動作として、変数領域の割り付け方式(大域変数、局所変数、メモリの動的割り付け)とメモリ管理との関連、関数呼び出しの動作についてお話しました。時間がなくてざっとしかお話しできなかったのですが、ハードウェアとソフトウェアの橋渡しとなる部分ですので、おおまかな内容については理解しておいてほしいと思います。

これで今年度の「コンパイラ」の講義は終わりです。

2007年7月10日火曜日

「形式言語理論」第11回

  • 実施日:2007-07-10(火) 1限
  • 内容:PDAの2つの受理言語(最終状態受理、空スタック受理)の等価性、PDAとCFGの等価性
  • 教科書6.2.3項、6.2.4項、6.3.1項、6.3.2項
これにて今年度の「形式言語理論」の講義は終了です。レポート課題の提出を忘れないようにして下さい。

岡山県立大学「データベース」第11回

  • 実施日: 2007-07-06(金) 2限
  • 内容: トランザクション、インデックス(索引)
  • 講義ノート
この回では、データベースを扱う際に目にする機会の多い用語である「トランザクション」「インデックス(索引)」について、ごく簡単に説明しました。いずれも、ちゃんと説明しようとすると1コマ以上必要になるテーマですが、本講義の目的が「RDBMSを使う」ということに主眼を置いているため、RDBMSの内部実装に関連の深いトランザクションや索引は、必要最小限にとどめました。興味のある人は、データベースに関する書籍などを参照してみて下さい。

2007年7月9日月曜日

岡山理科大学「データベース」第12回

  • 実施日: 2007-07-05(木) 7・8限
  • 内容: 表の設計(1) (関数従属性、第2正規形)
  • 講義ノート
この回は、表の設計の一つの指針として、関数従属性、表の正規形ということについてお話しました。

ここまでいろいろな表の例を出してきましたが、これらの表をどうやって設計すればよいかについてはお話してきませんでした。ともすると1枚の表にいろいろなデータを押し込んでしまいがちですが、これはあまりいい設計ではありません。講義でお話した通り、表の内容を更新しようとしたときに、いろいろと不都合が起こるからです。

関係データベースでは、このような不都合を解消するために、「1つの表がひとまとまりのデータを表す」程度にまで表を分割するという方法がよくとられます。今回ご紹介した関数従属性は、「ひとまとまりのデータ」というものを形式的に扱うための道具であり、キーと密接な関わりを持っています。今回お話した表の分割方法(正規化と言います)は知っておいてほしいと思います。この結果得られた表を第2正規形と言います。ほかに第1正規形、第3正規形などがありますが、これらはまとめて来週にお話しする予定です。

岡山県立大学「データベース」第10回

  • 実施日: 2007-06-29(金)2限
  • 内容:表の設計(正規化、関数従属性)
  • 講義ノート
この回は、関数従属性や表の正規化についてお話しました。

ここまでいろいろな表を例として用いてきましたが、どのようにこれらの表を設計するかについてはお話してきませんでした。表の設計に慣れないうちは1枚の表にデータを押し込んでしまいがちですが、あまりいい設計とは言えません。それは、この回で述べたように、データの更新時に不都合が発生してしまうことがあるからです。

今回紹介した関数従属性は、適切に表を分割するための1つの指針となる考え方です。時間の都合でかなり盛りだくさんの内容になってしまいましたが、「1つの表にはひとまとまりのデータのみ格納する」ことを形式的に扱う道具であると言えます。完全関数従属性や推移的関数従属性を用いた表の分割(正規化)の方法は是非知っておいて下さい。

2007年7月6日金曜日

岡山理科大学「データベース」第11回

  • 実施日: 2007-06-28(木) 7・8限
  • 内容: RDBMSを使う(GUIによるデータベース管理、埋め込みSQL)
  • 講義資料ページ
学会に行っていたりしたため、ブログへの投稿が遅れています。鋭意努力中ですので、もうしばらくお待ちください。

この回は、前回までお話ししてきたSQLを実際に使う方法として、Microsoft Accessに代表されるGUIによる方法、プログラムの中から使う方法の2通りを紹介しました。Accessはかなり本格的なRDBMSですが、よくできたGUIを用意しており、SQLをうまく利用者から隠しています。その反面、RDBMSを知らない人だと、何をやっているかよくわからないという印象をもたれがちだと思います。ここまでこの講義を受けられた方なら、GUIの操作を見ただけで、何をやっているのか容易におわかりいただけると思います。

プログラムの中から使う方法については、皆さんのカリキュラムを十分把握できている訳ではないこと、反応を見ているとそれほどプログラミング演習をやっているわけではないらしいこと、などの理由であまり深入りはしませんでした。資料には、PHPというプログラミング言語からRDBMSを利用する例を示しています。