Подтвердить что ты не робот

Монгуз: схема против модели?

При изучении руководств часто существует разграничение между схемой и моделью, особенно при работе с mongoose/mongodb. Это делает перенос на postgresql несколько запутанным, поскольку "модели", похоже, не существуют в этой системе. В чем разница между двумя подходами?

Например, что будет эквивалентом ORM postgres/sql этой строки?

(mongoose и express.js):

var userSchema = schema.define('local', {
    username:       String,
    password:       String,
});

module.exports = mongoose.model('User', userSchema);
4b9b3361

Ответ 1

В мангусте схема представляет собой структуру конкретного документа, полностью или просто часть документа. Это способ выражения ожидаемых свойств и значений, а также ограничений и индексов. Модель определяет интерфейс программирования для взаимодействия с базой данных (чтение, вставка, обновление и т.д.). Итак, схема отвечает: "Как будут выглядеть данные в этой коллекции?" и модель предоставляет такие функции, как "Есть ли записи, соответствующие этому запросу?" или "Добавить новый документ в коллекцию".

В прямой РСУБД схема реализуется операторами DDL (create table, alter table и т.д.), тогда как нет прямой концепции модели, просто SQL-операторов, которые могут выполнять очень гибкие запросы (select statements), а также базовые вставлять, обновлять, удалять операции.

Еще один способ подумать о природе SQL позволяет вам определить "модель" для каждого запроса, выбирая только определенные поля, а также объединяя записи из связанных таблиц.

В других системах ORM, таких как Ruby on Rails, схема определяется с помощью механизмов ActiveRecord, а модель - это дополнительные методы, добавленные подклассом Model, которые определяют дополнительную бизнес-логику.