<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Ｅラーニング</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/" />
    <link rel="self" type="application/atom+xml" href="http://e-learning.sijam.com/atom.xml" />
   <id>tag:e-learning.sijam.com,2009://18</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18" title="518)Ｅラーニング" />
    <updated>2006-08-27T15:25:35Z</updated>
    <subtitle>システム開発をする上で必要なSQL、プログラミングの勉強をするためのe-learning（イーラーニング）サイトです</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type  3.31-ja</generator>
 
<entry>
    <title>第一回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_5/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=49" title="第一回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.49</id>
    
    <published>2006-06-14T03:40:42Z</published>
    <updated>2006-08-27T15:00:38Z</updated>
    
    <summary>SQLの概要に関する講座･･･SQLとは何の事？</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>SQLとは</h3>
<ul>
    <li>SQL･･･RDBの定義や、表の操作を行う言語 </li>
    <li>RDB(Relational Database)･･･Dataを二次元（列と行）の形式でManagementしたDatabase 一次元：住所や名前などを全てまとめてしまう三次元：X,Y,Zとあり、コアな分野（細胞など）で使用される </li>
    <li>DBMS(Database Management System)･･･DatabaseのManagement を行うSystemで、さまざまな機能を持ち合わせたSoftwareの総称 </li>
</ul>
<ol>
    <ol>
        <li>Oracle：Optimizer（最適化を行うもの）に指示が可能</li>
        <li>DB2：日本IBMがOracleと仲がよく、日本では流行っていない</li>
        <li>SQL-Server：Microsoft社のRDBMS(当社では使用頻度が大きい) </li>
        <li>MySQL：フリーソフト</li>
        <li>PostgreSQL：MySQLより大規模な構築をする時に使用する</li>
        <li>MS-Access：Microsoft社のDBMS(Microsoft Officeの中に含まれていることもある)</li>
    </ol>
</ol>
<ul>
    <li>&nbsp;RDBMS(Relational Database Management System)･･･厳密に言うと、「DBMSにRelationalな機能を持ち合わせたものがRDBMS」という意味だが、DBMSにRelationalな機能は当たり前なので、DBMS=RDBMSとして捉えられている。 </li>
</ul>
<h3>SQLの変遷</h3>
<ol>
    <li>ANSI(American National Standards Institute)とISO(International Organization for standardization)が共同で制定 </li>
    <li>SQL92(SQL2)&rarr;SQL99(SQL3) </li>
    <li>最新バージョンのDBMSは、ほぼ全てSQL3に準拠</li>
    <li>DBMSによって実際のSQLは異なる </li>
</ol>
<h3>DDL(データ定義言語)とDML(データ操作言語)</h3>
<ol>
    <li>ＤＤＬ : 既存のテーブルから新たにテーブルを作る。種類がDMLより多い。
    <ul>
        <li>CREATE TABLE : 表の定義 </li>
        <li>CREATE VIEW : ビューの定義 </li>
        <li>GRANT : アクセス権の設定 </li>
    </ul>
    </li>
    <li>ＤＭＬ : テーブルの中を操作することが出来る。
    <ul>
        <li>SELECT : データの抽出 </li>
        <li>INSERT : データの挿入 </li>
        <li>UPDATE : データの更新 </li>
        <li>DELETE : データの削除 </li>
    </ul>
    </li>
</ol>
<h3>SQL実行の仕組み</h3>
<ol>
    <li>構文解析 </li>
    <li>実行プラン作成、最適化<br />
    ＜最適化とは？＞ <br />
    WHERE文で、ありそうなデータを順番に記述すると実行が早い(DBMSはデータを見ないため)なるべく早い方法を自分で見つける必要がある統計情報が古いままではなく、なるべく１日に一回、最新バージョンを取得する必要があるだが、どんどん進化していくと、人によって余計な動作まで追加されてしまうので賛否両論 Optimizerで機能を変えることができるものもある(Oracleなど) </li>
</ol>
<h3>射影、選択、結合</h3>
射影 : 列を抽出選択 : 行を抽出結合 : TABLE同士を合わせる]]>
        
    </content>
</entry>
<entry>
    <title>第二回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=52" title="第二回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.52</id>
    
    <published>2006-06-14T07:38:16Z</published>
    <updated>2006-08-27T15:12:28Z</updated>
    
    <summary>SQLの初歩に関する講座(前半)･･･SELECTとは？結合演算子とは？</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>DBMS概要：DBMS(Database Management System)はDatabaseを効率よく構築、運用するためのSoftwareSystem</h3>
