SQL整数型をSequelize DataTypesにマッピングする
INT、BIGINT、SMALLINT、TINYINT、MEDIUMINTなどのSQL整数型がSequelize DataTypesの対応にサイズ考慮も含めてどのようにマッピングされるかを学びます。
Basic Models
詳細な説明
SQL整数型とSequelize DataTypes
SQLデータベースはストレージ最適化のために複数の整数サイズをサポートしています。Sequelizeは各サイズに対応する専用のDataTypes定数を提供し、コンバーターは各型を正確にマッピングします。
標準マッピング表
| SQL型 | Sequelize DataType | ストレージ | 範囲 |
|---|---|---|---|
TINYINT |
DataTypes.TINYINT |
1バイト | -128〜127 |
SMALLINT |
DataTypes.SMALLINT |
2バイト | -32,768〜32,767 |
MEDIUMINT |
DataTypes.MEDIUMINT |
3バイト | -8M〜8M |
INT / INTEGER |
DataTypes.INTEGER |
4バイト | -2B〜2B |
BIGINT |
DataTypes.BIGINT |
8バイト | 非常に大きい |
変換例
CREATE TABLE metrics (
id BIGINT PRIMARY KEY,
status_code SMALLINT NOT NULL,
retry_count TINYINT DEFAULT 0,
request_count INTEGER NOT NULL,
byte_size BIGINT
);
Metric.init({
id: { type: DataTypes.BIGINT, primaryKey: true, allowNull: false },
status_code: { type: DataTypes.SMALLINT, allowNull: false },
retry_count: { type: DataTypes.TINYINT, allowNull: true, defaultValue: 0 },
request_count: { type: DataTypes.INTEGER, allowNull: false },
byte_size: { type: DataTypes.BIGINT, allowNull: true },
}, { ... });
TINYINT(1)ブーリアンパターン
MySQLはTINYINT(1)を事実上のブーリアン型として使用します。コンバーターはこの特定のパターンを検出し、DataTypes.TINYINTの代わりにDataTypes.BOOLEANにマッピングします:
is_verified TINYINT(1) DEFAULT 0
-- 変換後 -->
is_verified: { type: DataTypes.BOOLEAN, defaultValue: false }
PostgreSQLのエイリアス
PostgreSQLはINT2(SMALLINT)、INT4(INTEGER)、INT8(BIGINT)のエイリアスを提供します。コンバーターはこれらすべてを認識し、適切なSequelize DataTypeにマッピングします。SERIALとBIGSERIALはそれぞれ自動インクリメントのINTEGERとBIGINTとして扱われます。
ユースケース
カウンター、バイトサイズ、ステータスコードを格納するテーブルを持つアナリティクスシステムを設計しており、Sequelizeで正しい整数サイズを選択することがストレージ効率とクエリが返すJavaScriptの数値型の両方に影響する場合。