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

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …

no image

CakePHPでの数字カンマ区切り&PHP&MySQL曜日の出力

今回は主に時間やお金の表示など、出力に関するネタです。 Contents1 Cakeでのカンマ区切り1.1 単純なカンマ区切り 例1,0001.2 \をつけるケース 例 \1,0001.3 円をつける …

no image

dbUnitの使い方

えーJavaで有名なテストツールDBUnitについて。 DbUtilではありませんので間違えないように。(私は最初間違えました・・・) まだ全然使い込んでるわけではありませんがどんなことができるかとい …

no image

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

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

no image

アンチパターン 参照渡しと値渡し+キー情報の設定+同一値を複数テーブルに配置+正規化が不十分+集計表+不適切なステータス値

本日は自分がデータベースの設計をしていて気を付かないといけないなーと思った点などを。 注意点としては設計のミスは実装で取り返しにくいことが多いので極力気を付けましょう。あといろいろなテーブルのパターン …