3

データベース スキーマを宣言する必要がなく、エンティティの使用方法に基づいて作成する迅速なデータベース プロトタイピング ツールはありますか。

たとえば、空のデータベース (疑似コード) を想定すると、次のようになります。

user1 = new User()  // Creates the user table with a single id column
user1.firstName = "Allain" // alters the table to have a firstName column as varchar(255)

user2 = new User()  // Reuses the table
user2.firstName = "Bob"
user2.lastName = "Loblaw"  // Alters the table to have a last name column

スキーマを動的に作成するときに行うことができる論理的な仮定があり、DB ツールを使用して後で微調整することで、その選択をいつでもオーバーライドできるためです。

また、この方法で単体テストを行ってスキーマを生成することもできます。

そして明らかに、これはプロトタイピング専用です。

このようなものはありますか?

4

6 に答える 6

2

Google のアプリケーション エンジンは次のように動作します。ツールキットをダウンロードすると、テスト用のデータベース エンジンのローカル コピーが取得されます。

于 2008-08-28T13:39:17.120 に答える
1

GrailsはHibernateを使用してドメインオブジェクトを永続化し、説明したものと同様の動作を生成します。スキーマを変更するには、ドメインを変更するだけです。この単純なケースでは、ファイルの名前はUser.groovyです。

class User {

    String userName
    String firstName
    String lastName
    Date dateCreated
    Date lastUpdated

    static constraints = {
        userName(blank: false, unique: true)
        firstName(blank: false)
        lastName(blank: false)
    }

    String toString() {"$lastName, $firstName"}

}

ファイルを保存すると、スキーマが自動的に変更されます。同様に、scaffoldを使用している場合は、更新されます。プロトタイププロセスは、アプリケーションの実行、ブラウザーでのページの表示、ドメインの変更、ブラウザーの更新、および変更の確認になります。

于 2008-08-28T14:46:07.413 に答える
1

NHibernate のアプローチと自動データベース生成に同意します。ただし、構成ファイルを作成することを避け、コードの近くにとどまりたい場合は、Castle のActiveRecordを使用してください。via 属性を使用して、クラスで「スキーマ」を直接宣言します。

[ActiveRecord]
public class User : ActiveRecordBase<User>
{
     [PrimaryKey]
     public Int32 UserId { get; set; }

     [Property]
     public String FirstName { get; set; }
}

適用できるさまざまな制約 (検証、境界など) があり、異なるデータ モデル クラス間の関係を宣言できます。これらのオプションのほとんどは、属性に追加されるパラメーターです。かなり単純です。

だから、あなたはコードを扱っています。コードで使用法を宣言します。完了したら、ActiveRecordにデータベースを作成させます。

ActiveRecordStarter.Initialize();
ActiveRecordStarter.CreateSchema();
于 2008-09-09T14:57:35.243 に答える
0

オブジェクトデータベースを使用できます。

于 2008-09-09T14:43:31.127 に答える
0

スキーマが必要ですが、生成されていますか、それとも実際にはスキーマが必要ありません?

前者については、@ tom-carter が言ったように、nhibernate を使用します。スキーマを生成してください。これで問題ありません (少なくともアプリをロールアウトするまでは、Tarantino や RedGate SQL Diff など、更新スクリプトを生成するために呼び出されているものを調べてください)。

後者が必要な場合は....今日の午後に発見したように、Googleアプリエンジンがこれを行います。これは非常に優れています。コードを自分の管理下に置いておきたい場合は、CouchDB を検討することをお勧めします。これは、セットアップを行うための少し前もっての作業です。しかし、一度取得すると、完全に 100% スキーマフリーのデータベースになります。ID とバージョンはありますが、それだけです。残りはあなた次第です。http://incubator.apache.org/couchdb/

しかし、その音からすれば (N) hibernate が最適ですが、私は間違っている可能性があります。

于 2008-08-30T20:08:01.977 に答える
0

一般的な質問に正確に答えていない可能性がありますが、 (N)Hibernateを使用した場合は、hbm マッピング ファイルからデータベース スキーマを自動的に生成できます。

あなたが望んでいるように見えるので、あなたのコードから直接行われるのではありませんが、Hibernate Schemaの生成は私たちにとってうまくいくようです

于 2008-08-28T13:40:26.493 に答える