データを抽出するのに、論理演算記号というのをつかう。
ネットでも「将棋 BAR」で検索をすると「将棋とBARのどちらも共通」のもの、
つまり将棋 AND BARという検索になる。
データを絞り込む・・・という話ですね!
それもデータベースと関連するんだ!へええええ。
今日はその論理演算についての話だ。
AND
ANDは両方の条件が満たされれば1となる。
真理値表で書くと
入力 出力
A B S
1 1 1
0 1 0
1 0 0
0 0 0
ちなみに、入力の値と出力の値の関係性を表にしたものを
真理値表という。
そうだな・・・Aに1が書いてある場合は、AというスイッチがONに
なっている・・・逆に0の場合はOFFというイメージで構わない。
ANDの場合はAとB両方のスイッチがONになって、初めてラン
プが点灯いるイメージだな。
和菓子 AND パフェならば・・・
抹茶ミルクパフェー!ぱふぇぱふぇぱふぇーーーー!
ああああたべたいたべたいいいいい。
・・・ふっ、わかってきたようだな。合格したらおごってやるさ。
OR
ORはどちらかの条件が満たされれば1となる。
真理値表で書くと
入力 出力
A B S
1 1 1
0 1 1
1 0 1
0 0 0
イケメン OR ブサメン の彼氏が欲しいいいい!!!
ってことは、男子ならなんでもいいいいい!!!!ってこと?
・・・ふっ、その通りだ。どんだけ肉食なんだよって話だな。女子はOR条件
ばかりじゃなく、ANDできちんと、絞り込んだほうがいいんだぜ。
(つづきます)
第三正規形
主キー以外の項目で決定されるものや、計算できるものは分割する。
第二正規形でも十分いいような気がするが、表では、主キーではないが。
選手コードがあれば、選手名はわかってしまうのでこれを分割する。
あと、勝数は「結果」の合計をすればわかることだ。これを除外しておく。
表A
試合コード 相手コード 結果
101 B001 勝ち
101 D001 負け
102 D001 勝ち
103 A001 勝ち
103 D001 勝ち
104 B001 負け
表B
試合コード 選手コード
101 A001
102 B001
103 C001
104 D001
表C
相手コード 相手名
A001 やうたん
B001 かなたん
D001 やまざき
表D
選手コード 選手名
A001 やうたん
B001 かなたん
C001 はっしい
D001 やまざき
と、最終的には4つの表になる。
・・・難しい説明だったかもしれないが、
実際に手を動かしながら表を作ってみて欲しい。
そうすると、データベースはわかりやすいはずだ。
データベースのポイントは、自分で手を動かして表を作成し、それを正規化する
という作業を繰り返すことで、正規化とは何か・・・がつかめると思うのだ。
ちなみに、第4正規形とか、他の正規形もあるんですか?
ある。ボイスコッド正規形というのもある。詳しくはデータベーススペシャリスト試験
でやることになるだろう。
ボイスゴッド・・・声の神・・・大山のぶ代?
どうしてそうなる!僕は神山満月ちゃん!
(つづきます)
主キー以外の項目で決定されるものや、計算できるものは分割する。
第二正規形でも十分いいような気がするが、表では、主キーではないが。
選手コードがあれば、選手名はわかってしまうのでこれを分割する。
あと、勝数は「結果」の合計をすればわかることだ。これを除外しておく。
表A
試合コード 相手コード 結果
101 B001 勝ち
101 D001 負け
102 D001 勝ち
103 A001 勝ち
103 D001 勝ち
104 B001 負け
表B
試合コード 選手コード
101 A001
102 B001
103 C001
104 D001
表C
相手コード 相手名
A001 やうたん
B001 かなたん
D001 やまざき
表D
選手コード 選手名
A001 やうたん
B001 かなたん
C001 はっしい
D001 やまざき
と、最終的には4つの表になる。
・・・難しい説明だったかもしれないが、
実際に手を動かしながら表を作ってみて欲しい。
そうすると、データベースはわかりやすいはずだ。
データベースのポイントは、自分で手を動かして表を作成し、それを正規化する
という作業を繰り返すことで、正規化とは何か・・・がつかめると思うのだ。
ちなみに、第4正規形とか、他の正規形もあるんですか?
ある。ボイスコッド正規形というのもある。詳しくはデータベーススペシャリスト試験
でやることになるだろう。
ボイスゴッド・・・声の神・・・大山のぶ代?
どうしてそうなる!僕は神山満月ちゃん!
(つづきます)
試合コードは、その日一日にやった試合をひとつのコードで管理する。
以下のような表があった場合、これを正規化するとどうなるだろう。
非正規形
正規化されていない表
試合コード 選手コード 選手名 相手コード 相手名 結果 勝数
101 A001 やうたん B001 かなたん 勝ち 1
101 D001 やまざき 負け 0
102 B001 かなたん D001 やまざき 勝ち 1
103 C001 はっしい A001 やうたん 勝ち 1
103 D001 やまざき 勝ち 1
104 D001 やまざき B001 かなたん 負け 0
作者の机の上みたいな感じですね。
やまかしいわ!次行くぞ。
第一正規形
繰返し項目を含まないように分割する
一つの試合コードに2つの試合が重複している。これを取り除く作業をする・・・ために
は表を分けてあげるとわかりやすい。
表A
試合コード 相手コード 相手名 結果 勝数
101 B001 かなたん 勝ち 1
101 D001 やまざき 負け 0
102 D001 やまざき 勝ち 1
103 A001 やうたん 勝ち 1
103 D001 やまざき 勝ち 1
104 B001 かなたん 負け 0
表B
試合コード 選手コード 選手名
101 A001 やうたん
102 B001 かなたん
103 C001 はっしい
104 D001 やまざき
お、すっきり。
朝の情報番組!すっきり!
しかし、これでいいわけではないのだよ。
第二正規形
主キーと、それ以外の項目で決定されるものを分割する。
上の表でもいいんだが、試合コードと相手コードさえあれば相手の名前はわかってしまう。
これを主キーとそれ以外の項目で決定されるもの・・・という。これを分割すると。
表A
試合コード 相手コード 結果 勝数
101 B001 勝ち 1
101 D001 負け 0
102 D001 勝ち 1
103 A001 勝ち 1
103 D001 勝ち 1
104 B001 負け 0
表B
試合コード 選手コード 選手名
101 A001 やうたん
102 B001 かなたん
103 C001 はっしい
104 D001 やまざき
表C
相手コード 相手名
A001 やうたん
B001 かなたん
D001 やまざき
・・・もう終わりでもいいような・・・。
さて解散解散。寝ましょうよ、あーあ。
ちょ!まてよ! 第3正規形でこれがかなりすっきりするんだぜ。
(つづきます)
以下のような表があった場合、これを正規化するとどうなるだろう。
非正規形
正規化されていない表
試合コード 選手コード 選手名 相手コード 相手名 結果 勝数
101 A001 やうたん B001 かなたん 勝ち 1
101 D001 やまざき 負け 0
102 B001 かなたん D001 やまざき 勝ち 1
103 C001 はっしい A001 やうたん 勝ち 1
103 D001 やまざき 勝ち 1
104 D001 やまざき B001 かなたん 負け 0
これは確かに・・・ごちゃごちゃしてる感じですね。
作者の机の上みたいな感じですね。
やまかしいわ!次行くぞ。
第一正規形
繰返し項目を含まないように分割する
一つの試合コードに2つの試合が重複している。これを取り除く作業をする・・・ために
は表を分けてあげるとわかりやすい。
表A
試合コード 相手コード 相手名 結果 勝数
101 B001 かなたん 勝ち 1
101 D001 やまざき 負け 0
102 D001 やまざき 勝ち 1
103 A001 やうたん 勝ち 1
103 D001 やまざき 勝ち 1
104 B001 かなたん 負け 0
表B
試合コード 選手コード 選手名
101 A001 やうたん
102 B001 かなたん
103 C001 はっしい
104 D001 やまざき
お、すっきり。
朝の情報番組!すっきり!
しかし、これでいいわけではないのだよ。
第二正規形
主キーと、それ以外の項目で決定されるものを分割する。
上の表でもいいんだが、試合コードと相手コードさえあれば相手の名前はわかってしまう。
これを主キーとそれ以外の項目で決定されるもの・・・という。これを分割すると。
表A
試合コード 相手コード 結果 勝数
101 B001 勝ち 1
101 D001 負け 0
102 D001 勝ち 1
103 A001 勝ち 1
103 D001 勝ち 1
104 B001 負け 0
表B
試合コード 選手コード 選手名
101 A001 やうたん
102 B001 かなたん
103 C001 はっしい
104 D001 やまざき
表C
相手コード 相手名
A001 やうたん
B001 かなたん
D001 やまざき
・・・もう終わりでもいいような・・・。
さて解散解散。寝ましょうよ、あーあ。
ちょ!まてよ! 第3正規形でこれがかなりすっきりするんだぜ。
(つづきます)
![]()
今日は正規化!だ!正規化はデータベース分野で苦手な人も多い内容
だが!俺が、俺が、俺が、わかりやすく教えてやるぜエエエ。
![]()
・・・・先生の熱い魂を感じる・・・ウルトラソウル・・・ぜひお願いします!
うむっ。正規化とはデータベースの表(テーブル)について、表の重複や
矛盾をなくす作業を言う。
重複や矛盾があると、データを取り扱うのに手間がかかる。
し、おかしなことになったら困るんだ!
正規化には様々な種類があるんだが、ITパスポートにおいては第1正規
化から第3正規化までを覚えておればよろしいっ!
えーほかのもおしえてくださいよう(棒
・・・それ以外は出ないってことですね。
うむっ。ITパスポートのみならず、応用情報技術者試験においても第3正
規化以上の出題は稀であるっ。データベーススペシャリスト試験では、そ
りゃ第5正規化までの条件を丸暗記するべきだが。
以下の表を見ながら正規化の作業を進めていくから、予習しておけよ!
試合コード 選手コード 選手名 相手コード 相手名 結果 勝数
101 A001 やうたん B001 かなたん 勝ち 1
101 D001 やまざき 負け 0
102 B001 かなたん D001 やまざき 勝ち 1
103 C001 はっしい A001 やうたん 勝ち 1
103 D001 やまざき 勝ち 1
104 D001 やまざき B001 かなたん 負け 0
ず、ずいぶんはっしい先生に有利な表ですね・・・・
ふっ。
(つづきます)
いんでえええええくっす!
・・・それは違うと思うぞ。インデックスはデータベースを快適にする
ための仕様なんだ。
そもそも、インデックスって・・・よく使うんだが日本語に直せるか?
ずばり、「目次」のことでしょう!
正解!よって、働きも似たようなものだ。目的のページを探すのに
目次があると、すぐにたどり着けるのと同じように。データベースの
中にもどのデータがどこにあるのかを、あらかじめ目次にしておくと
検索結果が早く出るのだ。
目的はデータベース検索の高速化。ってことですね。
そう!やうたん、その通りだ。そのキーワード、実はデータベースの
問題でよく使われるから覚えておくように。
・・・次はなんですか・・・。
次はない。次回に続かせてもらう。昨日は飲み過ぎたのだ・・・ううう。
私も飲み過ぎたのだ・・・クリスマスだからね・・・シャンメリーを・・・。
・・・二人とも寝ててください。
(つづきます)
反対語はあうとでっくっっっっすうう??
・・・それは違うと思うぞ。インデックスはデータベースを快適にする
ための仕様なんだ。
そもそも、インデックスって・・・よく使うんだが日本語に直せるか?
ずばり、「目次」のことでしょう!
正解!よって、働きも似たようなものだ。目的のページを探すのに
目次があると、すぐにたどり着けるのと同じように。データベースの
中にもどのデータがどこにあるのかを、あらかじめ目次にしておくと
検索結果が早く出るのだ。
目的はデータベース検索の高速化。ってことですね。
そう!やうたん、その通りだ。そのキーワード、実はデータベースの
問題でよく使われるから覚えておくように。
・・・次はなんですか・・・。
次はない。次回に続かせてもらう。昨日は飲み過ぎたのだ・・・ううう。
私も飲み過ぎたのだ・・・クリスマスだからね・・・シャンメリーを・・・。
・・・二人とも寝ててください。
(つづきます)