راهنمای جامع انواع داده در MariaDB
راهنمای جامع انواع داده در MariaDB
راهنمای جامع انواع داده در MariaDB 11
انتخاب نوع داده مناسب در MariaDB 11 یکی از مهمترین تصمیمها در طراحی پایگاه داده است. این انتخاب مستقیماً روی سرعت اجرای کوئریها، یکپارچگی دادهها و مصرف فضای ذخیرهسازی تأثیر میگذارد. اگر نوع داده را درست انتخاب کنید، دیتابیس شما سریعتر، سبکتر و مقیاسپذیرتر خواهد بود.
MariaDB بهعنوان یک سیستم مدیریت پایگاه داده متنباز قدرتمند، مجموعهای کامل از انواع داده را ارائه میدهد که هر کدام برای سناریوهای خاصی طراحی شدهاند. در این راهنمای کامل، با همه Data Typeهای MariaDB 11 و کاربردهای آنها آشنا میشوید.
دستهبندی انواع داده در MariaDB 11
انواع داده در MariaDB به ۶ گروه اصلی تقسیم میشوند:
- انواع عددی (Numeric Types)
- انواع رشتهای (String Types)
- انواع تاریخ و زمان (Date & Time Types)
- انواع JSON
- انواع ENUM و SET
- انواع فضایی (Spatial Types)
۱. انواع عددی (Numeric Types)
انواع عددی برای ذخیره اعداد صحیح و اعشاری استفاده میشوند و انتخاب درست آنها تأثیر زیادی بر Performance دارد.
اعداد صحیح (Integer Types)
| نوع داده | محدوده Signed | محدوده Unsigned | حافظه | کاربرد |
|---|---|---|---|---|
| TINYINT | -128 تا 127 | 0 تا 255 | 1 بایت | سن، وضعیت بولی |
| SMALLINT | -32768 تا 32767 | 0 تا 65535 | 2 بایت | تعداد کم، کد محصول |
| MEDIUMINT | -8M تا 8M | 0 تا 16M | 3 بایت | شمارش بازدید |
| INT | حدود ±2 میلیارد | تا 4 میلیارد | 4 بایت | شناسهها (پرکاربرد) |
| BIGINT | بسیار بزرگ | بسیار بزرگ | 8 بایت | دادههای حجیم |
نکته مهم
همیشه کوچکترین نوع داده ممکن را انتخاب کنید. مثلاً برای سن افراد، TINYINT بسیار بهینهتر از INT است.
اعداد اعشاری (Decimal & Floating)
| نوع داده | ویژگی | کاربرد |
|---|---|---|
| DECIMAL | دقت ثابت | مالی و حسابداری |
| FLOAT | دقت شناور کمتر | دادههای علمی سبک |
| DOUBLE | دقت شناور بالا | محاسبات دقیق |
⚠️ هشدار مهم
برای دادههای مالی همیشه از DECIMAL استفاده کنید؛ زیرا FLOAT و DOUBLE خطای گرد کردن دارند.
مثال عملی
CREATE TABLE products (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
price DECIMAL(10,2) NOT NULL,
stock SMALLINT UNSIGNED DEFAULT 0,
is_active TINYINT(1) DEFAULT 1
);
۲. انواع رشتهای (String Types)
رشتهها برای ذخیره متن، ایمیل، آدرس و دادههای کاراکتری استفاده میشوند.
رشتههای کاراکتری
| نوع داده | حداکثر طول | ویژگی | کاربرد |
|---|---|---|---|
| CHAR(n) | 255 | طول ثابت | کد ملی، جنسیت |
| VARCHAR(n) | 65535 | طول متغیر | نام، ایمیل |
| TEXT | 64KB | متن بلند | توضیحات |
| MEDIUMTEXT | 16MB | متن خیلی بلند | مقاله |
| LONGTEXT | 4GB | متن بسیار بزرگ | اسناد حجیم |
تفاوت CHAR و VARCHAR
CHARهمیشه فضای ثابت میگیردVARCHARفقط به اندازه داده فضا مصرف میکند- در اکثر پروژهها VARCHAR انتخاب بهتر است
مثال
CREATE TABLE users (
national_code CHAR(10),
full_name VARCHAR(100)
);
رشتههای باینری
| نوع داده | کاربرد |
|---|---|
| BINARY / VARBINARY | داده رمزنگاریشده |
| BLOB | فایل باینری کوچک |
| MEDIUMBLOB | فایل متوسط |
| LONGBLOB | فایل بسیار بزرگ |
🔐 نکته امنیتی: معمولاً بهتر است فایلها را در File Server ذخیره کنید و فقط مسیرشان را در دیتابیس نگه دارید.
۳. انواع تاریخ و زمان (Date & Time)
انتخاب درست نوع زمانی برای گزارشگیری و لاگها بسیار مهم است.
| نوع داده | کاربرد |
|---|---|
| DATE | فقط تاریخ |
| TIME | مدت زمان |
| DATETIME | تاریخ و زمان کامل |
| TIMESTAMP | رویدادهای وابسته به timezone |
| YEAR | فقط سال |
تفاوت DATETIME و TIMESTAMP
DATETIME
- مستقل از timezone
- محدوده وسیع
- مناسب اکثر پروژهها
TIMESTAMP
- وابسته به timezone
- سبکتر
- مناسب لاگهای سیستمی
مثال
CREATE TABLE orders (
id INT PRIMARY KEY,
order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
delivery_date DATE,
preparation_time TIME,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
۴. نوع داده JSON در MariaDB 11
پشتیبانی از JSON در MariaDB 11 امکان ذخیره دادههای نیمهساختیافته را فراهم میکند.
مزایا
- اعتبارسنجی خودکار JSON
- دسترسی به کلیدها
- امکان ایندکس روی فیلدهای JSON
- انعطافپذیری بالا
مثال
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
attributes JSON
);
SELECT * FROM products
WHERE attributes->>'$.brand' = 'Dell';
۵. انواع ENUM و SET
این نوعها برای مقادیر محدود بسیار کاربردی هستند.
| نوع | توضیح |
|---|---|
| ENUM | فقط یک مقدار از لیست |
| SET | چند مقدار از لیست |
مثال
CREATE TABLE orders (
id INT PRIMARY KEY,
status ENUM('pending','processing','completed','cancelled'),
flags SET('urgent','gift','priority')
);
✅ برای فیلدهای با گزینه محدود، ENUM بسیار بهینه است.
۶. انواع داده فضایی (Spatial Types)
برای پروژههای GIS و موقعیت مکانی استفاده میشوند.
| نوع | کاربرد |
|---|---|
| GEOMETRY | نوع پایه |
| POINT | مختصات |
| LINESTRING | خط |
| POLYGON | چندضلعی |
مثال
CREATE TABLE locations (
id INT PRIMARY KEY,
name VARCHAR(100),
coordinates POINT
);
راهنمای انتخاب بهترین نوع داده در MariaDB
برای طراحی دیتابیس حرفهای این اصول را رعایت کنید:
✅ قانونهای طلایی
- کوچکترین نوع داده ممکن را انتخاب کنید
- برای پول از
DECIMALاستفاده کنید - برای متن کوتاه از
VARCHARاستفاده کنید - از
JSONفقط وقتی لازم است استفاده کنید - به ایندکسپذیری فیلدها توجه کنید
- رشد آینده دادهها را پیشبینی کنید
جدول انتخاب سریع Data Type
| سناریو | نوع پیشنهادی |
|---|---|
| Primary Key | INT |
| وضعیت بولی | TINYINT |
| قیمت و پول | DECIMAL |
| نام و ایمیل | VARCHAR |
| کد ثابت | CHAR |
| متن بلند | TEXT |
| زمان رویداد | DATETIME |
| داده منعطف | JSON |
| گزینه محدود | ENUM |
جمعبندی
شناخت درست انواع داده در MariaDB 11 یکی از پایههای طراحی دیتابیس حرفهای است. انتخاب هوشمندانه Data Type باعث میشود:
- سرعت کوئریها افزایش یابد
- مصرف حافظه کاهش پیدا کند
- مقیاسپذیری سیستم بهتر شود
- یکپارچگی داده حفظ شود
اگر در هر جدول، نوع داده را آگاهانه انتخاب کنید، دیتابیس شما در بلندمدت پایدار و سریع باقی میماند.