<ol>
    <li>機能
    <ul>
        <li>DB定義機能&hellip;SCHEMAの定義を支援する機能。ＤＤＬ，ＤＳＤＬ，ＤＭＣＬが該当。</li>
        <li>ＤＢ操作機能&hellip;ＤＢの構築、再構築、操作を支援する機能。利用者によるＤＢの操作を支援するＤＭＬの機能。</li>
        <li>ＤＢ制御機能&hellip;保全、機密保護、排他制御、障害回復、ACCESS制御機能。共有資源管理。</li>
        <li>TRANSACTION管理機能&hellip;複数のTRANSACTIONの実行を矛盾なく制御。TRANSACTINごとにDATAとPROGRAMを切り離す。</li>
        <li>USERVIEW機能&hellip;TABLEの一部を取り出し、一つのTABLEとして見せる機能。</li>
    </ul>
    </li>
    <li>種類
    <ul>
        <li>C/S型ＤＢＭＳ&hellip;調査中</li>
        <li>Personal型DBMS&hellip;調査中 </li>
    </ul>
    </li>
</ol>
<h3>TABLE操作</h3>
<ul>
    <li>射影・選択演算：SELECT文&hellip;作成されたTABLEから、DATAの検索</li>
    <li>並び替え・集計など、いろいろな情報を取り出すSQL文</li>
    <li>射影&hellip;TABLEから、必要な列を取り出す方法</li>
    <li>FIELDに別名を付ける&hellip;集計、GROUP化、複数TABLEからの射影で同じ名前のFIELDがある場合などに、FIELDに分かりやすい名前を付けることがあります。</li>
    <li>DISTINCT&hellip;選択された行に重複がある場合、そのうち１行のみ表示・式（算術演算　等）&hellip;FIELDには、演算結果も指定できます。式を記述した場合、FIELD名がSYSTEM側で付けられてしまうのでASを使用して、FIELDの列名を指定する必要があります。</li>
    <li>SELECT&hellip;TABLEから条件を満たす行を抽出すること</li>
    <li>IS NULL&hellip;FIELDにDATAがないこと。空文字(&quot;&quot;)とは別。</li>
    <li>BETWEEN A AND B&hellip;WHERE条件の中に、範囲指定をしたい場合はBETWEEN A AND B を使用する</li>
    <li>IN 演算子&hellip;WHERE条件の中で、条件が複数個ある場合に使用</li>
    <li>並び替え（SORT）&hellip;ORDER BY [FIELD_NAME] ASC/DESC 選択した行を並べ替えして表示します。ASC(昇順)/DESK（降順)を省略すると昇順になります。</li>
    <li>GROUP化(GROUP BY HAVING)&hellip;選択された行をGROUP化します。
    <ul>
        <li>GROUP BY：GROUP化の基準となる列の指定。</li>
        <li>HABING：GROUP化された列についての条件指定（※単独では使用しない）</li>
    </ul>
    </li>
    <li>GROUP関数&hellip;AVG(n),COUNT(*),COUNT(式),MAX(n),MIN(n),SUM(N) </li>
</ul>
<h3>競合演算：二つ以上の表、又はVIEWを競合</h3>
<ul>
    <li>直積&hellip;TABLE同士の全ての組み合わせが結果として戻ってくる</li>
    <li>内部結合（等価結合／等結合）&hellip;結合条件に等価演算子を含む結合</li>
    <li>自己結合&hellip;同一の表の結合で、ＦＲＯＭ句に、二階同じ表名を指定する。</li>
    <li>外部結合（左結合／右結合）&hellip;二つ以上の表を結合する場合に、条件に合わなくても一方の列、または両方を表示する。ＳＱＬ９９で企画化されるまでは、外部結合はＤＢＭＳによって異なる。通常OUTER JOIN句を使用する。
    <ol>
        <li>LEFT OUTER JOIN&hellip;一致する条件が右（JOIN句）に存在しなくても左（FROM句）を表示する</li>
        <li>RIGHT OUTER JOIN&hellip;一致する条件が左（JOIN句）に存在しなくても右（FROM句）を表示する</li>
        <li>FULL OUTER JOIN&hellip;一致する条件が存在しなくても両方とも表示する</li>
    </ol>
    </li>
