skillup

技術ブログ

Database

正規化について&EXTRACT

投稿日:2016年7月21日 更新日:

正規化とは?

正確な定義は難しいですが、8割ぐらいあっている定義としては「適切なテーブルに分割すること」です。※ただし正確ではないようです。

第一正規化

第一正規形の定義はスカラ値の原則 1つのセルには1つの値のみ。※この性質のことを関数従属性という(1対1対応のこと)。

これが守られていないのが、下記のようなテーブル

社員ID 社員名
001 山田 太郎
次郎
002 鈴木 太郎
次郎
三郎

これを第一正規化した場合、下記のようになる。

正規化パターン1

社員ID 社員名 子1 子2 子3
001 山田 太郎 次郎
002 鈴木 太郎 次郎 三郎

正規化パターン2 推奨

社員ID 社員名
001 山田 太郎
001 山田 次郎

※データを一部省略

SQLネタ EXTRACT

日付の処理に関して以前このエントリーで書きましたが、DATE_FORMATなどとやらなくてもEXTRACTという関数を使えば年や月といった値を取り出すことができるようです。

ordersテーブルからorder_dateの年月を取得するとき。

月ごとの集計とかこれを使ってGROUP BYすればよかったんですね。DATE_FORMATよりもスピードも若干早いようです。

【Mysql】date型 集計するなら EXTRACT

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

SQL case式やウィンドウ関数の威力

プログラマには「プログラムは思った通りに動かない。書いた通りに動く。」「バグではない仕様です」なんて面白い格言がいろいろありますが、データベースの世界にも「WHERE句で条件分岐させるのは素人のやるこ …

no image

EXISTSについて

今回はEXISTSについてです。 実務では伝票と明細との検索関連の処理で結構出てきます。 なお、達人に学ぶ~では論理学について少しふれており、この領域を本気で理解する場合は論理学を勉強する必要がありま …

no image

複数GROUP BYでの注意

GROUP BYしたときに件数が増えるという現象があったので一応メモ。というか当たり前のことですが・・・ たとえば以下のようなテーブルがあったとします。 student id student_name …

no image

ER図作成ツールについて(Mac版)

ER図作成ツールについてMacで色々と調べましたので、メモを。 フリー限定で。 ちなみにwindowsを使っていればA5:SQLが一番使えるかと思います。 以前も下記リンクで説明させていただきました。 …

no image

DBの基礎 テーブルとは

CSSを学習したあとはデータベースの学習などを。 参考図書:「達人に学ぶDB設計指南書」基本的にはこれを読んでいきます。が、現状よくわからないところは飛ばしていきます・・・ Contents1 テーブ …

アーカイブ