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でtext型が大量にあるもののリストア 

MySQLでのリストアについて。 先日実務でtext型のカラムが複数あるテーブルを読もうとしたら下記エラーがでてこけました。

なにやら …

no image

SQLインジェクション

セキュリティ関係の知識がぬるいのでちょっとお勉強。 知っていることもあるが復習もかねて勉強を。 Contents1 SQLインジェクションとは?2 被害3 対策4 参考サイト・書籍5 ソース SQLイ …

no image

SQLクエリ比較

クエリの比較 SQLにおいては全く同じ結果を返すのであってもその検索結果が異なるということはよくあります。 例えば下記のようなテーブルがあった場合 co_cd | district —&# …

no image

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

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

no image

論理設計のアンチパターン

今回からは論理設計のアンチパターンについて。 やってはいけない設計のパターンですね。これはまわりがやっていると気づかずにやっている可能性があるのでしっかりメモしておきたいです。 Contents1 非 …