<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd">
  <channel>
    <title>システム開発実践講座</title>
    <link>http://system.pgtop.net/</link>
    <description>プログラミング言語やデータベースを使って、業務システムを開発する実践講座です。</description>
    <language>ja</language>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>プログラミング言語やデータベースを使って、業務システムを開発する実践講座です。</itunes:summary>
    <itunes:keywords>プログラミング,データベース,システム開発,プログラム,実践</itunes:keywords>
    
    <itunes:author>mslab</itunes:author>
    <itunes:owner>    
       <itunes:name></itunes:name>
       <itunes:email></itunes:email>
    </itunes:owner>
        <itunes:explicit>no</itunes:explicit>
        <item>
      <link>http://system.pgtop.net/article/111543212.html</link>
      <title>システム開発 売上伝票の鑑部と明細部を関連付ける方法。</title>
      <pubDate>Mon, 22 Dec 2008 11:07:11 +0900</pubDate>
            <description>リレーショナルデータベースを用いた システム開発 では、複数のテーブル同士を関連付けることで、目的のデータを得ます。前回のように、売上伝票をただ分けただけでは、鑑部と明細部のつながりが無くなってしまいます。すると、どの明細部が、どの鑑部のものなのかがわかりません。【1】そこで、明細部に「伝票No」の項目(列)を加えます。＊計算部分は省略しました。これだけで関連付けは完了です。簡単ですよね。伝票No が両方にあることで、どの鑑部の明細部なのか、判断できるようになりました。つまり..</description>
            <content:encoded><![CDATA[
リレーショナルデータベースを用いた <strong>システム開発</strong> では、複数のテーブル同士を関連付けることで、目的のデータを得ます。<br /><br />前回のように、売上伝票をただ分けただけでは、鑑部と明細部のつながりが無くなってしまいます。すると、どの明細部が、どの鑑部のものなのかがわかりません。<br /><br />【1】そこで、明細部に「伝票No」の項目(列)を加えます。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-69.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-69-thumbnail2.gif" alt="system-69.gif" width="150" height="45" border="0" /></a><br /><br />＊計算部分は省略しました。<br /><br />これだけで関連付けは完了です。簡単ですよね。<br /><br />伝票No が両方にあることで、どの鑑部の明細部なのか、判断できるようになりました。つまり同じテーブルに、異なる鑑部の明細部を保存しておいても、区別することができます。<br /><br /><br />あと、もう一つ付け加える項目があります。<br /><br />【2】明細部の各行を、一意に識別するため、主キーとして「明細No」を加えます。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-70.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-70-thumbnail2.gif" alt="system-70.gif" width="150" height="40" border="0" /></a><br /><br />＊一意とは、同じデータが他に無く、重複しないことです。<br />＊主キー(primary key)とは、レコードを「一意」に識別するためのフィールドです。<br /><br />主キーである 明細No が「1」のレコードは、必ず1件しかありません。<br /><br />したがって、たとえ伝票No、品名、数量、単価が同じでも、明細Noが異なれば、違うレコードだと識別できるわけです。<br /><br />また、明細部での 伝票No は主キーではなく、外部キーなので、重複してもOKです。伝票Noが重複しているものが、同じ鑑部に属するレコードだとわかります。<br /><br /><br />【3】ここまでの作業をまとめると、以下のようになります。<br /><br />・鑑部<br /><a href="http://syspg.up.seesaa.net/image/system-67.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-67-thumbnail2.gif" alt="system-67.gif" width="150" height="33" border="0" /></a><br /><br />・明細部<br /><a href="http://syspg.up.seesaa.net/image/system-66.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-66-thumbnail2.gif" alt="system-66.gif" width="150" height="40" border="0" /></a><br /><br /><br />【ワンポイント】<br />鑑部の主キーには、「No」の項目を「伝票No」として、そのまま使うことができます。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-68.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-68-thumbnail2.gif" alt="system-68.gif" width="150" height="33" border="0" /></a><br /><br />主キーには、数値型のフィールドを使うのが一般的です。<br /><br />もし、伝票番号に意味を持たせたい場合は、「H20-12-22-0001」のような文字列で入力できるフィールドを、新たに用意したほうが良いでしょう。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>Step5・鑑部と明細部を関連付ける</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-66.gif" length="17335" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-67.gif" length="17421" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-68.gif" length="17522" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-69.gif" length="16984" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-70.gif" length="18166" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/111392342.html</link>
      <title>システム開発 売上伝票を鑑部と明細部に分ける。</title>
      <pubDate>Thu, 18 Dec 2008 10:45:56 +0900</pubDate>
            <description>システム開発 の基本となる売上伝票では、1つの伝票を、「鑑部と明細部に分ける」という考え方が、とても重要です。システム開発初心者にとっては、一番難しい部分ですが、この考え方が理解できれば、ほとんどの業務システムに応用することができます。そこで今回は、計算で出せる項目を省略した売上伝票を、さらに鑑部と明細部に分けてみましょう。・計算項目を省略した売上伝票上の売上伝票を、以下のように、鑑部と明細部の2つに分けます。・鑑部・明細部分けること自体は、とても簡単ですね。鑑部と明細部を別..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> の基本となる売上伝票では、1つの伝票を、「鑑部と明細部に分ける」という考え方が、とても重要です。<br /><br />システム開発初心者にとっては、一番難しい部分ですが、この考え方が理解できれば、ほとんどの業務システムに応用することができます。<br /><br />そこで今回は、計算で出せる項目を省略した売上伝票を、さらに鑑部と明細部に分けてみましょう。<br /><br />・計算項目を省略した売上伝票<br /><a href="http://syspg.up.seesaa.net/image/system-63.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-63-thumbnail2.gif" alt="system-63.gif" width="150" height="79" border="0" /></a><br /><br /><br />上の売上伝票を、以下のように、鑑部と明細部の2つに分けます。<br /><br />・鑑部<br /><a href="http://syspg.up.seesaa.net/image/system-61.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-61-thumbnail2.gif" alt="system-61.gif" width="150" height="33" border="0" /></a><br /><br />・明細部<br /><a href="http://syspg.up.seesaa.net/image/system-62.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-62-thumbnail2.gif" alt="system-62.gif" width="150" height="47" border="0" /></a><br /><br />分けること自体は、とても簡単ですね。<br /><br />鑑部と明細部を別々に見ると、何となくテーブルにできそうな感じになってきました。複雑なものでも、分解すると簡単になることがわかります。<br /><br />1件の売上伝票に対して、鑑部は1つですが、明細部は複数行あります。<br /><br />商品が1つしか売れない場合もあるし、2つ以上売れる場合もあるので、明細部の行数は、常に変わるという点がポイントです。<br /><br />また鑑部があって、明細部が無い状態というのは、商品がまだ売れていないということになります。(新規入力中など)<br /><br /><br />【解説】<br />(1)鑑部のことを「売上上部」、「伝票上部」、「売上メイン」、「伝票メイン」ということもあります。<br /><br />(2)明細部のことを「売上明細」、「伝票明細」、「売上明細行」、「伝票明細行」ということもあります。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>Step4・売上伝票を鑑部と明細部に分ける</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-61.gif" length="17421" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-62.gif" length="18789" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-63.gif" length="32564" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/111069403.html</link>
      <title>システム開発 消費税率の扱いについて。</title>
      <pubDate>Thu, 11 Dec 2008 17:03:46 +0900</pubDate>
            <description>業務システムの システム開発 では、消費税率を頻繁に扱います。消費税率を扱う時には、注意するポイントがあるので、まとめておきます。消費税率は、売上伝票の日付から、プログラムで計算することができます。・1989年4月1日以降から1997年3月末日までは3%・1997年4月1日以降は5%消費税率は、1989年(平成元年)4月1日に施行されました。当時の消費税率は 3% でしたが、1997年(平成9年)4月1日には、5%に引き上げられました。消費税は、商品やサービスに課税されます。..</description>
            <content:encoded><![CDATA[
業務システムの <strong>システム開発</strong> では、消費税率を頻繁に扱います。<br /><br />消費税率を扱う時には、注意するポイントがあるので、まとめておきます。<br /><br />消費税率は、売上伝票の日付から、プログラムで計算することができます。<br />・1989年4月1日以降から1997年3月末日までは3%<br />・1997年4月1日以降は5%<br /><br />消費税率は、1989年(平成元年)4月1日に施行されました。当時の消費税率は 3% でしたが、1997年(平成9年)4月1日には、5%に引き上げられました。<br /><br />消費税は、商品やサービスに課税されます。私達が何かを購入する時には、ほとんどのものに消費税がかかっています。<br /><br />また消費税率は、将来的に変化する可能性が、十分あります。<br /><br />医療や介護の水準を維持するためには、財源が必要で、それを消費税で賄うなら、税率を引き上げる必要があると言われています。<br /><br />2008年12月の現時点では、商品の合計に消費税率の5%をかければ、消費税額が出せます。一見簡単なようですが・・・<br /><br />実は、消費税が課税されない商品やサービスがあります。医療や福祉、教育などは、対象外となっています。<br /><br />そのため、課税・非課税の両方の商品やサービスを扱う場合は、結構計算が複雑です。<br /><br />商品ごとに課税・非課税があるのなら、商品テーブルに税率を持たせておく方法も考えられます。<br /><br />しかし将来、税率が変わった場合、商品テーブルの税率を変更すると、過去の消費税額が変わってしまいます。<br /><br />したがって、データを「転記」するなどの工夫が必要になります。<br /><br />つまり、きちんとした業務システムを作るなら、単純な計算では出せないわけです。<br /><br />でも最初から深く考えすぎると、肝心な「テーブル設計」まで難しく感じてしまいます。そこで、とりあえず消費税額は、商品の合計に 5%をかけて計算することにしておきます。<br /><br />売上伝票の全体像を把握した段階で、いくらでも改善することはできます。まずはデータベースのテーブル設計に集中することにしましょう。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>Step3・消費税率について</category>
      <author>mslab</author>
                </item>
        <item>
      <link>http://system.pgtop.net/article/111050158.html</link>
      <title>システム開発 後から計算で出せる項目は省略する。</title>
      <pubDate>Thu, 11 Dec 2008 10:06:15 +0900</pubDate>
            <description>システム開発 で、データベースのテーブルを設計する時、後から計算で出せるデータは、保存しないのが基本です。売上伝票は、一見複雑そうです。初心者はどこから手をつけてよいのか、わからないかもしれません。しかし段階を踏んで考えると、必ずわかるようになります。それでは、売上伝票をじっくり分析してみましょう。【1】まず、計算で出せる項目を考えてみます。・売上伝票金額(税抜)：数量と単価から計算できる合計：金額を集計すると計算できる税率：日付から計算できる消費税額等：合計と税率から計算で..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> で、データベースのテーブルを設計する時、後から計算で出せるデータは、保存しないのが基本です。<br /><br />売上伝票は、一見複雑そうです。初心者はどこから手をつけてよいのか、わからないかもしれません。<br /><br />しかし段階を踏んで考えると、必ずわかるようになります。<br /><br />それでは、売上伝票をじっくり分析してみましょう。<br /><br /><br />【1】まず、計算で出せる項目を考えてみます。<br /><br />・売上伝票<br /><a href="http://syspg.up.seesaa.net/image/system-60.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-60-thumbnail2.gif" alt="system-60.gif" width="150" height="106" border="0" /></a><br /><br />金額(税抜)：数量と単価から計算できる<br />合計：金額を集計すると計算できる<br />税率：日付から計算できる<br />消費税額等：合計と税率から計算できる<br />税込合計金額：合計と消費税額等、または合計と税率から計算できる<br /><br /><br />【2】そこで、計算で出すことが出来るデータを省くと、以下のようになります。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-59.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-59-thumbnail2.gif" alt="system-59.gif" width="150" height="106" border="0" /></a><br /><br />これでかなりスッキリしましたね。何だか簡単になったような気がしませんか？<br /><br />計算できる項目は、データを保存しておく必要がないので、項目自体を消しています。省略した項目は、後で演算フィールドで計算して表示できます。<br /><br />残った項目が、テーブルに保存する各フィールドになります。<br /><br /><br />【解説】<br />(1)税率(消費税率)は、過去に 3%から 5%に上がりました。今後も変化する可能性が十分あります。また消費税がかからないものもあります。<br /><br />税率については、主に3通りの考え方があります。<br />・税率は売上伝票の日付から計算できる<br />・売上伝票のテーブルに税率を保存しておく<br />・税率用にテーブルを作成し、参照する<br /><br />どの方法でも可能ですが、今回はわかりやすくするため、税率を省略しました。<br /><br />売上伝票の日付から計算する方法だと、税率を保存しておく必要はありませんが、表示する時には、計算する時間が必要です。<br /><br />逆に税率を保存する場合は、容量が必要ですが、表示する時に計算は不要です。<br /><br />税率については、後から加えることもできるので、とりあえず側に置いておいてください。<br /><br /><br />(2)基本的には、計算で出せるデータは、テーブルに保存しませんが、例外もあります。<br /><br />合計や消費税額等、税込合計金額のような、計算で出せる項目(フィールド)を、あえて残し、テーブルに計算結果を保存しておくことがあります。<br /><br />例えば、レコード数が多く、計算が複雑になる場合は、計算してから画面へ表示すると、時間がかかってしまいます。するとユーザーにとって、システム自体の動作が、とても遅く感じるとこがあります。<br /><br />そこで、処理に余裕のある時(追加や更新時)に計算して、テーブルに保存しておきます。表示する時には、計算が不要になるので、その分システムの動作が速くなります。<br /><br />また、帳票などに集計結果を表示する場合も同じで、その都度計算してから表示するより、あらかじめ計算しておいたものを表示したほうが速いです。<br /><br />しかし、これらは特別な場合です。やはり基本的には、計算で出せるデータは、テーブルに保存しないと覚えてください。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>Step2・計算で出せる項目は省く</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-59.gif" length="33230" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-60.gif" length="56748" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/111002988.html</link>
      <title>システム開発 どんなシステムを作るのか考える。</title>
      <pubDate>Wed, 10 Dec 2008 10:01:53 +0900</pubDate>
            <description>システム開発 を始める前に、これからどんなシステムを作るのか、考える必要があります。世の中には、いろんなプログラムがあります。ゲームからパソコンのソフトウェア、家電、企業の業務システムまで、現在の私達の生活は、プログラムに支えられています。あなたが普通に生活しているだけでも、裏側で多くのプログラムが動いています。テレビやビデオはもちろん、炊飯器や洗濯機にもプログラムが組み込まれています。最終的に、どんなプログラムを作れるようになりたいかで、適した学び方が変わってきます。プログ..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> を始める前に、これからどんなシステムを作るのか、考える必要があります。<br /><br />世の中には、いろんなプログラムがあります。ゲームからパソコンのソフトウェア、家電、企業の業務システムまで、現在の私達の生活は、プログラムに支えられています。<br /><br />あなたが普通に生活しているだけでも、裏側で多くのプログラムが動いています。テレビやビデオはもちろん、炊飯器や洗濯機にもプログラムが組み込まれています。<br /><br />最終的に、どんなプログラムを作れるようになりたいかで、適した学び方が変わってきます。<br /><br />プログラミング初心者が、システム開発を学びやすく、すぐにプログラムの効果を実感しやすいのは、「業務システム」です。<br /><br />業務システムの中でも、システム開発上達のコツは、ズバリ！「売上伝票」です。<br /><br />そこで、当システム開発実戦講座では、以下のような売上伝票をシステム化する過程で、システム開発の基礎を学習します。<br /><br />・売上伝票<br /><a href="http://syspg.up.seesaa.net/image/system-54.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-54-thumbnail2.gif" alt="system-54.gif" width="150" height="106" border="0" /></a><br /><br />この売上伝票がわかれば、業務システムが全てわかるようになる、といっても過言ではありません。<br /><br />売上伝票で身に付けて欲しいポイントは以下の通りです。<br />・伝票と明細の関係<br />・テーブル設計<br />・テーブルの正規化<br />・演算フィールド<br /><br />売上伝票には、あらゆる分野の基礎が含まれています。売上伝票のテーブル設計や正規化の考え方は、他の業務システムにも応用することができます。<br /><br />実は、複雑そうなネットショップも、売上伝票の延長線上にあります。よく考えると、ネットショップも商品やサービスを販売しているわけですから、当然ですよね。<br /><br />テーブル数や入力するデータの項目は多くなりますが、基本部分は売上伝票そのものです。<br /><br />つまり売上伝票が理解できれば、ネットショップも理解できるということです。<br /><br />また、まったくの初心者が、システム開発を学ぶ場合、最初に売上伝票を学ぶと、その後の上達が驚くほど早く、他の業務システムもすぐに理解できるようになります。<br /><br />一見遠回りのように思えますが、売上伝票はシステム開発を習得する近道なのです。<br /><br /><br />【補足】<br />もし、あなたが作りたいシステムが明確なら、それを作るのが一番です。または、あなたの職場の人が希望するシステムを、作ってあげるのも良いでしょう。<br /><br />身近な人に頼んで、練習台になってもらうのです。すると人の意見を聞く(取り入れる)ことの練習にもなります。人の話をしっかり聞くことは、プログラマーや、特にSEには必要な能力です。<br /><br />でも作りたいシステムが、まだはっきり決まっていないのなら、「売上伝票」が一番良い教材だと思います。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>Step1・どんなシステムを作るか</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-54.gif" length="57016" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/110507778.html</link>
      <title>システム開発 図書館の貸出履歴システムを改善する。</title>
      <pubDate>Mon, 01 Dec 2008 13:41:31 +0900</pubDate>
            <description>システム開発 では、システムを運用していくうちに、様々な改善点が出てきます。例えば、前回までにテーブル設計を考えた、図書館の貸出履歴システムでは、「同じ利用者が一度に何冊も本を借りる場合」が、容易に予想できます。(1)すると、貸出日と利用者CDが、重複する可能性のあることがわかります。重複するデータは、別テーブルに分けることを検討するのが基本だと、前に説明しましたね。(2)本来なら、以下の様な形式のほうが、無駄がありません。(3)そのためには、貸出履歴テーブルを、さらに正規化..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> では、システムを運用していくうちに、様々な改善点が出てきます。<br /><br />例えば、前回までにテーブル設計を考えた、図書館の貸出履歴システムでは、「同じ利用者が一度に何冊も本を借りる場合」が、容易に予想できます。<br /><br />(1)すると、貸出日と利用者CDが、重複する可能性のあることがわかります。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-51.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-51-thumbnail2.gif" alt="system-51.gif" width="150" height="106" border="0" /></a><br /><br />重複するデータは、別テーブルに分けることを検討するのが基本だと、前に説明しましたね。<br /><br /><br />(2)本来なら、以下の様な形式のほうが、無駄がありません。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-52.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-52-thumbnail2.gif" alt="system-52.gif" width="150" height="105" border="0" /></a><br /><br /><br />(3)そのためには、貸出履歴テーブルを、さらに正規化して、2つのテーブルに分ける必要があります。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-53.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-53-thumbnail2.gif" alt="system-53.gif" width="150" height="104" border="0" /></a><br /><br />・貸出No、貸出日、利用者CDで1つのテーブルにする<br />・書籍CDは複数あるので、明細として別のテーブルに分ける<br /><br />しかしこのままでは、貸出履歴テーブルと明細テーブルに関連性がありません。また明細テーブルにも、主キーとなるフィールドが必要です。<br /><br />そこで、最終的には以下のようなテーブルに分けます。<br />・貸出No(主キー)、貸出日、利用者CD(外部キー)<br />・明細CD(主キー)、貸出No(外部キー)、書籍CD(外部キー)<br /><br />このような考え方は、後に学ぶ「売上伝票」を参考にすると、よく理解できます。<br /><br />実は、まだまだ他にも改善点があります。<br /><br />例えば、同じタイトルの本が複数冊ある場合も考えられます。これはレンタルビデオでも同じです。人気のある映画なら、同じタイトルのビデオが、たくさん入荷することはよくありますよね。<br /><br />でも、今回はデータベースの基礎編なので、これくらいにしておきます。<br /><br />もっと本格的なテーブル設計については、次の「売上伝票」で学ぶことにします。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>システムを改善する</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-51.gif" length="12462" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-52.gif" length="7090" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-53.gif" length="9459" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/110502312.html</link>
      <title>システム開発 フィールドのデータ型を考えて、テーブルを作成する方法。</title>
      <pubDate>Mon, 01 Dec 2008 10:53:54 +0900</pubDate>
            <description>システム開発 では、どんなリレーショナルデータベースやプログラミング言語を使うことになっても、テーブル設計についての「考え方」は同じです。これまでの各テーブルの関係をまとめると、以下の図のようになります。・全体図(図書館の貸出履歴システム)生年月日のフィールドを追加したことで、いろんな集計ができるようになりましたね。大事なポイントですが、ここまでは「考え方」の部分なので、データベースの種類は、関係ありません。テーブルの作成方法を省略していたのは、そのためです。テーブルの大まか..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> では、どんなリレーショナルデータベースやプログラミング言語を使うことになっても、テーブル設計についての「考え方」は同じです。<br /><br />これまでの各テーブルの関係をまとめると、以下の図のようになります。<br /><br />・全体図(図書館の貸出履歴システム)<br /><a href="http://syspg.up.seesaa.net/image/system-44.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-44-thumbnail2.gif" alt="system-44.gif" width="150" height="122" border="0" /></a><br /><br />生年月日のフィールドを追加したことで、いろんな集計ができるようになりましたね。<br /><br />大事なポイントですが、ここまでは「考え方」の部分なので、データベースの種類は、関係ありません。テーブルの作成方法を省略していたのは、そのためです。<br /><br />テーブルの大まかな設計が出来たら、あとはリレーショナルデータベースの種類によって、フィールドのデータ型を考えて、実際にテーブルを作成するだけです。<br /><br />データ型は、保存するデータの種類によって、数値型、文字列型(テキスト型)、日付/時刻型などを決めます。また、数値型の場合は桁数、文字列型の場合は文字数なども考慮します。<br /><br />テーブルの作成方法は、データベースによって異なります。<br /><br />例えば、Microsoft Access でテーブルを作成する場合は、以下の図のようになります。<br />上がテーブルのデザイン画面で、下がデータを入力した画面です。<br /><br />・T貸出履歴<br /><a href="http://syspg.up.seesaa.net/image/system-45.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-45-thumbnail2.gif" alt="system-45.gif" width="150" height="135" border="0" /></a><br /><br />＊鍵のマークは主キーであることを表します。<br /><br /><br />・T利用者<br /><a href="http://syspg.up.seesaa.net/image/system-46.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-46-thumbnail2.gif" alt="system-46.gif" width="119" height="150" border="0" /></a><br /><br /><br />・T性別<br /><a href="http://syspg.up.seesaa.net/image/system-47.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-47-thumbnail2.gif" alt="system-47.gif" width="150" height="129" border="0" /></a><br /><br /><br />・T書籍<br /><a href="http://syspg.up.seesaa.net/image/system-48.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-48-thumbnail2.gif" alt="system-48.gif" width="150" height="99" border="0" /></a><br /><br /><br />・T著者<br /><a href="http://syspg.up.seesaa.net/image/system-49.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-49-thumbnail2.gif" alt="system-49.gif" width="148" height="150" border="0" /></a><br /><br /><br />・T出版社<br /><a href="http://syspg.up.seesaa.net/image/system-50.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-50-thumbnail2.gif" alt="system-50.gif" width="150" height="148" border="0" /></a><br /><br /><br />【解説】<br />テーブル名は自由に付けることができます。「T」は接頭辞で、テーブルであることを示しています。テーブル名に番号を加えることもよくあります。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>テーブルを作成する方法</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-44.gif" length="21468" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-45.gif" length="18621" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-46.gif" length="19258" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-47.gif" length="13428" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-48.gif" length="16887" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-49.gif" length="16856" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-50.gif" length="16363" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/109929870.html</link>
      <title>システム開発 生年月日から年代別の集計をする方法。</title>
      <pubDate>Thu, 20 Nov 2008 10:20:10 +0900</pubDate>
            <description>システム開発 では、生年月日から年齢が計算できるようになると、いろんな集計に応用できます。例えば、図書館の貸出履歴と利用者のテーブルから、「年代別貸出数」のような集計を出力することが可能です。・年代別貸出数それでは、生年月日から年代別の集計をするまでの方法を、段階を追って考えてみましょう。【1】前回、年齢や満年齢を計算で出しました。計算に使える関数は、データベースによって異なります。この段階では、詳しい計算式は分からなくてもかまわないので、大まかなイメージだけ掴んでください。..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> では、生年月日から年齢が計算できるようになると、いろんな集計に応用できます。<br /><br />例えば、図書館の貸出履歴と利用者のテーブルから、「年代別貸出数」のような集計を出力することが可能です。<br /><br />・年代別貸出数<br /><a href="http://syspg.up.seesaa.net/image/system-34.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-34-thumbnail2.gif" alt="system-34.gif" width="150" height="113" border="0" /></a><br /><br /><br />それでは、生年月日から年代別の集計をするまでの方法を、段階を追って考えてみましょう。<br /><br />【1】前回、年齢や満年齢を計算で出しました。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-42.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-42-thumbnail2.gif" alt="system-42.gif" width="150" height="72" border="0" /></a><br /><br />計算に使える関数は、データベースによって異なります。この段階では、詳しい計算式は分からなくてもかまわないので、大まかなイメージだけ掴んでください。<br /><br />年齢は現在の西暦から、生年月日の年を引けば、簡単に計算できます。<br /><br />しかし、満年齢を出すには、現在の日付が、「誕生日未満」か「誕生日以降」かまで、考慮する必要がありました。<br /><br /><br />【2】年齢や満年齢が出せれば、年代を表示することは簡単です。1の位を切り捨てるだけです。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-40.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-40-thumbnail2.gif" alt="system-40.gif" width="150" height="66" border="0" /></a><br /><br />＊10歳未満は 0 とします。<br /><br /><br />【3】年代が表示できれば、貸出履歴のデータに、利用者の年代を加えて表示することは可能です。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-41.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-41-thumbnail2.gif" alt="system-41.gif" width="150" height="63" border="0" /></a><br /><br /><br />【4】この段階まで来ると、あとは年代をカウントするだけで、集計することができます。<br /><br />・年代別貸出数<br /><a href="http://syspg.up.seesaa.net/image/system-34.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-34-thumbnail2.gif" alt="system-34.gif" width="150" height="113" border="0" /></a><br /><br />＊最初の図と同じです<br /><br /><br />【解説】<br />利用者テーブルに保存するデータは、「生年月日」だけです。生年月日があれば、いろんな計算ができます。<br /><br />生年月日 → 年齢(または満年齢) → 年代 → 集計<br /><br />生年月日から直接年代を計算するのは、難しく感じるので、段階を追って計算しました。<br /><br />このように、リレーショナルデータベースでは、あるフィールド(列)のデータを加工することで、様々な利用ができるようになります。<br /><br />どんなデータを保存しておいて、どんな処理(計算)を行なえば、どんな出力(帳票など)が得られるのか、イメージする力が必要になります。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>年代別の集計をする方法</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-34.gif" length="5311" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-40.gif" length="13003" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-41.gif" length="13677" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-42.gif" length="13407" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/109888946.html</link>
      <title>システム開発 年齢を計算して表示する方法。</title>
      <pubDate>Wed, 19 Nov 2008 11:18:43 +0900</pubDate>
            <description>システム開発 では、年齢を計算して表示することがよくあります。そこで今回は、図書館の利用者の年齢を表示してみましょう。利用者テーブルに、どんなフィールド(列)を追加すると、年齢を表示することができるか、考えてみてください。一番簡単に思い付くのは、「年齢」のフィールドを追加することです。しかし年齢は、時間が経てば変化します。リレーショナルデータベースでは、基本的に、計算して出せるデータは、テーブルに保存しません。クエリやSQLを使って、計算して表示します。ではどんなデータがあれ..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> では、年齢を計算して表示することがよくあります。<br /><br />そこで今回は、図書館の利用者の年齢を表示してみましょう。<br /><br />利用者テーブルに、どんなフィールド(列)を追加すると、年齢を表示することができるか、考えてみてください。<br /><br />一番簡単に思い付くのは、「年齢」のフィールドを追加することです。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-35.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-35-thumbnail2.gif" alt="system-35.gif" width="150" height="117" border="0" /></a><br /><br />しかし年齢は、時間が経てば変化します。<br /><br />リレーショナルデータベースでは、基本的に、計算して出せるデータは、テーブルに保存しません。クエリやSQLを使って、計算して表示します。<br /><br />ではどんなデータがあれば、年齢が計算できるでしょうか？<br /><br />そうですね。利用者の生年月日がわかれば、年齢は計算して出すことができます。したがって、利用者テーブルに追加するフィールドは、「生年月日」ということになります。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-36.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-36-thumbnail2.gif" alt="system-36.gif" width="150" height="96" border="0" /></a><br /><br />あとはクエリやSQLを使って、仮想テーブルを作成し、演算フィールドで年齢を表示することができます。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-37.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-37-thumbnail2.gif" alt="system-37.gif" width="150" height="86" border="0" /></a><br /><br />現在の年から誕生日の年を引けば、簡単に計算できますね。<br /><br />このような計算をするフィールドを、「演算フィールド」といいます。演算フィールドを使うことで、テーブルに無いフィールドを表示することができます。<br /><br />ただし、年齢を計算する時には注意が必要です。例えば、現在の日付が 2008年11月19日 だとします。<br /><br />利用者CDが 9 の「和田　恵」さんは、誕生日が12月11日なので、今年はまだ誕生日を迎えていません。西暦の年だけで単純計算すると、1歳多くなってしまいます。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-38.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-38-thumbnail2.gif" alt="system-38.gif" width="150" height="84" border="0" /></a><br /><br />したがって満年齢を計算する時は、もう少し複雑で、現在の日付が誕生日未満か以降かまで、考慮する必要があります。<br /><br />でも大丈夫です。クエリやSQLでは、複雑な計算も行なうことができます。<br /><br />以下は満年齢で計算した結果です。<br /><a href="http://syspg.up.seesaa.net/image/system-39.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-39-thumbnail2.gif" alt="system-39.gif" width="150" height="73" border="0" /></a><br /><br />これで今年の誕生日がまだの人の年齢も、ちゃんと表示することができました。<br /><br /><br />以上のように、リレーショナルデータベースの設計を行なう時は、出力したいデータをそのまま保存するのではなく、元になるデータと、その処理も考えて、設計する必要があります。<br /><br /><br />【ワンポイント】<br />今回のような計算は、「データベース側」でも「プログラム側」でもできます。<br /><br />基本的に、データベース側でできることはデータベースで行い、プログラム側では、処理結果を受け取って利用します。<br /><br />そのほうがプログラムが短くて済むので、ソースコードがシンプルになります。もちろんシステム開発の効率もアップします。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>年齢を計算する方法</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-35.gif" length="12770" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-36.gif" length="13833" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-37.gif" length="13351" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-38.gif" length="12430" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-39.gif" length="12352" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/109800190.html</link>
      <title>システム開発 さらにテーブルを正規化する。</title>
      <pubDate>Mon, 17 Nov 2008 16:31:57 +0900</pubDate>
            <description>システム開発 では、データベースの設計が上手くいっていると、プログラミングもスムーズに進みます。前回、テーブル設計を見直したことで、「利用者」と「書籍」の両テーブルに、データが繰り返し入力されるフィールドができました。そこで今回は、正規化の復習を兼ねて、もう一度考えてみましょう。どんなテーブルに分けて、どのようにフィールドを変更すれば、テーブルを正規化できるでしょうか。ヒントは、テーブルにまとめる時のコツと同じで、「繰り返し入力する可能性のあるものは、別のテーブルに分ける」こ..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> では、データベースの設計が上手くいっていると、プログラミングもスムーズに進みます。<br /><br />前回、テーブル設計を見直したことで、「利用者」と「書籍」の両テーブルに、データが繰り返し入力されるフィールドができました。<br /><br />そこで今回は、正規化の復習を兼ねて、もう一度考えてみましょう。<br /><br />どんなテーブルに分けて、どのようにフィールドを変更すれば、テーブルを正規化できるでしょうか。<br /><br />ヒントは、テーブルにまとめる時のコツと同じで、<br />「繰り返し入力する可能性のあるものは、別のテーブルに分ける」<br />ことです。<br /><br /><br />【1】利用者テーブルでは、「性別」が繰り返し入力されています。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-12.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-12-thumbnail2.gif" alt="system-12.gif" width="127" height="150" border="0" /></a><br /><br /><br />【2】書籍テーブルでは、「著者」と「出版社」は同じデータが入力される可能性があります。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-13.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-13-thumbnail2.gif" alt="system-13.gif" width="150" height="35" border="0" /></a><br /><br />・同じ著者が、何冊も本を書くことがある<br />・同じ出版社から、たくさんの本が出版される<br /><br />今回はレコード数が少ないので、実際には重複していませんが、「重複する可能性」があるなら、別のテーブルにすることを検討します。<br /><br /><br />それでは実際にテーブルを正規化してみましょう。<br /><br />【3】性別は別のテーブルに分け、性別CDで参照できるようにします。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-19.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-19-thumbnail2.gif" alt="system-19.gif" width="150" height="81" border="0" /></a><br /><br /><br />【4】著者と出版社も別のテーブルに分け、それぞれ CD で参照できるようにします。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-18.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-18-thumbnail2.gif" alt="system-18.gif" width="150" height="78" border="0" /></a><br /><br /><br />【5】貸出履歴テーブルに変更はありません。<br /><br />・貸出履歴<br /><a href="http://syspg.up.seesaa.net/image/system-14.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-14-thumbnail2.gif" alt="system-14.gif" width="150" height="128" border="0" /></a><br /><br />これでテーブルの正規化が完了しました。<br /><br />テーブルを正規化することで、同じデータを何度も入力する手間が省け、入力ミスも防げます。また保存時の容量も少なくて済みます。<br /><br /><br />【解説】<br />最終的な各テーブルの関係をまとめると、以下の図のようになります。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-25.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-25-thumbnail2.gif" alt="system-25.gif" width="150" height="116" border="0" /></a><br /><br />この図の関係がわかれば、リレーショナルデータベースを理解することができます。掴んで欲しいポイントを以下にまとめます。<br /><br />(1)「貸出履歴」テーブルがメインで、他のテーブルは、データを参照するために使われています。<br /><br />(2)利用者や書籍のテーブルからも、さらに他のテーブルを参照している点に注目してください。<br /><br />(3)貸出履歴テーブルの利用者CDを変更するだけで、氏名や性別は、自動的に変わります。CD が変われば、参照するデータが変わるわけですから、当然ですよね。<br /><br />(4)同様に、貸出履歴テーブルの書籍CDを変更すると、タイトルや著者、出版社が自動的に変わります。<br /><br />(5)逆に、利用者テーブルの変更点や、書籍テーブルの変更点は、すぐにクエリに反映されます。貸出履歴テーブル側では、何も変更する必要はありません。<br /><br />つまり、利用者の氏名の修正や、書籍のタイトルの修正は、一箇所だけで済むということです。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>さらにテーブルを正規化する</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-12.gif" length="12767" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-13.gif" length="9516" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-14.gif" length="10133" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-18.gif" length="18724" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-19.gif" length="9350" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-25.gif" length="20001" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/109785340.html</link>
      <title>システム開発 出力したい帳票から、テーブル設計を見直す。</title>
      <pubDate>Mon, 17 Nov 2008 10:19:36 +0900</pubDate>
            <description>システム開発 で、リレーショナルデータベースのテーブルを設計する時には、元々紙の帳票には無かった部分まで、考える必要があります。通常、業務システムの流れは、以下のようになります。入力画面 → 処理 → 出力画面(または帳票)前回は「入力画面」を中心に、テーブル設計を考えました。前回までのテーブル設計でも、図書館の「貸出履歴」をシステム化するという、最低限の目的は達成できます。しかし、データは蓄積するだけでは意味が無く、加工したり、集計することで、はじめて活きてきます。そこで今..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> で、リレーショナルデータベースのテーブルを設計する時には、元々紙の帳票には無かった部分まで、考える必要があります。<br /><br />通常、業務システムの流れは、以下のようになります。<br />入力画面 → 処理 → 出力画面(または帳票)<br /><br />前回は「入力画面」を中心に、テーブル設計を考えました。<br /><br />前回までのテーブル設計でも、図書館の「貸出履歴」をシステム化するという、最低限の目的は達成できます。<br /><br />しかし、データは蓄積するだけでは意味が無く、加工したり、集計することで、はじめて活きてきます。<br /><br />そこで今回は、「処理」や「出力画面」も考慮して、テーブルの設計を見直してみましょう。<br /><br />【1】例えば、貸出履歴のデータから、以下の帳票を出力したいとします。<br />・男女別貸出数<br />・著者ランキング<br />・出版社ランキング<br />・本の総額<br /><br />そうなると、これまで無かったフィールド(列)も考える必要があります。<br /><br />ポイントは、目的の出力を得るためには、どんなデータを、どう処理すれば実現できるか、考えることです。<br /><br /><br />【2】まず利用者側のテーブルを考えます。<br /><br />男女別貸出数は、「性別」のフィールドを加えるだけで、集計できます。<br /><br />・利用者<br /><a href="http://syspg.up.seesaa.net/image/system-21.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-21-thumbnail2.gif" alt="system-21.gif" width="127" height="150" border="0" /></a><br /><br /><br />【3】次は書籍側のテーブルです。<br /><br />著者ランキングは、「著者」フィールドがあれば可能です。出版社ランキングも「出版社」のフィールドがあればよいことになります。<br /><br />また、書籍の購入にかかった費用として、本の総額を出したい場合は、「価格」のフィールドを用意しておけば問題ありません。<br /><br />・書籍<br /><a href="http://syspg.up.seesaa.net/image/system-22.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-22-thumbnail2.gif" alt="system-22.gif" width="150" height="36" border="0" /></a><br /><br /><br />【4】貸出履歴のテーブルは、前回と同じです。変更点は何もありません。<br /><br />・貸出履歴<br /><a href="http://syspg.up.seesaa.net/image/system-14.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-14-thumbnail2.gif" alt="system-14.gif" width="150" height="128" border="0" /></a><br /><br /><br />【5】フィールド数を増やしたことで、さらに詳細なデータを参照できるようになりました。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-15.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-15-thumbnail2.gif" alt="system-15.gif" width="150" height="99" border="0" /></a><br /><br /><br />【6】複数のテーブルから、目的に合わせて、仮想テーブルを作成することもできます。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-33.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-33-thumbnail2.gif" alt="system-33.gif" width="150" height="50" border="0" /></a><br /><br />ここまで来ると、データをカウントすることが出来ます。<br /><br />また、表示するフィールドは、自由に選択できるため、不要なフィールドは、表示しなければよいだけです。<br /><br />このようなことが簡単にできることも、リレーショナルデータベースのメリットです。<br /><br /><br />【7】あとはクエリやSQLで集計すれば、目的の帳票を出力できます。<br /><br />・男女別貸出数<br /><a href="http://syspg.up.seesaa.net/image/system-29.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-29-thumbnail2.gif" alt="system-29.gif" width="150" height="87" border="0" /></a><br /><br />・著者ランキング<br /><a href="http://syspg.up.seesaa.net/image/system-30.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-30-thumbnail2.gif" alt="system-30.gif" width="150" height="89" border="0" /></a><br /><br />・出版社ランキング<br /><a href="http://syspg.up.seesaa.net/image/system-31.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-31-thumbnail2.gif" alt="system-31.gif" width="150" height="100" border="0" /></a><br /><br />・本の総額<br /><a href="http://syspg.up.seesaa.net/image/system-32.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-32-thumbnail2.gif" alt="system-32.gif" width="150" height="85" border="0" /></a><br /><br />＊貸出履歴のデータが少ないため、ランキングは同数になっていますが、データ数が増えれば、ちゃんと順位ごとに並べることができます。<br /><br />また、クエリやSQLについては、ここでは説明を省きます。詳しくは以下の講座をご覧ください。<br />・<a href="http://ms-access.seesaa.net/" target="_blank">Microsoft Access初心者入門講座</a><br />・<a href="http://access-sql.seesaa.net/" target="_blank">Access SQL初心者入門講座</a><br /><br /><br />これでとりあえず集計できるようになりました。でもこの状態のテーブルでは、十分とは言えません。<br /><br />既に気付いている人もいると思いますが、今回の変更で、「利用者」、「書籍」の両テーブルに、データが繰り返し入力されるフィールドができました。<br /><br />したがって、さらにテーブルを正規化する必要があります。<br /><br />正規化の続きは次回に解説しますが、自身のある人は、自分でも考えてみてください。どのようなテーブルを追加するとよいのでしょうか。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>帳票からテーブル設計を見直す</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-14.gif" length="10133" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-15.gif" length="20720" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-21.gif" length="12789" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-22.gif" length="8625" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-29.gif" length="4038" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-30.gif" length="6836" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-31.gif" length="7469" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-32.gif" length="4382" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-33.gif" length="13993" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/109605317.html</link>
      <title>システム開発 図書館の「貸出履歴」を例に、テーブルの正規化について学ぶ。</title>
      <pubDate>Thu, 13 Nov 2008 10:52:47 +0900</pubDate>
            <description>システム開発 で利用される、リレーショナルデータベースについて、理解を深めるため、簡単な例題で説明します。今回は、図書館の「貸出履歴」をシステム化する場合を考えてみましょう。リレーショナルデータベースの学習用に、システムをかなり簡略化しています。今まで紙の書類で行なっていた業務を、パソコンを使ってシステム化する時、表計算ソフトを使う方法と、データベースソフトを使う方法が考えられます。例えば Excel のような表計算ソフトでは、以下のようになります。Excel のメリットは、..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> で利用される、リレーショナルデータベースについて、理解を深めるため、簡単な例題で説明します。<br /><br />今回は、図書館の「貸出履歴」をシステム化する場合を考えてみましょう。<br /><br />リレーショナルデータベースの学習用に、システムをかなり簡略化しています。<br /><br />今まで紙の書類で行なっていた業務を、パソコンを使ってシステム化する時、表計算ソフトを使う方法と、データベースソフトを使う方法が考えられます。<br /><br />例えば Excel のような表計算ソフトでは、以下のようになります。<br /><a href="http://syspg.up.seesaa.net/image/system-08.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-08-thumbnail2.gif" alt="system-08.gif" width="150" height="71" border="0" /></a><br /><br />Excel のメリットは、紙の書類の形式を、そのままパソコン上に表現しやすいことです。そのため初心者でも、比較的簡単に扱うことができます。<br /><br />Access のようなデータベースソフトでも、上の図のように、一つのテーブルで管理することは出来ます。<br /><br />しかし、リレーショナルデータベースでは、データは意味のあるグループごとに、テーブルにまとめるのが一般的です。<br /><br />テーブルにまとめるコツは、「繰り返し入力する可能性のあるものは、別のテーブルに分ける」ということです。<br /><br />＊ただし日付は除く<br /><br /><br />それでは、実際に行なってみましょう。<br /><br /><br />【1】今回の例では、利用者の氏名や、書籍のタイトルが、何度も繰り返し入力されています。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-09.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-09-thumbnail2.gif" alt="system-09.gif" width="150" height="71" border="0" /></a><br /><br />何故なら、同じ人が何度も本を借りることがあるし、同じ本が何度も借りられることがあるからです。<br /><br /><br />【2】そこで、利用者と書籍を、別のテーブルに分けてみましょう。<br /><br />・利用者<br /><a href="http://syspg.up.seesaa.net/image/system-23.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-23-thumbnail2.gif" alt="system-23.gif" width="100" height="150" border="0" /></a><br /><br />・書籍<br /><a href="http://syspg.up.seesaa.net/image/system-24.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-24-thumbnail2.gif" alt="system-24.gif" width="150" height="62" border="0" /></a><br /><br /><br />【3】すると、貸出を記録するテーブルは、以下のように、数字の並びだけで済むようになります。<br /><br />・貸出履歴<br /><a href="http://syspg.up.seesaa.net/image/system-14.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-14-thumbnail2.gif" alt="system-14.gif" width="150" height="128" border="0" /></a><br /><br />このような作業を「正規化」と言います。<br /><br />文字列を入力したり、コピー＆ペーストするよりは、数字だけを入力したほうが、入力ミスが減らせます。<br /><br />また文字列より数字のほうが、ハードディスクに保存する時の容量が少なくて済むというメリットがあります。<br /><br /><br />【4】貸出履歴テーブルには、利用者CD と書籍CD しかありませんが、必要な時に、他のテーブルを参照することで、データがわかります。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-26.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-26-thumbnail2.gif" alt="system-26.gif" width="150" height="122" border="0" /></a><br /><br />・赤丸　利用者CD が「1」の人は「田中　愛」さんだとわかる。<br />・青丸　書籍CD が「3」の本は「村上式シンプル英語勉強法」だとわかる。<br /><br /><br />【5】また、複数のテーブルから、目的に合わせて、仮想テーブルを作成することもできます。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-17.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-17-thumbnail2.gif" alt="system-17.gif" width="150" height="64" border="0" /></a><br /><br />このように、リレーショナルデータベースでは、関連するデータごとにテーブルに分けて、必要な時に組み立てて利用します。<br /><br />一見、表計算ソフトより複雑ですが、扱うデータ数が多くなるほど、データベースのメリットが出てきます。<br /><br /><br />【解説】<br />(1)貸出No、利用者CD、書籍CD などは、「主キー」と呼ばれています。主キーとは、データベースの中から、レコードを「一意」に識別するためのものです。<br /><br />＊主キー(primary key)<br /><br />一意とは同じデータが他に無く、重複しないことです。主キーを設定したフィールド(列)には、同じデータを入力できません。<br /><br />したがって、利用者テーブルの主キーである利用者CD が「1」の人は、確実に「田中　愛」さんだと識別できるわけです。<br /><br />たとえ同姓同名の人がいても、利用者CD が「1」の人は、必ず1人しかいません。<br /><br />同様に、貸出履歴テーブルでも、それぞれのレコードを識別するために、主キーが必要なので、「貸出No」のフィールド(列)を追加しました。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-16.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-16-thumbnail2.gif" alt="system-16.gif" width="150" height="130" border="0" /></a><br /><br />これで、同じ日に、同じ人が、同じ本を借りても、履歴を識別できます。<br /><br />ちなみに、貸出履歴テーブル側にある 利用者CD と 書籍CD は、外部キーといい、データを参照するために使われるフィールドです。<br /><br />＊外部キー(Foreign Key)<br /><br />フィールド名は同じですが、どのテーブルにあるかによって、役割が変わり、呼び方が変わるわけです。(フィールド名は異なってもかまいません)<br /><br /><br />(2)リレーショナルデータベースでは、利用者テーブル側に無い「利用者CD」を、貸出履歴テーブル側で入力できないようにするなど、「制約」を設定することができます。<br /><br />制約を設定しておけば、矛盾したデータが入力されるのを防ぐことができます。<br /><br />実際のシステムでは、データをコンボボックスから選択するような方法になるので、さらに入力ミスが防げます。<br /><br />・コンボボックス<br /><a href="http://syspg.up.seesaa.net/image/system-27.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-27-thumbnail2.gif" alt="system-27.gif" width="150" height="143" border="0" /></a><br /><br />＊コンボボックスの機能は、プログラミング言語側で実現します。<br /><br />データベースには、システムを安全に運用できる機能が、他にもいろいろ用意されています。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>テーブルの正規化について学ぶ</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-08.gif" length="12621" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-09.gif" length="15943" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-14.gif" length="10133" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-16.gif" length="11920" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-17.gif" length="12680" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-23.gif" length="8346" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-24.gif" length="6908" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-26.gif" length="18134" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-27.gif" length="11625" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/109181005.html</link>
      <title>システム開発 リレーショナルデータベースとは？</title>
      <pubDate>Thu, 06 Nov 2008 16:33:26 +0900</pubDate>
            <description>最近の システム開発 では、ほとんどデータベースを利用します。データベースの種類はいろいろありますが、最も一般的なのは、リレーショナルデータベース(relational database)です。リレーショナルデータベースは、略して「RDB」とも呼ばれています。リレーショナルとは『関係』という意味です。リレーショナルデータベースは、個人や小規模オフィス向けでは、Access や FileMaker がよく使われています。商用向けでは、Oracle、Microsoft SQL S..</description>
            <content:encoded><![CDATA[
最近の <strong>システム開発</strong> では、ほとんどデータベースを利用します。<br /><br />データベースの種類はいろいろありますが、最も一般的なのは、リレーショナルデータベース(relational database)です。<br /><br />リレーショナルデータベースは、略して「RDB」とも呼ばれています。リレーショナルとは『関係』という意味です。<br /><br />リレーショナルデータベースは、個人や小規模オフィス向けでは、Access や FileMaker がよく使われています。<br /><br />商用向けでは、Oracle、Microsoft SQL Server、Sybase などがあります。またオープンソースとしては、MySQL や PostgreSQL などがよく利用されています。<br /><br />リレーショナルデータベースでは、データをテーブルと呼ばれる表で管理します。そして、表同士を特定のフィールド(列)で関係付けることで、目的を達成します。<br /><br />例えば、以下のような2つのテーブル(表)があったとします。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-02.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-02-thumbnail2.gif" alt="system-02.gif" width="150" height="42" border="0" /></a><br /><br />通常、データは意味のあるグループごとに、テーブルにまとめられます。「都道府県」や「市町村」といったグループです。<br /><br />1レコード(行)で、1組のデータを表します。<br /><a href="http://syspg.up.seesaa.net/image/system-04.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-04-thumbnail2.gif" alt="system-04.gif" width="150" height="42" border="0" /></a><br /><br />また、縦のフィールドには、必ず同じ種類のデータが並びます。<br /><a href="http://syspg.up.seesaa.net/image/system-05.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-05-thumbnail2.gif" alt="system-05.gif" width="150" height="42" border="0" /></a><br /><br />この時、右側のテーブルだけでは、どの都道府県にある市町村なのかわかりません。<br /><br />でも二つのテーブルには、関係のあるフィールドがあるため、左のテーブルから同じ番号の行を探せば、該当する都道府県名を調べることができます。<br /><br />盛岡市は岩手県にあることがわかる<br /><a href="http://syspg.up.seesaa.net/image/system-01.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-01-thumbnail2.gif" alt="system-01.gif" width="150" height="42" border="0" /></a><br /><br />さらに二つのテーブルを結合して、仮想テーブルを作ることも可能です。<br /><br /><a href="http://syspg.up.seesaa.net/image/system-03.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-03-thumbnail2.gif" alt="system-03.gif" width="150" height="107" border="0" /></a><br /><br />上記のようなことをしたい時、Access ではクエリという機能を使います。クエリを使うと、テーブルの結合や抽出、集計などを、自由自在に行なうことができます。<br /><br />他のデータベースでは、SQLというデータベースを操作するための言語を使って、データを利用するのが一般的です。<br /><br />SQL文の例<br /><div class="pg"><br />SELECT PREF_CD, PREF_NAME <br />FROM T01Prefecture;<br /></div><br /><br />もちろん Access でも SQL言語を使用することができます。Access では、クエリ機能とSQL言語が、表裏一体の関係になります。<br /><br />クエリをデザインすると、<br /><a href="http://syspg.up.seesaa.net/image/system-06.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-06-thumbnail2.gif" alt="system-06.gif" width="150" height="141" border="0" /></a><br /><br />自動的にSQL文が作成される仕組みになっています。<br /><a href="http://syspg.up.seesaa.net/image/system-07.gif" target="_blank"><img src="http://syspg.up.seesaa.net/image/system-07-thumbnail2.gif" alt="system-07.gif" width="150" height="78" border="0" /></a><br /><br />以上がリレーショナルデータベースの基本的な仕組みです。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>■リレーショナルデータベースとは？</category>
      <author>mslab</author>
                  <enclosure url="http://syspg.up.seesaa.net/image/system-01.gif" length="7233" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-02.gif" length="7125" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-03.gif" length="11589" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-04.gif" length="8216" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-05.gif" length="8452" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-06.gif" length="18462" type="image/gif" />
                              <enclosure url="http://syspg.up.seesaa.net/image/system-07.gif" length="6540" type="image/gif" />
                            </item>
        <item>
      <link>http://system.pgtop.net/article/108671375.html</link>
      <title>EUC エンドユーザコンピューティングの利点について。</title>
      <pubDate>Mon, 27 Oct 2008 10:30:26 +0900</pubDate>
            <description>システム開発 は、SEやプログラマーだけが行なうものではありません。最近は EUC(エンドユーザコンピューティング)が注目されています。エンドユーザとは、開発したシステムを使って、業務を行なう利用者のことです。通常はシステムを利用するだけです。＊End User Computingしかし最近は、Excel や Access など、高機能なソフトウェアが普及したこともあり、エンドユーザが、自らプログラミングできる環境が整ってきました。システム開発では、業務とプログラミングに関す..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> は、SEやプログラマーだけが行なうものではありません。<br /><br />最近は EUC(エンドユーザコンピューティング)が注目されています。エンドユーザとは、開発したシステムを使って、業務を行なう利用者のことです。通常はシステムを利用するだけです。<br /><br />＊End User Computing<br /><br />しかし最近は、Excel や Access など、高機能なソフトウェアが普及したこともあり、エンドユーザが、自らプログラミングできる環境が整ってきました。<br /><br />システム開発では、業務とプログラミングに関する、両方の知識が必要です。<br /><br />業務については、エンドユーザのほうがよく知っています。そのエンドユーザが、プログラミングできるようになると、活きたシステムが作れます。<br /><br />せっかく高価で高機能なシステムを導入しても、使われないことがあります。改良するにもコストがかかります。<br /><br />それよりは、機能面でそれほど優れていなくても、ユーザーが自分で改良できたほうが、本当に役立つシステムになります。<br /><br />先日、土曜日の朝の番組で、「地産地消」を取り上げていたのですが、もう一歩進めて、「自産自消」というのはどうかと提案していました。<br /><br />地産地消とは、地域で作られた農水産物を、その地域で消費することです。<br /><br />「自産自消」は、自分で作って、自分で消費する生活スタイルです。ベランダや家庭菜園で作った野菜を、家族や友人、親戚に食べさせてあげることができます。<br /><br />自分で作るのですから、どんな野菜を育てても自由です。肥料や無農薬にこだわることもできます。<br /><br />また、売り物ではないので、多少の虫食いがあっても OKです。むしろ虫が食べても大丈夫だということは、それだけ安全です。<br /><br />趣味が高じて、ちょっとしたカフェがオープンできるかもしれません。<br /><br />システム開発もちょうど同じです。SEやプログラマーになって、専門的に行なうこともできます。でも自分や職場など、小さな範囲で使うためだけのシステムを開発する道もあるのです。<br /><br />エンドユーザコンピューティングとは、まさに「自産自消」です。エンドユーザが自らシステムを開発し、自分で使います。そして運用や保守にも積極的に関わります。<br /><br />もし作ったシステムが良いものなら、利用範囲が広がり、部署や社内中で使われることになるかもしれません。あるいは他社に販売できるレベルになる可能性だってあるのです。<br /><br />私は「自産自消」でシステム開発できる人が、もっと増えて欲しいと願い、この無料講座を開設しました。小さなシステムなら、誰でも作れるようになります。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>エンドユーザコンピューティング</category>
      <author>mslab</author>
                </item>
        <item>
      <link>http://system.pgtop.net/article/108544886.html</link>
      <title>システム開発で失敗しないコツについて。</title>
      <pubDate>Fri, 24 Oct 2008 16:00:57 +0900</pubDate>
            <description>システム開発 で、開発者(SEやプログラマー)と利用者(ユーザー)が同じ人の場合は、失敗することはありません。何故なら自分が使えないようなシステムを、わざわざ作ることは無いからです。自分自身の業務なので、システムを作りながら軌道修正することは、いくらでもできます。技術的にできないことはあるかもしれませんが、作ったシステムに不満は出ないと思います。しかし、開発者と利用者が異なる場合は、「イメージと違う！」ということが、たまに起こります。失敗原因の多くは、開発工程の初期段階で、開..</description>
            <content:encoded><![CDATA[
<strong>システム開発</strong> で、開発者(SEやプログラマー)と利用者(ユーザー)が同じ人の場合は、失敗することはありません。何故なら自分が使えないようなシステムを、わざわざ作ることは無いからです。<br /><br />自分自身の業務なので、システムを作りながら軌道修正することは、いくらでもできます。技術的にできないことはあるかもしれませんが、作ったシステムに不満は出ないと思います。<br /><br />しかし、開発者と利用者が異なる場合は、「イメージと違う！」ということが、たまに起こります。失敗原因の多くは、開発工程の初期段階で、開発者とユーザーの間に、認識の違いがあったためです。<br /><br />開発者は技術の専門家で、利用者はその業務の専門家です。もちろん両方に詳しい人が作るのが一番良いのですが、普通はどちらかが歩み寄ることになります。<br /><br />つまり、開発者が業務について学ぶか、ユーザーがシステム開発に詳しくなるかです。一般的にシステムを外注する場合は、前者のパターンです。<br /><br />開発者と利用者の両者にとって、システム開発で失敗しないためには、初期の打ち合わせが非常に重要です。<br /><br />開発者の視点から見ると、打ち合わせの中で、いかにユーザーのシステムに対するイメージを引き出すかが勝負です。<br /><br />逆にユーザーの視点から見ると、自分が欲しいシステムのイメージを、いかに開発者に伝えるかということになります。<br /><br />この時に頭に入れておきたいことがあります。それは、<br />・ユーザーにしかわからない画面イメージがある<br />・開発者でなければわからない画面イメージがある<br />ということです。<br /><br />どんなシステムを作りたいのかは、ユーザーにしかわかりません。でもシステムに詳しくないユーザーの場合、システム自体をイメージすることができません。したがって、どういうふうに伝えたらいいのか分からないのです。<br /><br />また一般的なシステムの画面構成というのは、開発者にしかわからないものです。<br /><br />そこで両者で協力して、システムのイメージを作り上げる必要があります。<br /><br />通常、業務システムは、大体以下の流れになります。<br />入力画面 → 処理 → 出力画面(または帳票)<br /><br />「入力」と「出力」がユーザーの満足するものであれば、システム開発で失敗する可能性はかなり低くなります。<br /><br />そこで最初は手書きでもよいので、ユーザーがわかる範囲で、画面のイメージをデザインしてくれれば、開発者としては非常にやりやすいです。<br /><br />または、現在使っている書類に書き込んで、イメージを伝えてもかまいません。<br /><br />どんなデータを入力して、どんな出力が得たいのかがわかれば、開発者はそれにシステム上で必要なボタンなどをプラスして、ユーザーに画面イメージを伝えやすくなります。<br /><br />もちろん「処理」も大事ですが、システム上はユーザーから見えない部分になります。<br /><br />一度イメージの土台ができれば、今度はユーザーのほうから、「ここはこうしたい」といった要望が出てくるようになります。<br /><br />そして最終的には、「そう！こんなものを作りたかったんです。」とか、「イメージ通りです。」といってもらえます。<br /><br />システム開発者は、『聞き上手』になって、ユーザーの漠然としたイメージを、具体化できるようになりましょう。<br /><br />【ワンポイント】<br />開発者も全ての分野に詳しいわけではなく、得意分野があるものです。<br /><br />もし開発者が、システム化の対象となる業務に詳しい場合は、最初から開発者が提案しても大丈夫です。<br /><br /><a name="more"></a>

]]><![CDATA[
]]></content:encoded>
            <category>システム開発で失敗しないコツ</category>
      <author>mslab</author>
                </item>
      </channel>
</rss>