</ul>]]>
        
    </content>
</entry>
<entry>
    <title>第三回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_1/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=53" title="第三回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.53</id>
    
    <published>2006-06-14T07:44:15Z</published>
    <updated>2006-08-27T16:20:14Z</updated>
    
    <summary>SQLの初歩に関する講座(後半)･･･副問い合わせとは？データ操作とは？ 
</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>副問い合わせ</h3>
<ul>
    <li>副問い合わせとは･･･クエリの中にクエリを埋め込むクエリのことで、サブクエリともいう。 <br />
    ※FROM句で使われることが多い。MYSQLではサポートされていない。 <br />
    SELECT &lt;列名&gt; FROM (SELECT &lt;列名&gt; FROM &lt;表名&gt; WHERE &lt;条件&gt; AS X </li>
</ul>
<h3>副問い合わせ(集合演算子)</h3>
<p>集合演算子を使用することにより、2つの問い合わせの結果を1つにまとめることが可能。ただし、２つのSELECT文の対応する列の数とデータ型は一致していなければならない。 </p>
<p>◆UNION(和集合) 各問い合わせによって返される全ての行(重複行は含まない) <br />
SELECT文 UNION SELECT文 </p>
<p>◆UNION ALL 各問い合わせによって返される行の全て(重複行を含む) <br />
SELECT文 UNION ALL SELECT文 </p>
<p>◆INTERSECT(積集合) 両方の問い合わせによって返される全ての行(重複行は含まない) <br />
ACCESSでは使用できないが、INNER JOIN(内部結合)で積集合が行える。 ※あまり使われることがない。 </p>
<p>◆MINUS･EXCEPT(差集合) 最初の問い合わせによって返される行で2番目の問い合わせで返されない行 ACCESSでは使用できないが、LEFT OUTER JOIN(外部結合)で差集合が行える。 </p>
<h3>データ操作</h3>
<p>データ操作とは･･･表にデータを挿入、更新、削除を行う。以下のSQL分で行う。 </p>
<p>◆INSERT　データの挿入 </p>
<p>◆UPDATE　データの更新 </p>
<p>◆DELETE　データの削除 </p>
<p>◆SELECT　データの抽出　※ここでは触れない。 </p>
<ol>
    <li>データの挿入 INSERT INTO 表名(列名1,列名2,･･･列名n)<br />
    ※列名は省略できるが、省略しない方が良い。<br />
    VALUES(データ1,データ2,･･･データn) 結果：1行追加される。 </li>
    <li>データの更新 UPDATE 表名 SET 列名 = データ値,･･･列名n = データ値 WHERE &lt;条件&gt; 結果：WHERE条件の行が更新される。 <br />
    ※WHERE条件を記述しないと全行が更新されてしまうため、注意を怠らない。 </li>
    <li>データの削除 DELETE FROM 表名　WHERE &lt;条件&gt; 結果：WHERE条件の行が削除される。 ※WHERE条件を記述しないと全行が削除されてしまうため、注意を怠らない。 </li>
</ol>
<h3>各種オブジェクトの取り扱い</h3>
<ol>
    <li>表(TABLE)の作成表を作成するには以下のものを指定する。<br />
    ◆表名 <br />
    ◆列名 <br />
    ◆列のデータ型 <br />
    ◆制約 <br />
    CREATE TABLE 表名(列1 データ型,列2 データ型,･･･列n データ型) ※データ型はDBMSによって異なる。 </li>
    <li>表(TABLE)の削除<br />
    DROP TABLE 表名 </li>
    <li>表名の変更<br />
    RENAME 元の表名 TO 新しい表名 ※ACCESSではサポートされていない。 </li>
    <li>表(TABLE)の変更<br />
    ◆列の追加 ALTER TABLE 表名 ADD 列名1 データ型<br />
    ◆列の変更 ALTER TALE 表名 ALTER COLUMN 列名1 データ型 </li>
</ol>
<h3>制約(CONSTRAINT)</h3>
<p>制約とは･･･データベースの実表に無効なデータを入力されないようにする為、整合性制約を使用することが出来きる。整合性制約を定義することにより、データベースの情報に関連付けるビジネスルールを設定することができる。制約は、データベース内で入力または更新されたときにデータチェックし、制約のルールに従わないデータが入力されないようにする。 正しいデータ及びデータ関係が保たれていることを「データ整合性」が保たれているという。 </p>
<ol>
    <li>整合性制約を用いる利点・宣言が容易である。・規則を集中管理できる。
    <ul>
        <li>アプリケーション開発生産性を高められる。 </li>
        <li>制約の使用禁止／使用可能により柔軟性が持てる。 </li>
    </ul>
    </li>
    <li>整合性制約の種類
    <ul>
        <li><strong>NOT NULL　　整合性制約</strong> </li>
        <li><strong>UNIQUE　　キー整合性制約</strong> </li>
        <li><strong>PRIMARY KEY　　整合性制約</strong> </li>
        <li><strong>CHECK　　整合性制約</strong> </li>
        <li><strong>FOREIGN KEY　　参照整合性制約<br />
        </strong>CREATE TABLE 表名 ( 列名 データ型 [CONSTRAINT 制約名] 制約の種類 ････ )
        <ul>
            <li>NOT NULL整合性制約 <br />
            NULLは単一の列に対して定義される規則で、値がないという状態を表します。このNULLの入力を許すか、禁止するかを指定します。 NOT NULL制約はNULLの入力を禁止します。 </li>
            <li>UNIQUE キー整合性制約<br />
            (一意の列値) 列(または複数の列の組み合わせ)に対して定義される規則で、その列(または列の組み合わせ)に含まれる値が一意である場合に限り行の挿入･更新を許可する。 </li>
            <li>PRIMARY KEY 整合性制約<br />
            表の中の行を一意に特定できるような列(または列の組み合わせ)の中で主たるものに対して定義される制約。この制約を設定すると自動的に UNIQUE と NOT NULL 制約が付加される。 </li>
            <li>CHECK 整合性制約<br />
            明示的に条件を定義した制約で、条件を満たす値のみ入力が許可される。 </li>
            <li>FOREIGN KEY 参照整合性制約<br />
            リレーショナルデータベースでは、表と表との間を共通の列で関連付けを行うことができる。この場合、列の関係の規則が守られなければならない。参照整合性規則により関係が保たれることが保証される。 また、参照整合性には参照先のデータに対してどのような操作を許可するか、そしてその操作によって依存データがどのような影響を受けるかについて指定する規則が含まれる。 </li>
        </ul>
        </li>
        <li><strong>RESTRICT(制限)</strong> <br />
        参照先のデータの更新・削除を禁止 </li>
        <li><strong>CASCADE(カスケード) <br />
        </strong>参照先のデータが更新されると対応する全ての依存データもそれに応じて更新され、参照先の行が削除されると対応する全ての依存行も削除される。 </li>
    </ul>
    </li>
</ol>]]>
        
    </content>
