난 그냥 고객의 입찰 제안 가격을 책정하는 새로운 데이터베이스 프로젝트를 시작했습니다.Grails의 데이터베이스 테이블 버전 제어
이제 새 입찰가는 데이터베이스의 최신 정보를 사용해야하지만 입찰가 작성자가 별도로 결정하지 않는 한 기존 입찰가를 시작할 때 사용한 데이터를 계속 사용해야합니다.
입찰가가 어떤 버전에서도 가격을 사용하기 때문에 다소 단순 해 지므로 제품이 해안가에 있으며 가격 책정 표의 이전 버전에서 사용 가능해도 더 새로운 프로젝트에서는 사용할 수 없습니다.
이 작업을 수행하려면 버전 열과 아마도 링크 된 버전 제어 테이블을 포함 시키려고합니다. 나는 이것이 충분할 것이라고 생각한다.
그러나 공통 데이터베이스 디자인 요구 사항을 충족해야하므로 필자는 기존의 "우수 사례"와이를 구현하는 기술이 있어야하므로 휠씬 재 설계보다는 기존의 경험을 기반으로 구축 할 것이라고 생각합니다.
이 문제를 해결하는 방법에 대한 조언이 있으십니까? 또한 나는 Grails 플랫폼에 대해 작업 중이기 때문에 Grails의 특정 정보가 크게 감사 할 것입니다.
class Bid { // Each new customer bid is stored in this table
String bidName
static hasMany = [ item: ItemList ]
static belongsTo = [ versionNumber: VersionControl]
}
class ItemList { // Products/Services are associated with a bid via this table
String description
static belongsTo = [ bid: Bid, item: Price ]
}
class Price { // The price of individual products and services the company offers
String description
Long value
static belongsTo = [ versionNumber: VersionControl]
}
class VersionControl {
/** So that when filling in the ItemList form for a bid, I can query for only
* prices with the correct version number
*/
String user
Long versionNumber
Date timestamp
static hasMany = [ bid: Bid, productOrService: Price ]
}
이 예는 잘 작동하고, 내가하고 싶은 것을 보여
나는 내가 지금 여기에 제대로 내 문제를 설명하는 예입니다 확실하지 않다. 나는 그것이 문제를 해결하는 가장 좋은 방법인지 그리고 그것이 얼마나 잘 확장되는지를 잘 모른다. 나는 추적 할 필요가있는 다른 매개 변수를 가진 약 20 개의 테이블을 가지고있다.
입찰가에는 항상 가격 책정 목록의 최신 버전이 지정되지만 사용자는 다른 버전을 선택할 수 있어야합니다.
아마도 회계 부서에서 제공 한 csv 파일을 사용하여 가격이 개별적으로 변경되지 않고 대량으로 업데이트됩니다. 각각의 csv는 데이터베이스와 관련된 새로운 가격 목록 버전을 대표하지만 내부 관리 관점에서 나타납니다.
비슷한 철학이 회사의 운영되는 환율이나 지리적 지역과 같은 DB의 다른 테이블에 영향을 미칩니다.
새로운 버전이 출시되는 규칙은 예측하기가 어려워서 endDate에 문제가 있는지 판단 할 수 있습니다.
감사합니다. 그러나 우리의 경우 시간 간격은 너무 엄격합니다. 질문에 대한 설명을 추가했습니다. – Chopo87