Таблица — это фундаментальная структура данных в реляционных базах данных, представляющая собой двумерную структуру для хранения и организации информации. Таблицы состоят из строк (записей) и столбцов (полей), образующих ячейки для хранения конкретных значений данных.
Столбцы (Поля)
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
birth_date DATE,
salary DECIMAL(10,2)
);
Строки (Записи)
INSERT INTO employees VALUES
(1, 'Иван Петров', '1990-05-15', 75000.00),
(2, 'Мария Сидорова', '1985-11-22', 82000.50);
Первичный ключ (Primary Key)
CREATE TABLE order_items (
order_id INT,
product_id INT,
quantity INT,
PRIMARY KEY (order_id, product_id)
);
Обычные (базовые) таблицы
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
price NUMERIC(10,2) CHECK (price > 0)
);
Временные таблицы
CREATE TABLE #temp_results (
id INT,
calculation_result FLOAT
);
Виртуальные таблицы (Представления)
CREATE VIEW active_employees AS
SELECT id, name, department
FROM employees
WHERE active = TRUE;
Создание таблицы
CREATE TABLE departments (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(50) NOT NULL UNIQUE,
budget DECIMAL(12,2) DEFAULT 100000.00
);
Изменение структуры
ALTER TABLE employees
ADD COLUMN email VARCHAR(100) UNIQUE;
Удаление таблицы
DROP TABLE IF EXISTS old_employees;
Манипуляция данными
-- Вставка
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;
Нормализация
-- Денормализованная таблица
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
);
Индексы для ускорения поиска
CREATE INDEX idx_employee_name ON employees(name);
Ограничения целостности
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 'Статус обработки транзакции';
Таблица в базе данных — это структурированный набор данных, организованный в виде строк и столбцов. Ключевые аспекты:
Правильное проектирование таблиц — критически важный этап создания эффективной базы данных, влияющий на производительность, целостность и масштабируемость системы.