</entry>
<entry>
    <title>第四回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_2/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=54" title="第四回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.54</id>
    
    <published>2006-06-14T07:48:46Z</published>
    <updated>2006-08-27T15:59:02Z</updated>
    
    <summary>データ型に関する講座･･･SQLServerにはどんなデータ型がある？</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>文字</h3>
<ol>
    <li>４０００文字まで格納可能
    <ul>
        <li>NVARCHAR&hellip;unicordのDATAを行っているので、?(立方)をVARCHARには格納できない。しかし㎡は格納可能。</li>
        <li>NCHAR&hellip; </li>
    </ul>
    </li>
    <li>８０００文字まで格納可能。それ以上はTEXT型（２００億まで格納可能)
    <ul>
        <li>VARCHAR&hellip;五文字から二文字へ変更される（可変型）</li>
        <li>CHAR&hellip;五文字の中に二文字が格納される(固定型) ※五文字を指定して、二文字を格納した場合 </li>
    </ul>
    </li>
</ol>
<h3>数値型</h3>
<ul>
    <li>TINYINT&hellip;１桁</li>
    <li>SMALLINT&hellip;２桁</li>
    <li>INT&hellip;４桁</li>
    <li>NUMERIC&hellip;９桁（指定した通りの精度を持つ）</li>
    <li>DECIMAL&hellip;９桁（実装により、指定以上の精度のデータを持つ場合もある）</li>
    <li>BIT&hellip;1 OR 0</li>
    <li>RealFloat&hellip;小数を可変</li>
    <li>DECIMAL&hellip;整数５桁、小数２桁 </li>
</ul>
<h3>その他</h3>
<ul>
    <li>DATETIME&hellip;日付型 </li>
