Существуют ли базы данных, где таблицы не имеют связей между собой?

«Существуют ли базы данных, где таблицы не имеют связей между собой?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, существуют. Отсутствие явных связей между коллекциями/таблицами характерно для NoSQL баз данных и некоторых архитектурных подходов в реляционных СУБД.

1. NoSQL базы данных (документные, ключ-значение, колоночные):

  • MongoDB (документная): Данные хранятся в независимых коллекциях документов. Связи обычно моделируются через вложение документов или ссылки (ObjectId), но внешние ключи и JOIN'ы как в SQL отсутствуют.
    // Коллекция 'users' (независима)
    db.users.insertOne({ _id: "user_1", name: "Alice", email: "alice@example.com" });
    // Коллекция 'logs' (независима)
    db.logs.insertOne({ _id: ObjectId(), event: "login", userId: "user_1", timestamp: ISODate() });
    // Связь между 'users' и 'logs' существует только на логическом уровне приложения.
  • Cassandra, Redis: Таблицы (или структуры) также проектируются независимо под конкретные запросы.

2. Реляционные (SQL) базы данных:

  • Таблицы могут существовать без объявленных внешних ключей (FOREIGN KEY). Связь между данными в этом случае поддерживается только на уровне логики приложения.
  • Это часто встречается в схемах типа «звезда» (star schema) для хранилищ данных (Data Warehouse), где есть большая факт-таблица, окруженная независимыми справочными таблицами (dimensions).