2008-08-28 3 views
1

데이터베이스 스키마를 선언 할 필요가없는 빠른 데이터베이스 프로토 타이핑 도구가 있습니까? 대신 엔티티를 사용하는 방식에 따라 스크립트 스키마를 만들면됩니다. 빈 데이터베이스를 가정 예를 들어Adaptive Database

, (의사 코드) :

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 도구를 사용하여 선택을 무시할 수 있기 때문에 나중에 조정할 수 있습니다.

또한이 방법으로 단위 테스트를 수행하여 스키마를 생성 할 수 있습니다.

분명히 이것은 프로토 타이핑을위한 것입니다.

거기에 뭔가가 있습니까?

답변

2

Google's Application Engine은 이와 같이 작동합니다. 툴킷을 다운로드하면 테스트를 위해 데이터베이스 엔진의 로컬 복사본을 얻게됩니다.

0

일반 질문에 정확히 응답하지 않을 수도 있지만 (N)Hibernate을 사용하면 hbm 매핑 파일에서 데이터베이스 스키마가 자동으로 생성됩니다. 당신이 원하는 것 같다하지만, 최대 절전 모드 스키마 생성이 우리를 위해 잘

1

Grails의 작동하도록 보인다 사용자 코드에서 직접 수행

아니고는 도메인 객체를 유지하기 위해 최대 절전 모드를 사용하고 당신이 설명하는 것과 비슷한 동작을 생산하고 있습니다. 스키마를 변경하기 위해서는 간단히 도메인을 수정하십시오.이 간단한 경우 파일의 이름은 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"} 

} 

파일을 저장하면 스키마가 자동으로 변경됩니다. 마찬가지로 스캐 폴딩을 사용하는 경우 업데이트됩니다. 프로토 타입 프로세스는 응용 프로그램을 실행하고 브라우저에서 페이지를보고 도메인을 수정하고 브라우저를 새로 고치고 변경 사항을 확인합니다.

0

스키마를 만들지 만 생성 했습니까, 아니면 실제로 하시겠습니까 스키마가 없음?

나는 이전에 nhibernate를 @ tom-carter와 같이 사용할 것이라고 말했다. 그것은 당신을 위해 당신의 스키마를 생성하고, 당신이 앱을 롤아웃 할 때까지 적어도 좋다. 그리고 Tarantino와 RedGate SQL Diff 같은 것을 보거나 업데이트 스크립트를 생성하기 위해 호출 된 것이 무엇이든간에.

후자를 원한다면 .... 오늘 오후에 발견 한 것처럼 google app 엔진이이를 수행합니다. 매우 훌륭합니다. 컨트롤 아래에 코드를 고수하고 싶다면 CouchDB를 살펴 보는 것이 좋습니다. 즉, 설치를 시작하기위한 약간의 작업입니다. 그러나 일단 데이터베이스에 저장하면 완전히 100 % 스키마가없는 데이터베이스입니다. 글쎄, 당신은 ID와 버전을 가지고 있지만, 나머지는 당신에게 달린 것입니다. http://incubator.apache.org/couchdb/

하지만 소리가 나는 (N) 최대 절전 모드가 가장 좋지만 잘못 될 수 있습니다.

0

개체 데이터베이스를 사용할 수 있습니다.

1

나는 NHibernate 방식과 자동 데이터베이스 생성에 동의한다. 그러나 구성 파일 작성을 피하고 코드 가까이에 있으면 Castle의 ActiveRecord을 사용하십시오. via 속성을 사용하여 클래스에 직접 '스키마'를 선언합니다.

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

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

는 (등 검증, 경계,) 당신이 적용 할 수있는 제약의 다양한 있습니다 그리고 당신은 다른 데이터 모델 클래스 사이의 관계를 선언 할 수 있습니다. 이 옵션의 대부분은 속성에 추가되는 매개 변수입니다. 그것은 오히려 간단합니다.

그래서 코드로 작업하고 있습니다. 코드에서 사용을 선언합니다. 그리고 작업이 끝나면 ActiveRecord를 create the database으로합시다.

ActiveRecordStarter.Initialize(); 
ActiveRecordStarter.CreateSchema(); 
+0

아, 프로토 타입을 작성하려면 메모리 내장 SQLite 데이터베이스 엔진을 사용하십시오! (ADO.NET 공급자는 여기에 ) –