</ul>
<h3>ＮＵＬＬ</h3>
<ul>
    <li>ＮＵＬＬの意味&hellip;NULLと空文字 ('') とは異なる。</li>
    <li>注意&hellip;数値や文字とは、比較または計算ができない。&rarr;「NULL+5＝NULL」なので変換する必要がある</li>
    <li>IS NULL( Field名 , 置き換える値 )&hellip;CASEでも置換可能だが、より簡単なのがIS NULL </li>
    <li>NVL(Field名,置き換える値)&hellip;Oracleのみ使用可能</li>
    <li>NULLIF(式１,式２)&hellip;二つの式が等しい時にNULLを返す </li>
    <li>CAST(変換する文字列 AS 変換後の型)&hellip;文字列を変換する </li>
    <li>CONVERT( 変換後の型、変換する値、(変換スタイル) )&hellip;変換スタイルとは、[DATETIME/SMALLDATETIME]型のDataを、文字列Dataに変換時での日付形式を指定 </li>
</ul>
<h3>照合順序</h3>
<ul>
    <li>個々の文字の並べ替え、比較するときの規則(初期設定はJapanese_CI_AS)を指定する <br />
    &rarr;CI：大文字小文字を区別する。 <br />
    &rarr;AS：ひらがな、カタカナを区別しない </li>
</ul>]]>
        
    </content>
</entry>
<entry>
    <title>第五回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_4/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=55" title="第五回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.55</id>
    
    <published>2006-06-14T07:54:13Z</published>
    <updated>2006-08-27T15:52:56Z</updated>
    
    <summary>SQLの実践に関する講座･･･実際にSQLを作成、記述する時の注意点とは？</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>記述の注意点</h3>
<p>◆SQL文のキーワードは大文字で記述するのが望ましい。一般的に大文字で記述されることが多いため。小文字で記述されたものは内部的に大文字に変換されている可能性があるため。 </p>
<p>◆テーブル名を記述する時はDBで定義されている名前と全く同じにする。(大文字、小文字も合わせる) DBの設定によっては、大文字、小文字が区別されるため </p>
<p>◆改行を利用して見易くする以下のSQL分を見て、どちらが見易いか？ </p>
<ol>
    <li>SELECT DEPTNO, COUNT(EMPNO) AS EMP_CNT FROM EMP GROUP BY DEPTNO </li>
    <li>SELECT<br />
    DEPTNO, COUNT(EMPNO) AS EMP_CNT <br />
    FROM　EMP <br />
    GROUP BY　DEPTNO </li>
</ol>
<h3>SELECTを行うときの注意(配慮)</h3>
◆結合して抽出する場合、サブクエリでグループ化等して、対象とするデータを絞り込んでから行う。
<h3>デザインによるSQL作成</h3>
<ul>
    <li>SQLServer等のデザイン画面でViewを利用してSQLを作成する方法がある。</li>
    <li>実際に自分が作成したSQL文のテストを行う等にも利用できる。 </li>
</ul>
<h3>サブクエリを利用したINSERT、UPDATE、DELETE</h3>
<p>◆INSERT SELECT 挿入クエリを使用し、異なるテーブル間または同一テーブル内で行をコピーできる。<br />
INSERT INTO &lt;表名&gt; (&lt;列名1&gt;,&lt;列名2&gt;,･･･) SELECT &lt;列名1&gt;,&lt;列名2&gt;,･･･ FROM &lt;表名&gt; WHERE &lt;条件&gt; </p>
<p>◆UPDATE FROM サブクエリと結合されたデータが更新される。 <br />
UPDATE &lt;表名1&gt; SET = &lt;列名&gt; FROM &lt;表名1&gt; INNER JOIN &lt;表名2&gt; ON &lt;結合条件&gt; </p>
<p>◆DELETE FROM サブクエリと結合されたデータが削除される。 <br />
DELETE &lt;表名1&gt; FROM &lt;表名1&gt; INNER JOIN &lt;表名2&gt; ON &lt;結合条件&gt;</p>]]>
        
    </content>
</entry>
<entry>
    <title>第六回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_3/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=56" title="第六回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.56</id>
    
    <published>2006-06-14T08:02:37Z</published>
    <updated>2006-08-27T15:49:23Z</updated>
    
    <summary>正規化に関する講座･･･第1正規形、第2正規形、第3正規形とは？</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>正規化とは？</h3>
