Что такое таблица в базе данных?sql-7

Таблица — это фундаментальная структура данных в реляционных базах данных, представляющая собой двумерную структуру для хранения и организации информации. Таблицы состоят из строк (записей) и столбцов (полей), образующих ячейки для хранения конкретных значений данных.

Основные компоненты таблицы

  1. Столбцы (Поля)

    • Определяют структуру и тип хранимых данных
    • Каждый столбец имеет:
      • Уникальное имя в пределах таблицы
      • Определенный тип данных (INT, VARCHAR, DATE и др.)
      • Ограничения (NOT NULL, UNIQUE и т.д.)
    • Пример определения столбцов:
      CREATE TABLE employees (
          id INT PRIMARY KEY,
          name VARCHAR(100) NOT NULL,
          birth_date DATE,
          salary DECIMAL(10,2)
      );
      
  2. Строки (Записи)

    • Представляют отдельные экземпляры данных
    • Каждая строка содержит значения для всех или части столбцов
    • Пример строк в таблице employees:
      INSERT INTO employees VALUES
          (1, 'Иван Петров', '1990-05-15', 75000.00),
          (2, 'Мария Сидорова', '1985-11-22', 82000.50);
      
  3. Первичный ключ (Primary Key)

    • Уникальный идентификатор каждой строки
    • Может состоять из одного или нескольких столбцов
    • Пример составного первичного ключа:
      CREATE TABLE order_items (
          order_id INT,
          product_id INT,
          quantity INT,
          PRIMARY KEY (order_id, product_id)
      );
      

Типы таблиц в различных СУБД

  1. Обычные (базовые) таблицы

    • Основной тип для хранения данных
    • Пример в PostgreSQL:
      CREATE TABLE products (
          id SERIAL PRIMARY KEY,
          name TEXT NOT NULL,
          price NUMERIC(10,2) CHECK (price > 0)
      );
      
  2. Временные таблицы

    • Существуют только в течение сеанса или транзакции
    • Пример в SQL Server:
      CREATE TABLE #temp_results (
          id INT,
          calculation_result FLOAT
      );
      
  3. Виртуальные таблицы (Представления)

    • Не хранят данные, а представляют результат запроса
    • Пример создания представления:
      CREATE VIEW active_employees AS
      SELECT id, name, department
      FROM employees
      WHERE active = TRUE;
      

Операции с таблицами

  1. Создание таблицы

    CREATE TABLE departments (
        dept_id INT PRIMARY KEY,
        dept_name VARCHAR(50) NOT NULL UNIQUE,
        budget DECIMAL(12,2) DEFAULT 100000.00
    );
    
  2. Изменение структуры

    ALTER TABLE employees
    ADD COLUMN email VARCHAR(100) UNIQUE;
    
  3. Удаление таблицы

    DROP TABLE IF EXISTS old_employees;
    
  4. Манипуляция данными

    -- Вставка
    INSERT INTO departments VALUES (1, 'IT', 150000.00);
    
    -- Обновление
    UPDATE employees
    SET salary = salary * 1.1
    WHERE department_id = 1;
    
    -- Удаление
    DELETE FROM products
    WHERE discontinued = TRUE;
    

Важность правильного проектирования таблиц

  1. Нормализация

    • Устранение избыточности данных
    • Пример нормализации:
      -- Денормализованная таблица
      CREATE TABLE orders_denormalized (
          order_id INT,
          customer_name VARCHAR(100),
          product_name VARCHAR(100),
          -- ... другие поля
      );
      
      -- Нормализованная структура
      CREATE TABLE orders (
          order_id INT PRIMARY KEY,
          customer_id INT REFERENCES customers(customer_id)
      );
      
      CREATE TABLE order_items (
          order_id INT REFERENCES orders(order_id),
          product_id INT REFERENCES products(product_id),
          quantity INT
      );
      
  2. Индексы для ускорения поиска

    CREATE INDEX idx_employee_name ON employees(name);
    
  3. Ограничения целостности

    ALTER TABLE employees
    ADD CONSTRAINT fk_department
    FOREIGN KEY (department_id)
    REFERENCES departments(dept_id);
    

Пример сложной таблицы

CREATE TABLE financial_transactions (
    transaction_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    account_id INT NOT NULL REFERENCES accounts(account_id),
    transaction_date TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
    amount DECIMAL(15,2) NOT NULL,
    currency CHAR(3) NOT NULL,
    description TEXT,
    status VARCHAR(20) CHECK (status IN ('PENDING', 'COMPLETED', 'FAILED')),
    created_by INT REFERENCES employees(employee_id),
    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMPTZ,
    CONSTRAINT chk_amount CHECK (amount != 0)
);

COMMENT ON TABLE financial_transactions IS 'Содержит все финансовые операции системы';
COMMENT ON COLUMN financial_transactions.status IS 'Статус обработки транзакции';

Резюмируем

Таблица в базе данных — это структурированный набор данных, организованный в виде строк и столбцов. Ключевые аспекты:

  • Основная единица хранения в реляционных СУБД
  • Имеет строго определенную структуру (столбцы с типами)
  • Содержит записи (строки) с фактическими данными
  • Может иметь ограничения и связи с другими таблицами
  • Поддерживает операции CRUD (Create, Read, Update, Delete)

Правильное проектирование таблиц — критически важный этап создания эффективной базы данных, влияющий на производительность, целостность и масштабируемость системы.