Яндекс.Метрика
qr-код - Как-то так стрелка - Как-то так
Ведущий экономист + ... пиктограмма - Как-то Так THIS     Экономическая грамотность и web-решения
Всё по теме: что, как и почему. Актуальные вещи - своими словами.
Повышайте своё качество WITH ME - СПЭМ !
Если тебе не нравится то, что ты получаешь, измени то, что ты даешь. © Карлос Кастанеда     KAKTOTAK.BY - услуги по экономическому проектированию и web-разработке (php/js - telegram, WordPress, Laravel, Vue, SEO)    Кооперация - на постоянной основе    Будь в теме   -    ПОДПИШИСЬ      Мои заметки - ЭКОНОМИКА +  и  Справочник WEB-разработчика | php+js+seo   в Telegram   telegram  

Сопоставимость типов полей MySQL при миграциях в Laravel

Сопоставимость типов полей MySQL при миграциях в Laravel

Задание правильных типов полей в таблице MySQL - это важный этап проектирования базы данных. Правильные типы данных помогут оптимизировать хранение информации и ускорить выполнение запросов.

Основные типы данных MySQL и рекомендации по их использованию, в том числе при миграциях в Laravel.

Типы полей в MySQL

1. Числовые типы

- INT: Используется для целых чисел.
- TINYINT: Для очень небольших целых чисел (от -128 до 127 или от 0 до 255).
- SMALLINT: Для небольших целых чисел (от -32,768 до 32,767).
- MEDIUMINT: Для средних целых чисел (от -8,388,608 до 8,388,607).
- BIGINT: Для больших целых чисел (от -2^63 до 2^63-1).
- FLOAT и DOUBLE: Для чисел с плавающей запятой.

2. Строковые типы

- VARCHAR(n): Для строк переменной длины.
- CHAR(n): Для строк фиксированной длины.
- TEXT: Для хранения больших текстов.
- BLOB: Для хранения двоичных данных.

3. Дата и время

- DATE: Для хранения даты (YYYY-MM-DD).
- TIME: Для хранения времени (HH:MM:SS).
- DATETIME: Для хранения даты и времени (YYYY-MM-DD HH:MM:SS).
- TIMESTAMP: Похоже на DATETIME, но автоматически обновляется при изменении записи.

4. Логические типы

- BOOLEAN: Используется TINYINT(1) для логических значений.

Рекомендации по выбору типов данных

1. Используйте минимально необходимый тип данных для ваших нужд.
2. Используйте VARCHAR для строк, которые могут изменяться по длине, а CHAR для фиксированных строк.
3. При использовании индексов учитывайте, что более длинные поля замедляют операции.
4. Для цен используйте DECIMAL с заданным количеством знаков после запятой.

Пример таблицы с правильными типами данных


CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    description TEXT,
    price DECIMAL(10, 2) NOT NULL,
    quantity INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

    

Типы полей в Laravel

Примеры миграций с различными типами данных

1. Числовые типы


Schema::create('products', function (Blueprint $table) {
    $table->id(); // Это по умолчанию BIGINT
    $table->tinyInteger('rating')->nullable(); // TINYINT
    $table->smallInteger('stock')->default(0); // SMALLINT
    $table->integer('price'); // INT
    $table->float('discount')->nullable(); // FLOAT
    $table->double('price_with_tax', 15, 8); // DOUBLE
});

    

2. Строковые типы


Schema::create('users', function (Blueprint $table) {
    $table->id(); // BIGINT
    $table->string('name', 100); // VARCHAR(100)
    $table->string('email')->unique(); // VARCHAR
    $table->char('country_code', 2); // CHAR(2)
    $table->text('bio')->nullable(); // TEXT
    $table->binary('avatar')->nullable(); // BLOB
});

    

3. Типы даты и времени


Schema::create('orders', function (Blueprint $table) {
    $table->id(); // BIGINT
    $table->date('order_date'); // DATE
    $table->time('delivery_time'); // TIME
    $table->dateTime('created_at')->useCurrent(); // DATETIME
    $table->timestamp('updated_at')->nullable(); // TIMESTAMP
});

    

4. Логические типы


Schema::create('settings', function (Blueprint $table) {
    $table->id(); // BIGINT
    $table->boolean('is_active')->default(true); // TINYINT(1)
});

    

Пример полной миграции


use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateProductsTable extends Migration
{
    public function up()
    {
        Schema::create('products', function (Blueprint $table) {
            $table->id(); // BIGINT
            $table->string('name', 100); // VARCHAR(100)
            $table->text('description')->nullable(); // TEXT
            $table->decimal('price', 10, 2); // DECIMAL (10, 2)
            $table->integer('quantity')->default(0); // INT
            $table->timestamps(); // created_at и updated_at
        });
    }

    public function down()
    {
        Schema::dropIfExists('products');
    }
}

    

Общие рекомендации

1. Используйте nullable(): Для полей, которые могут не иметь значения.
2. Используйте default(value): Для задания значений по умолчанию.
3. Имейте в виду уникальность: Метод unique() обеспечивает уникальность значения в столбце.

автор - Михаленко Р.
M R. Автор - kaktotak.by Специализация: финансово-экономическое проектирование - моделирование бизнеса, инвестиционных проектов реального сектора, анализ и оценка эффективности, оптимизация системы управленческих решений.

Широкий спектр web-компетенций для решения задач бизнеса.

Подписывайтесь на мой телеграмм канал - Мои заметки - ЭКОНОМИКА +
Там я ничего не втюхиваю и не навязываю. Просто делюсь полезной информацией по экономической грамотности. Повышайте своё качество вместе со мной: что, как и почему в экономике на простом языке. Понятия, алгоритмы, процессы, микро- и макроаспекты и многое другое. Может, будет интересно !

А так же - Справочник WEB-разработчика | php+js+seo
Заметки и нативные решения простых локальных задач на PHP, JS. Кое-что про Laravel, WordPress, Vue и SEO.

  Персональная помощь в экономическом проектировании и веб-разработке:

  • Финансово-экономическое моделирование, анализ, учёт, бизнес-планирование
  • Комплексная web-разработка/поддержка проекта в сети (php/js, seo – Laravel, WordPress, Vue, telegram, администрирование, контент, реклама в Яндекс Директ

  telegram или форма обратной связи

Administrator
237
0
Имя
E-mail
Рейтинг
Отзыв

Конвертер валют
RUB RUB-icon
USD USD-icon
EUR EUR-icon
CNY CNY-icon
BYN BYN-icon
UAH UAH-icon
KZT KZT-icon
SHORT - о чём речь
ЭКОНОМИЧЕСКАЯ ГРАМОТНОСТЬ
Хочу Всё Знать. Полезные Советы