冗長性を省く（同じものが複数の行に隔てる場合や、算出可能なものは省く） <br />
&darr;<br />
記憶容量の節約 <br />
&darr; <br />
プログラムで扱いやすくなる
<h3>正規形の種類</h3>
<ul>
    <li><strong>非正規形<br />
    </strong>まったく正規化が行われていない状態のテーブルを示す。受注伝票などを一つのテーブルにしたのは、非正規化のテーブルである。 </li>
    <li><strong>第一正規形</strong><br />
    冗長性を省かず、CDの内容も全て一つのTableに組み込まれた「非正規形」を、Primary Keyに基づいて、繰り返しの部分を別のTableに記述する。 </li>
    <li><strong>第二正規形</strong><br />
    第一正規形で新たな従属関係が得られそうなフィールドをさらに、分割する。 </li>
    <li><strong>第三正規形</strong><br />
    Primary Keyではないため、第二正規形ではしなかった文も含め、全て正規化する。 </li>
    <li><strong>ボイスコッド正規形</strong><br />
    第三正規形になっても更新不整合が含まれる場合があるので修正</li>
    <li><strong>第四正規形</strong><br />
    ボイスコッドの正規化の条件を満たした表を分割してできる表 </li>
    <li><strong>第五正規形</strong><br />
    第五正規形は第四正規形を満たした状態でなおかつ更新不整合が生じる場合 </li>
</ul>
<h3>長所</h3>
<ul>
    <li>記憶容量の節約</li>
    <li>反映が早い（例：商品が変われば、商品マスタを変えるだけで済む）</li>
    <li>資格で把握しやすい（しかし、あまり正規化をすると管理者によっては好まれない場合があるので、状況によって判断する） </li>
</ul>
<h3>短所</h3>
<ul>
    <li>メンテナンスが面倒になる</li>
    <li>そのときのデータは残らない</li>
    <li>参照は遅くなる（四つテーブルがあれば、状況によっては四つともJOINしなければならないため） </li>
</ul>
<p>※例外として、正規化に逆らう場合もある（商品マスタに存在しない商品は登録できない場合があるため）</p>]]>
        
    </content>
</entry>
<entry>
    <title> 第七回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_6/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=57" title=" 第七回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.57</id>
    
    <published>2006-06-14T08:06:12Z</published>
    <updated>2006-08-27T15:43:53Z</updated>
    
    <summary>ダイアグラムとは</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>ダイアグラムとは</h3>
<ul>
    <li>表と表を関連付けると時に利用できる。表と表の関連をＧＵＩで確認することが出来る。表と表の関連付けをリレーションという。</li>
</ul>]]>
        
    </content>
</entry>
<entry>
    <title>第八回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_7/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=58" title="第八回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.58</id>
    
    <published>2006-06-14T08:14:00Z</published>
    <updated>2006-08-27T15:42:49Z</updated>
    
    <summary>ストアドプロシージャに関する講座･･･ストアドプロシージャとは？</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>STORED PROCEDUREとは</h3>
<ul>
    <li>DBに対する一連処理を一つのPROGRAMにまとめて(PROCEDURE)、RDBMSにSTORE（保存) したもの。</li>
    <li>複雑なSQL文の呼び出しを論理的に一つの処理単位にまとめて、簡単にその名前を呼び出せるようになっている。</li>
    <li>一つのPROCEDUREには、複数のSQL文が含まれていたり、繰り返しの条件分岐などの制御構造を持つこともあります。 </li>
    <li>また、引数をとって処理をしたり、処理結果を返すこともできる。</li>
    <li>STORED PROCEDUREを利用することで、USERは必要に応じて、その名前と引数を指定して呼び出すだけでよく、DBに対する複雑な処理はRDBMSに任せることができる。 </li>
</ul>
<h3>STRONG POINT</h3>
<ul>
    <li>RDBMSに一つずつSQL文を発行する必要がなくなる。</li>
    <li>NETWORKで行き来しているTRAFFICを削減</li>
    <li>あらかじめ処理内容がRDBMSに登録され、構文解析</li>
    <li>機械語への変換が済んでいるため、処理時間が軽減。 </li>
