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

MySQLのSETとFIND_IN_SETについて

MySQLの方ですが、単純な文字列や、数字、日付の他に配列に近いSET型、また5.7以降ではJSONなどを入れることができます。 Contents1 SET型2 FIND_IN_SET SET型 いわ …

no image

論理設計のグレーノウハウ 列持ちテーブル、集計キー、多段ビュー

前回に引き続き論理設計のグレーノウハウについて。 Contents1 列持ちテーブル1.1 メリット1.1.1 シンプルな設計1.1.2 入出力のフォーマットと合わせやすい1.2 デメリット1.2.1 …

no image

アンチパターン トランザクションスコープ+大量データのリアルタイム集計+接続が詰まる

本日は主にインフラの設計的なことに関して。 Contents1 トランザクションスコープの設定1.1 デメリット1.2 対策2 大量データのリアルタイム集計2.1 デメリット2.2 対策3 詰まると接 …

no image

テストのダミーデータ作成

データベースに大量のデータを作りたいときにいつもあああやhoge,aaaですとデータという感じがしないですし、抽出や集計ができません。 なるべく自然に近いデータが欲しいのですが、簡単に作れる方法があり …

no image

外部結合 応用編2

引き続き結合についてです。 Contents1 1対Nの結合に関して2 完全外部結合3 差集合(class_aだけに存在するものとclass_bだけに存在するもの)3.1 class_aのみ3.2 c …

アーカイブ