SQLer 生島勘富 のブログ

RDB・SQLの話題を中心に情報発信をしています。

2011-01-01から1年間の記事一覧

なぜごり押しなのか3 -- 初級シスアドレベルは超えるべき。

なぜ、煽って【詐欺師】なんて言うかというと、これは初級シスアドで出題された問題です。 初級シスアドの午後の問題を見れば分かりますが、他が満点でもSQLができなければ合格できない比重になっています。それでも、初級シスアドなんて、就職氷河期を乗り…

なぜごり押しなのか2 -- 詐欺師になるな。

世の中には本当に【詐欺師】のような技術者が詐欺的なものを作って飯を食っています。 例えば、以下、ぱっと見て何をやっているSQLか理解できるでしょうか。 ■ テーブル構造 ■SQL SELECT 資格取得履歴表.社員番号,COUNT(*) FROM 資格取得履歴表,社員表 WHE…

なぜごり押しなのか。

私は妥協点をほとんど出しません。なぜそんなに頑ななのか?その答えは単純です。 SQLを使うか、使わないかでは以下の様なグラフになります。 しかし、多くの人達は以下の様なイメージ上で、議論を行っています。 皆さんがある程度許せるという妥協点は赤丸…

重要な言い換え

ユーザが話したことを、システム化するのがSEの仕事ですが、ユーザが言ったことは、適宜、言い換えなければならない。私は SE の業務理解、設計能力に最も必要な能力は「どれだけ言い換えられるか」ではないかと考えています。 受注のない売上はない! ユー…

トリガーを自動生成2

前回の続き。 非正規化した項目の整合性を維持するトリガーをかいてみます。 トランザクションテーブルにトリガーを設定する。 例として、以下の様な受注明細があったとして、その非正規化項目の整合性を維持するトリガーを書いてみます。 CREATE TABLE T010…

トリガーを自動生成1

トリガーの適応範囲はエクセルで出力できるところまでとすると、必然的にできることは限られます。関連チェックや整合性の維持に限られるでしょう。 まずは書いてみる。 以前書いたトリガーを少し修正してみましょう。(SQLServerで書きました。) トリガー…

トリガーの勘所 -- 「自動的にやってくれる」と「勝手に変わった」

トリガーを嫌う人は非常に多い。 トリガーはレコードの更新を起点(トリガーにして)に自動的に動くので、アプリケーション側のプログラムソースからは追いかけられず、プログラマが意図しない結果になることがある。というのが嫌われる一番の理由でしょう。…

効率の山は複数回訪れる。

正規化の効率を考えてみる。 正規化は基本的な技術ですが、COBOLから抜けきれていないと正規化すると遅くなると感じる様になる。 これはおそらく私もだろうと思うけれど、効率をグラフ化して最初に訪れた山が最高と感じるものです。それはつまり、落ち始めた…

無意識を意識する。

そもそも、私はプログラムを習ったことがないから、一般的な専門学校などでやっている様な講義は知らないしやりようがない。私が講師をやると厳しすぎるので、新人教育を担当することはないのですけれど……。 新人を相手するときに、私が最初に説明するのは「…

OLAP(分析)関数について -- 完成

前回の続きです。やっと完成です。 ざっくりとした考え方(毎回) GROUP BY は集約するので、結果が(集約キーを出力すれば)一意になる。つまり、出力される結果が一意になるまで集約される。 しかし、OLAP(分析)関数は、SELECTされた結果を区切って処理…

OLAP(分析)関数について -- OLAP(分析)関数はSELECT句で並び替え

前回の続きです。やっとOLAP(分析)関数までたどり着きました。 ざっくりとした考え方(毎回) GROUP BY は集約するので、結果が(集約キーを出力すれば)一意になる。つまり、出力される結果が一意になるまで集約される。 しかし、OLAP(分析)関数は、SEL…

OLAP(分析)関数について -- その前にサブクエリーで処理

前回の続きです。 ざっくりとした考え方(毎回) GROUP BY は集約するので、結果が(集約キーを出力すれば)一意になる。つまり、出力される結果が一意になるまで集約される。 しかし、OLAP(分析)関数は、SELECTされた結果を区切って処理する。そのため、…

OLAP(分析)関数について -- SQLはテストファースト指向

OLAP(分析)関数は考え方としては、SQLの他の構文よりも手続き型言語と差が小さい。 考え方ではなく、文法から入る人にとってはとんでもない違いに感じるかも知れませんが、答えは同じなのですから違いはないのです。 長くなるので数回に分けて書こうと思う…

サロゲートキーは後付けでもできる。

業務システムのほとんどはナチュラルキーで構築されていると思います。 しかし、シノニムやトリガーを利用すれば、既存システムを変更することなくサロゲートキーを追加して、それ以降、サロゲートキーによる運用も可能になります。手順は以下の通りです。 …

命名法 - 主キーはサロゲートキーで、テーブル名はナチュラルキーで(笑)

完全に新規の案件というのは本当に少ないので、実践できることはほぼない理想論ですが、私の理想とするテーブル構造と命名法です。 まずは、サロゲートキーについて サロゲートキーというのは業務上意味のないキーのことです。 例えば、生徒テーブルは、年次…