</ul>
<h3>基本文法</h3>
<ul>
    <li>BLOCKの定義 <br />
    &rarr;BEGIN～END </li>
    <li>CREATE PROCEDURE : STORED PROCEDURE(纏める)の作成 <br />
    &rarr;CREATE PROCEDURE PROCEDURE名(PARAMETER名) [WITH OPTION] AS 実行STATEMENT </li>
    <li>CREATE FUNCTION : STORED FUNCTION(関数)の作成<br />
    &rarr;CREATE FUNCTION FUNCTION名(PARAMETER名) RETURNS 戻り値の型 [AS] BEGIN 実行STATEMENT END; </li>
    <li>DECLARE : 変数の定義を宣言する <br />
    &rarr;DECLARE @変数名 DATA型 </li>
    <li>DECLARE CURSOR : CURSOR変数の定義 <br />
    &rarr;DECLARE CURSOR名 CURSOR FOR SELECT文 </li>
    <li>FETCH : CURSOR処理を行い特定の行を検索する <br />
    &rarr;FETCH [KEYWORD] FROM CURSOR名 INTO 変数名１、変数名２、&hellip; <br />
    &rarr;KEY WORDの種類：NEXT(直後)、PRIOR(直前)、FIRST(最初)、LAST(最後)、ABSOLUTE[n](先頭からｎ番目)、RELATIVE[n](現在の行のn番目) </li>
</ul>]]>
        
    </content>
</entry>
<entry>
    <title>第九回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_8/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=59" title="第九回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.59</id>
    
    <published>2006-06-14T08:17:19Z</published>
    <updated>2006-08-27T15:37:58Z</updated>
    
    <summary>トリガーに関する講座･･･トリガーとは？</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>トリガーとは</h3>
<p>◆トリガー･･･表に対して何らかの変更処理が加えられたときに、その処理をきっかけとして自動的に実行される特殊なストアドプロシージャである。 </p>
<p>特徴・・・トリガーはアプリケーションから呼び出されるものではなく、アプリケーション(プログラム)には全く依存しない。 ※DBMSによって記述方法が全く違う。 </p>
<ul>
    <li>メリット
    <ol>
        <li>アプリケーションに依存しない。</li>
        <li>データの整合性を保つのに適している。 </li>
        <li>関連テーブルが複数ある場合に一括して処理することが出来る。コードや名前を別の表に持たせたときに、1つの表を変更すると別の表へも変更が適用される。 </li>
    </ol>
    </li>
    <li>デメリット
    <ol>
        <li>データの更新回数によってはパフォーマンスが低下する。 </li>
        <li>アプリケーション側で処理内容が把握しにくい。 </li>
    </ol>
    </li>
</ul>
<h3>構文</h3>
<p>●CREATE TRIGGER トリガーの作成 </p>
<p>CREATE TRIGGER トリガー名 ON 表名 処理タイミング処理 AS 実行ステートメント </p>
<ul>
    <li>・処理タイミング
    <ol>
        <li>FOR | AFTER | FOR AFTER　処理実行後 </li>
        <li>BEFORE　処理実行前 </li>
        <li>INSTEAD OF　置き換え </li>
    </ol>
    </li>
    <li>・処理 INSERT,UPDATE,DELETE </li>
</ul>
<h3>文例</h3>
CREATE TRIGGER TEST ON TEST_TABLE FOR INSERT,UPDATE AS BEGIN UPDATE TEST_TABLE SET TOTAL=POINT*1.5 END]]>
        
    </content>
</entry>
<entry>
    <title>第十回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_9/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=60" title="第十回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.60</id>
    
    <published>2006-06-14T08:20:11Z</published>
    <updated>2006-08-27T15:32:41Z</updated>
    
    <summary>トランザクションに関する講座･･･トランザクションとは？</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>トランザクションとは？</h3>
<p>・ジャーナル／ジャーナルファイルトランザクションをかけると作成される。ログと似ているが、こちらは種類（エラーログ・履歴）が多い。チェックポイントをすれば、これら二つは破棄される（ロールバックで戻せないためあったとしても必要ない）</p>
<p>STORED PROCEDUREを利用することで、USERは必要に応じて、その名前と引数を指定して呼び出すだけでよく、DBに対する複雑な処理はRDBMSに任せることができる。 </p>
<p>&rarr;更新前情報：ＢＥＧＩＮした時に、今の状態をおいておく。 </p>
<p>&rarr;更新後情報：更新した履歴（～を変更した） </p>
<h3>ロールバック </h3>
更新前情報に戻る。
<h3>ロールフォワード </h3>
チェックポイントから更新後情報どおりに戻すただし、チェックポイントから開始するとデータが壊れたままなので、結局更新情報前に戻すことにある
<h3>コミット（確定･終了) </h3>
ディスクに書き込み。ジャーナルファイルの情報をＤＢに反映させる。トランザクション開始中に、ＵＰＤＡＴＥをしても、ジャーナルファイルに書かれているだけ。
<h3>ADO.NET</h3>
TransactionとConnectionの関連付け。
<h3>SAVE Transaction</h3>
この中のSavePointに対して名前を付けて、エラーが起こったら、この地点まで戻る。
<h3>分散トランザクション</h3>
<ul>
    <li>2層コミット二つのトランザクション（それぞれ別の処理）を一つに見せかける。エラーをしたら、ロールバック。この中のSavePointに対して名前を付けて、エラーが起こったら、この地点まで戻る。</li>
    <li>2層ロック開始で更新してロックをかけるテーブルを、はじめ全てロック。 </li>
