1-3:投資メモアプリのテーブル詳細

当サイトではアフィリエイト広告を利用して商品を紹介しています。
当サイトではアフィリエイト広告を利用して商品を紹介しています。

前回、必要なデータベースとテーブルが作成しました。今回は各テーブル詳細からテーブルを作成するCREATE文を詳しく見ていきます。

テーブル詳細

市場テーブル(jpmarket_tbl)

カラム名日本語名データ型
market_id市場IDTINYINT
market市場名CHAR(10)

市場テーブルでは市場IDと市場区分名で構成します。管理する市場区分は以下のようになります。

東京証券取引所名古屋証券取引所札幌証券取引所福岡証券取引所
プライム市場プレミア市場本則市場本則市場
スタンダード市場メイン市場アンビシャス市場Q-Board市場
グロース市場ネクスト市場

銘柄テーブル(jpstock_tbl)

カラム名日本語名データ型
code_id証券コードSMALLINT
stockname銘柄名CHAR(128)
market_id市場IDTINYINT

銘柄テーブルでは証券コード、銘柄名、市場で構成します。証券コードをプライマリキーとして格納します。

メモテーブル(memo_tbl)

カラム名日本語名データ型
memo_idメモIDINT
code_idメモ対象銘柄SMALLINT
user_idメモ記載ユーザーINT
memoメモTEXT
created_at新規日時DATETIME
updated_at更新日時DATETIME

メモテーブルではメモID、メモ対象銘柄、メモ記載ユーザー、メモ、新規日時、更新日時で構成します。メモIDをプライマリキーとして自動的に整数値を格納します。メモ対象銘柄は銘柄テーブルとリレーションします。またメモ記載ユーザーはユーザーテーブルとリレーションします。

ユーザーテーブル(user_tbl)

カラム名日本語名データ型
user_idユーザーIDINT
usernameユーザー名CHAR(128)
emailメールアドレスCHAR(128)
passwordパスワードCHAR(128)
created_at新規日時DATETIME
updated_at更新日時DATETIME

ユーザーテーブルではユーザーIDとユーザー名、メールアドレス、パスワード、証券コードID、新規日時、更新日時で構成します。ユーザーIDはプライマリキーとして自動的に整数値を格納します。

データ型

CREATE TABLE jpmarket_tbl(
	market_id TINYINT NOT NULL PRIMARY KEY,
	market CHAR(10) UNIQUE
);
CREATE TABLE jpstock_tbl(
	code_id SMALLINT NOT NULL PRIMARY KEY,
	stockname CHAR(128),
	market_id TINYINT
);
CREATE TABLE memo_tbl(
	memo_id INT ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,
	code_id SMALLINT NOT NULL,
	user_id INT NOT NULL,
	memo TEXT(255),
	created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
	updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE user_tbl(
	user_id INT ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,
	username CHAR(128) NOT NULL,
	email CHAR(128) NOT NULL UNIQUE,
	password CHAR(128) NOT NULL,
	created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
	updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

前回のテーブル作成のSQL文を見ながらデータ型から見ていきます。データ型とは整数、文字列、日時などデータの種類を表しています。データ型を指定しておけばデータの正確性の担保できます。

整数型

TINYINT型は一番少ない1バイトのデータ量で整数値を保持します。SMALLINT型はTINYINT型より次に大きい2バイトのデータ量で整数値を保持します。INT型は4バイトのデータ量で整数値を保持します。

文字列型

CHAR型は4バイトのデータ量で文字列を保持します。CHAR型の括弧内の数値は最大文字数を指定します。TEXT型はデータ量を定めずに文字列を保持します。TEXT型も括弧内の数値は最大文字数を指定します。

日付と時間型

DATETIME型は日付と時間の両方を保持します。

カラムの制約

次は上記のSQL文を見ながらカラムの制約を見ていきます。カラムの制約にはデータの正確性の担保やデフォルト値の設定などができます。

PRIMARY KEY

一意性のインデックスとなるキーとなります。

AUTO_INCREMENT

自動的に数値を割り当てます。今回はメモテーブルとユーザーテーブルのPRIMARY KEYに適用して自動的に数値を割り当てています。

NOT NULL

カラム内のデータが必ず必要になります。空白ではエラーとなります。

UNIQUE

データの一意性を担保します。同じデータがあるとエラーとなります。

UNSIGNED

整数値においてプラス値のみを扱います。マイナス値のデータ量をプラス値に加わえるので扱える数値が倍になります。

DEFAULT CURRENT_TIMESTAMP

カラムのデフォルト値として現在の日時を指定します。今回はメモテーブルとユーザーテーブルでデータを登録時に日時を記録するために使っています。

ON UPDATE CURRENT_TIMESTAMP

カラムの値が更新された時の現在の日時を指定します。今回はメモテーブルとユーザーテーブルでデータを更新時に日時を記録するために使っています。

次回は市場テーブルのデータを登録します。

タイトルとURLをコピーしました