web-dev-qa-db-ja.com

マングース:スキーマvsモデル?

チュートリアルを見るとき、特にmongoose/mongodbを扱う場合、スキーマとモデルの間に境界があることがよくあります。そのため、「システム」がそのシステムの下に存在しないように見えるため、postgresqlへの移植がやや混乱します。 2つのアプローチの違いは何ですか?

たとえば、この行に相当するpostgres/sql ORMは何でしょうか?

(mongooseとexpress.js):

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

module.exports = mongoose.model('User', userSchema);
38
dnv

マングースでは、スキーマは特定のドキュメントの構造を完全に、またはドキュメントの一部だけを表しています。これは、期待されるプロパティと値、および制約とインデックスを表現する方法です。モデルは、データベースと対話するためのプログラミングインターフェイスを定義します(読み取り、挿入、更新など)。したがって、スキーマは「このコレクションのデータはどのように見えるでしょうか?」と答えます。モデルは「このクエリに一致するレコードはありますか?」のような機能を提供しますまたは「コレクションに新しいドキュメントを追加する」。

ストレートRDBMSでは、スキーマはDDLステートメント(テーブルの作成、テーブルの変更など)によって実装されますが、モデルの直接的な概念はありません。基本的な挿入、更新だけでなく、非常に柔軟なクエリ(selectステートメント)を実行できるSQLステートメントだけです。 、削除操作。

SQLの性質として、特定のフィールドのみを選択し、関連するテーブルのレコードを結合することで、クエリごとに「モデル」を定義できるという別の考え方があります。

Ruby on Rails)のような他のORMシステムでは、スキーマはActiveRecordメカニズムを介して定義され、モデルはModelサブクラスが追加のビジネスロジックを定義する追加のメソッドです。

64
Peter Lyons