</ul>
<h3>ＤＢでのTransaction処理</h3>
SQL-Server：commitとCheckPointを同時に行う CheckPointはDBレベルの話。 &rarr;VisualBasic.NETはTransactionのレベルの設定ができないが、Queryアナライザならできる。]]>
        
    </content>
</entry>
<entry>
    <title>第十一回講座</title>
    <link rel="alternate" type="text/html" href="http://e-learning.sijam.com/post_10/" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.sijam.com/cgi/mt/mt-atom.cgi/weblog/blog_id=18/entry_id=61" title="第十一回講座" />
    <id>tag:www.sijam.com,2006:/e-learning//18.61</id>
    
    <published>2006-06-14T08:25:57Z</published>
    <updated>2006-08-27T15:25:35Z</updated>
    
    <summary>ADO.NETに関する講座･･･ADO.NETとは？ADO.NETの概要を掴む。</summary>
    <author>
        <name>システム管理者</name>
        <uri>http://www.sijam.com</uri>
    </author>
            <category term="010db)データベース講座" />
    
    <content type="html" xml:lang="ja" xml:base="http://e-learning.sijam.com/">
        <![CDATA[<h3>ADO.Netとは</h3>
<p>.Net Frameworkのクラス</p>
<ul>
    <li>ライブラリに標準で備わっている一連のクラス群。これらのクラスを利用して、データベースを扱うことが出来る。 </li>
</ul>
<p>◆特徴</p>
<ul>
    <li>データベースから取得したデータを自身のメモリ上に保存する。</li>
    <li>メモリ上のデータセットを操作するため高速に処理することが出来る。</li>
    <li>処理中にデータベースサーバと接続し続ける必要がなくなる。 </li>
</ul>
<h3>構成</h3>
<p>▼ データベース ▼ 　　│ ◆ .Netデータプロバイダ ◆ 　　│ ◆ 非接続型クラス ◆ 　　│ ▲ XML ▲</p>
<ol>
    <li>.Netデータプロバイダデータベースへの接続、コマンド(SQL文)実行、検査結果取得、等のデータベース
    <ul>
        <li>アクセスに直接かかわる一連のクラス。 ex)SQLConnection，SQLCommand等 </li>
    </ul>
    </li>
    <li>非接続型クラスデータベースから読み取ったデータを、メモリ上で表形式で保持するための新しい仕組みを提供するもの ex)DataTable，DataRow，DataColumns等 </li>
</ol>
<h3>.NETデータ・プロバイダによるデータベースへのアクセス</h3>
<ol dir="ltr" style="MARGIN-RIGHT: 0px">
    <li>データの取得 <br />
    SqlCommand.ExecuteReader データベース&larr;SqlCommand [Select] データベース&rarr;SqlDataReader</li>
    <li>データの追加更新削除<br />
    SqlCommand.ExecuteNonQuery データベース&larr;SqlCommand [Insert，Update，Delete] </li>
</ol>
<h3>データセットを使ったデータベース・アクセス</h3>
<ol>
    <li>データの取得 DataAdapter.Fill(※DataSet) <br />
    データベース&larr;SelectCommand&larr;DataAdapter <br />
    データベース&rarr;DataAdapter&rarr;(DataSet－DataTable) </li>
    <li>データの更新追加削除 DataAdapter.Update(※drRows()) <br />
    データベース&larr;InsertCommand，UpdateCommand，DeleteCommand &larr;DataAdapterー(DataSet－DataTable) ※DataSet，DataTable，DataRow等様々な指定が出来る。</li>
</ol>]]>
        
    </content>
</entry>

</feed> 

