Атрибуты, ключи

пятница, сент. 19, 2025 | 3 минуты чтения

Атрибуты, ключи

Термины

Отношения - таблица в бд

Кортежи - строка значений в таблице

Атрибут - столбец в таблице

Свойства

Отношения - не упорядочены Атрибуты - не упорядочены Кортежи - каждый из кортежей уникален

У каждого атрибута(столбца) должно быть уникальное значение в рамках своей таблицы.

У каждого кортежа есть по 1 значению каждого атрибута, которое принадлежит домену атрибута в рамках таблицы в которой содержится данный кортеж.

[!info] Домен атрибута ^atr-domen Это множество допустимых значений данного атрибута, определяющее его тип данных и накладывающее ограничение на его значения

Основные виды атрибутов:

Вид атрибутаОписаниеПример
ПростойНеделимые, невозможно разделить на более мелкие части.Имя, цена
СоставнойДелимые, могут состоять из нескольких податрибутов.Адрес (Страна,город,улица, дом)
ОднозначныйПринадлежит только одно значение для каждой записи.Дата рождения, id пользователя
МногозначныйМожет иметь несколько значенийНомера телефонов или электронные почты человека
ПроизводныйВычисляются из других атрибутовСтоимость товара со скидкой

стоимость со скидкой = цена - (цена * процент скидки )

Основные виды доменов:

Вид доменаПример
Тип данных + ограниченияVARCHAR(50) (имя), DECIMAL(10, 2) (цена), ограничения UNIQUE, NOT NULL
Целостность данныхКогда связываем таблицу с FORING KEY, с таблицей по PRIMARY KEY, так мы гарантируем связность и целостность данных
СогласованностьНапример, что наше значение электронной почты должно содержать в себе @. Возраст должен быть $\ge$ 0 и так далее

Определения

  • Степень отношения - количество атрибутов
  • Кардинальность отношения - количество кортежей в данной таблице
  • Кардинальность атрибутов - количество уникальных значений в атрибуте
  • Селективность - количество строк удовлетворяющих выражению WHERE

Реляционные ключи

  • Супер ключ - набор атрибутов которые уникально идентифицируют каждый кортеж
  • Потенциальный ключ - минимальный супер ключ
  • Первичный ключ (Primary key) - выбранный потенциальный ключ
  • Вторичный ключ (Foring key ) - ссылается на PK из другой таблицы
  • Альтернативный ключ - не выбранный потенциальный ключ

Типы реляционных ключей

  • Простой ключ - состоит из одного атрибута
  • Составной - из нескольких атрибутов
  • Естественный - атрибут, который сущность содержит само по себе, имеет значение (Фамилия, если есть гарантия, что она одна будет в нашей базе -> Все фамилии уникальны)
  • Суррогатный - атрибут, который не имеет значения для сущности (Например: id)

[!important] Недостаток естественного ключа - иногда он может меняться

[!tip] Лучше всего использовать суррогатный, который будет:

  • Целочисленный
  • uuid (universal unique identifier)

Типы данных:

  • Целочисленные типы (smallint, int, bigint)
  • С плавающей точкой (decimal, real)
  • Строки (varchar, char, text)
  • Дата и время (date time, timestamp, interval)
  • Логический тип (bool)
  • Геометрические (point, path, line)
  • JSON
  • NULL
Тип данныхПример / Пояснение
smallintцелое число небольшого диапазона (0 - 32767)
intСтандартное целое чисто $2^{32}$ ($-2^{16}, 0, 2^{16} -1$)
bigintОчень большие числа
decimalЧисло с фиксированной точностью
varcharСтрока переменной длины с заданным ограничением по ее длинне
charСтрока фиксированной длины, всегда строки с определенной длинной
textДлинный текст
date timeДата и время
timestampОтметка времени
intervalПромежуток времени
booltrue, false
pointгеометрическая точка
pathгеометрический путь состоящий из нескольких точек
lineЛиняя бесконечной длины
JSONСтруктурированные данные в формате json
realЧисло с плавающей точкой аналог float

DML

[!info] DML Это язык манипулирования данными

ВидыОписание
SELECTПолучение данных таблиц базы данных
INSERTДобавляет новые кортежи в таблицу базы данных
UPDATEОбновляет существующие кортежи в таблице
DELETEУдаляет существующие записи по заданному условию
MERGEВыполняет функции вставки и обновления одновременно.

Запись существует -> обновляем

Запись не существует -> добавляем новую

DDL

[!info] DDL Это язык описания данных

ВидыОписание
CREATE TABLEСоздает таблицу
ALTER TABLEИзменяет структуру существующей таблицы
DROPУдаляет таблицу из БД
TRUNCATEУдаляет все кортежи оставляя атрибуты для дальнейшего использования таблицы