Ответ
Да, существуют. Отсутствие явных связей между коллекциями/таблицами характерно для 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).
Ответ 18+ 🔞
А, ну ты про базы данных, да? Вот это поворот, блядь! Так, слушай сюда, я тебе сейчас такую простыню накатаю, что ты офигеешь, как от Герасима с Муму.
Так вот, да, существуют такие базы, где всё живёт само по себе, как соседи по лестничной клетке, которые друг друга в гробу видали. Это, блядь, в основном NoSQL царство и некоторые извращения в обычных SQL-ках.
1. NoSQL — это вообще отдельная песня, ёпта.
- MongoDB (документная): Представь себе, блядь, кучу ящиков. В одном ящике — пользователи, в другом — логи их действий. И эти ящики нихуя не знают друг о друге. Связь? Какая, нахуй, связь? Ты сам, как разработчик, должен помнить, что вот этот
userIdв логах — это про того чувака из ящика с пользователями. А база тебе в этом не помощник, она тебе 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() }); // Связь? Да ты шутишь! Это только в твоей, блядь, голове связь. - Cassandra, Redis: Тут вообще, блядь, каждая таблица заточена под конкретный запрос, как одноразовый шприц. Спроектировал под одну задачу — и живи с этим. О связях думает тот, кто это проектировал, а база — просто тупое хранилище.
2. Ну и наши, родные, SQL-базы.
Тут, конечно, поинтереснее. Можно сделать таблицы и не объявлять внешние ключи (FOREIGN KEY). Вообще. Никаких. Представь: у тебя таблица заказы и таблица клиенты. И в заказах просто лежит client_id. А база даже не в курсе, что это за хуйня и есть ли такой клиент вообще. Всё на твоей совести, разработчик! Пиздец, да?
Особенно это любят в хранилищах данных (Data Warehouse), в этих схемах «звезда». Там есть одна жирная факт-таблица, а вокруг неё вертятся справочники (dimensions). И они могут быть абсолютно независимыми, блядь, сущностями. Каждый сам за себя, как в джунглях.
Вот так-то, дружок. Мир баз данных — он разный, блядь. Есть где всё по струнке, с связями и ограничениями, а есть — полный бардак и анархия, где ты сам царь и бог. Выбирай, что душе угодно, только потом не жалуйся, что данные поехали куда-то не туда.