Mangosta: Esquema vs Modelo?


Al mirar tutoriales, a menudo hay una delineación entre un esquema y un modelo, particularmente cuando se trata de mongoose/mongodb. Esto hace que la transferencia a postgresql sea algo confusa, ya que los' modelos ' no parecen existir bajo ese sistema. ¿Cuál es la diferencia entre los dos enfoques?

Por ejemplo, ¿qué sería un equivalente postgres/sql sql de esta línea?

(mangosta y expreso.js):

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

module.exports = mongoose.model('User', userSchema);
Author: Community, 2014-04-09

1 answers

En mongoose, un esquema representa la estructura de un documento en particular, ya sea completamente o solo una parte del documento. Es una forma de expresar propiedades y valores esperados, así como restricciones e índices. Un modelo define una interfaz de programación para interactuar con la base de datos (lectura, inserción, actualización, etc.). Así que un esquema responde "¿cómo serán los datos de esta colección?"y un modelo proporciona funcionalidad como" ¿Hay algún registro que coincida con esta consulta?"o" Añadir un nuevo documento a la colección".

En RDBMS rectos, el esquema se implementa mediante instrucciones DDL (create table, alter table, etc.), mientras que no hay un concepto directo de modelo, solo instrucciones SQL que pueden realizar consultas altamente flexibles (instrucciones select), así como operaciones básicas de inserción, actualización y eliminación.

Otra forma de pensar es que la naturaleza de SQL le permite definir un "modelo" para cada consulta seleccionando solo campos particulares, así como unir registros de tablas relacionadas junto.

En otros sistemas OR como Ruby on Rails, el esquema se define a través de mecanismos ActiveRecord y el modelo son los métodos adicionales que su subclase de Modelo agrega que definen lógica de negocio adicional.

 48
Author: Peter Lyons,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-08 23:53:34