Web系・SIer、ギーク・スーツについて

ギーク・スーツとは、いささか古い表現ですが使いやすいのでこのまま使います。 人間研究として原発事故について考えてきて、何度も「バカの壁」にぶつかった。やはり無意識ほど怖いものはなく、前提の部分で逆を向いているから、その後は全く噛み合わない。…

勉強会

立て続けに勉強会でお話しさせて頂きます。 SQLWorld★大阪#7 2011/10/15(土) 13:00 to 17:00 http://club-windows7.net/ 「ストアドを使った開発」 第12回関西IT勉強宴会 上流工程勉強会 2011/10/28(金) 19:00 to 22:00 http://atnd.org/events/20842 「デー…

スティーブ・ジョブズ氏について

誠に残念なことにスティーブ・ジョブズ氏が亡くなってしまった。ご冥福をお祈りいたします。 私はスティーブ・ジョブズ氏にそれほどの思い入れもない。ですから、思い入れのある人達が語れば良いだろうと考えていました。その功績は間違いなく立派で賞賛に値…

雑感

http://d.hatena.ne.jp/Sikushima/20111008/1318037160 の続き。 何度も散々書いてきたけれど、SQLはC++でできたプログラムをラップしているだけですから、それをもう一度別の言語でラップしても理論的には効率的にはなり得ない。 海外旅行をしてタバコ屋で…

RDBMSをタバコ屋さんで説明

勉強会に参加さてもらい、次の勉強会でお話しすることになったので宣伝です。 前の勉強会では以下の様な実験が話題になっていました。http://www.doaplus.com/html/bun/bun03_20051101.html まあ、極めて当たり前の結果です。 5000万件が500万件になるという…

岡崎図書館事件について

■重要 私の目的は@librahack氏の名誉回復と再発防止です。 名誉回復はマスコミの報道と、ベンダーの謝罪によってなされるべき。 再発防止は、IT業界の認識を変えるべき。と考えています。 twitterは議論には向かない。 どうしても、直近の140文字に反応する…

岡崎図書館事件について(再)

以前、岡崎図書館事件などの部分をお引っ越しをしたのですが、イロイロあってそこで書くのを止めてしまいまして、こちらへ復活させようと思ったらログが残っていなかった(苦笑)。 しかし、魚拓を採ってくれていた人がいたようで偶然見つけました。私がなく…

お手製パーティションテーブルと分散データベース2

「お手製パーティションテーブルのメリデメ」 トラックバックを頂いたので少し。 http://d.hatena.ne.jp/Sikushima/20110813 のつづきです。 分かりにくくてすみませんでした。 http://d.hatena.ne.jp/iad_otomamay/20110808/1312805917 http://d.hatena.ne.…

まとめ

http://d.hatena.ne.jp/Sikushima/20110809 http://d.hatena.ne.jp/Sikushima/20110810 http://d.hatena.ne.jp/Sikushima/20110811 http://d.hatena.ne.jp/Sikushima/20110815 のまとめです。 何度も何度もSQLでやった方が理論的には効率的と書いてきた。何…

粘着されるとうっとうしいので少し

私はいろんな人に絡まれています。今までのべ数百人を相手にしてきたので、コメント下さる方はコメントを送った!という感覚かも知れないけれど、残念ながら会ったこともない人を覚えるなんてことはほとんどありません。 1年以上前に「こんな条件でC++でJOI…

シビアな設計

http://d.hatena.ne.jp/Sikushima/20110809 http://d.hatena.ne.jp/Sikushima/20110810 http://d.hatena.ne.jp/Sikushima/20110811 の続きです。 シビアな設計が要求されるということは、リソースのどこかにボトルネックが発生するということになります。 ボ…

お手製パーティションテーブルと分散データベース

お手製パーティションテーブルも、分散データベースも、このようなやり方では実はやったことはない。 理論上はお手製で可能ですが、パーティションテーブルと分散データベースが必要な規模では Enterprise Edition を導入した方が良いという判断になり、政治…

バッドノウハウを受け入れるべきではない

SQLを使わない成功事例があります。なんて書くと、SQLが苦手だと考えている層に、それがどんなにバッドノウハウでも諸手を挙げて受け入れられる。 しかし、プロジェクトとしては成功でも、技術的に成功とも正しいとも言えない。もちろん、それだけでは間違っ…

コメントを頂いたので

数値を文字型で持つべきではない コメントをいただいたので。 前の記事はこちら。 http://d.hatena.ne.jp/Sikushima/20110809/1312871002 元ネタはこちら。 http://d.hatena.ne.jp/iad_otomamay/20110808/1312805917 http://d.hatena.ne.jp/iad_otomamay/201…

JOIN禁止と固定長カラムについて

あまりに気になったので「山本大@クロノスの日記」にチャチャを入れてみる。 http://d.hatena.ne.jp/iad_otomamay/20110808/1312805917 http://d.hatena.ne.jp/iad_otomamay/20100906/1283786846 まあ、政治的にはどのみち勝てなかったでしょう。私も同じ条…