0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

テーブル設計の方法

Posted at

テーブル設計の目的

  • データの冗長性を排除して、使用すすデスクスペースを減らす
  • テーブル内のデータの正確さを維持する
  • 適切にテーブル分割して、効率的にアクセスできるようにする

データ中身アプローチ(DOA)とは

システム設計の考え方の一つ。まずどういうデータを利用するのかを洗い出す。次にどのようにデータを扱うのかを考えて処理を書き出すアプローチ

データ型

文字列型

  • CHAR(固定長文字列) あらかじめ格納するデータの領域が固定で確保される
  • VARCHAR(可変長文字列)データに応じて確保されるディスク領域を調整する
  • TEXT VARCHARで格納できないサイズの文字列を格納する。*インデックスを作成することができない。

文字列の長さが固定されている場合(電話番号、社員番号)にはCHAR型を用いる。主キーとして用いる 、それ以外はVARCHAR
「TEXTを使う場合」VARCHARでは扱えない大容量のデータを格納する場合(65535以上)、絞り込みに利用しない

整数型 *UNSIGNEDをつけると正の値のみ扱う

  • TINYINT -128~127
  • SMALLINT -32768~32767
  • MEDIAMINT -8388608~8388608
  • INT -2147483648~2147483648
  • BIGINT それ以上

浮動小数型 実数を扱う。近似値を扱われ、数値が大きくなると正確な値にならない

固定小数型 正確な浮動小数を扱う

DECIMAL(5,2)整数部と少数部を合わせて5桁、少数部が2桁

*データ数が大きいと使用する型によってデータ容量が全く変わってくるので、気をつける必要がある。

①金融系のシステムなどで正確な値が必要な場合はDECIMAL
②WHEREで比較を行うカラムではDECIMAL
③概算地でのデータ容量を抑えたい場合は、FLOAT,DOUBLE

日時型

  • DATE 日付を扱う。時刻のない日付のみのデータを挿入したい場合に用いる
  • TIME 時刻を扱う、日付のない時刻のみのデータを挿入したい場合に用いる。
  • DATETIME 日付と時刻を扱う。正確な日付と時刻を扱いたい時
  • TIMESTAMP 日付と時刻を扱う。データ容量がDATETIMEより若干少ない

*TIMESTAMPはレコードの挿入時刻や更新時刻を記述するカラムに使用される。デバックする際に非常に便利

テーブル定義のコツ

  • 主キーは必ずつける。主キーには数値型(INT型)または固定長文字列(CHAR)を用いる
  • レコードが挿入された時刻を表す(create_at)とレコードが変更された時刻を表す(update_at)は必ずつける
  • 文字列型や数値型は大きすぎる値を設定しない
  • カラムの制約、デフォルト値、コメントはきちんとする
    制約やデフォルト値、コメント文の記述はきちんとする。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?