문제

의 일환으로 현재 데이터베이스의 작품,우리는 보고서를 다루는 프로세스의 업데이트를 데이터베이스가 있습니다.

는 포인트는 가품는것을 재발하는 다루는 시스템에 대사용자가 값;의 프로젝트에 사용자 및 시스템의 발이 함께 저장됩니다.예를 들어...

우리의 목록 템플릿이 있습니다.

1, <system template>

2, <system template>

3, <system template>

이 매핑되는 응용 프로그램에서 enum(1,2,3)

다음에 사용자에서 오는가...

4, <user template>

...그리고...

5, <user template>

다음..우리는 문제를 업그레이드..과 삽입 한 부분으로 우리의 업그레이드 스크립트를...

<new id> [6], <new system template>

다음!!...우리는 버그를 발견 새로운 시스템에서 템플릿 및 업데이트가 필요합...문제는 어떻게?우리는 업데이트할 수 없습니다 사용하여 레코드 ID6(으로 우리가 할 수 있습 삽입으로 9,999,그래서 우리는 식별 레코드를 사용하여 다른 일부 메커니즘)

그래서,우리가 두 가능한 솔루션이다.

에 빨간색 코너(속도)....

우리는 단순히 시작한 사용자 Id 에 5000(또는 다른 값)및 테스트 데이터에 10000(또는 다른 값).이것은 우리를 허용 수정하여 시스템 값을 테스트하는 것이 최대의 하한이 다음 ID 범위에 있습니다.

한 장점을 빠르고 쉽게 구현할

불이익...수의 값으로 밖으로 실행하지 않은 경우 선택할 충분히 큰 범위!

블루 코너(확장성)...

우리가 저장소,시스템과 사용자 데이터를 별도로,Guid 를 사용하으로 Id 와 두 개의 병합을 사용하여 목록 보기.

용...확장 가능한..제한 없음 w/에 관한 DB 크기입니다.

단점..더 복잡하게 구현할 수 있습니다.(많은 중 하나를 업데이트할 수 있 views etc.)


나는 정면으로 통통한 첫 번째 옵션이지만,어떤 탄약을 돌아다.

사람이 어떤 생각을 가지고 있습에 이러한 접근 방식,또는 심지어 한(s)우리가 놓친?

도움이 되었습니까?

해결책

가지 문제가 있었(performance 또는 개발-TDD 및 단위 테스트 포함)Guid 를 사용가 동일한 것으로 간주한 데이터베이스,그리고 나는 일에는 몇 가지 꽤 큰 것들입니다.보 , 하려는 경우 사용에 대한 자세한 내용을 알아보십 Guid(및 잠재적인 문제점이 참여)기본 키로-그러나 나는 권장하지 않습니다 그것은 매우 충분히 이동하기 때문에 데이터를 안전하게 DB 동기화가 쉽지로 이빨을 닦에서는 아침:-)

당신의 질문에 대한 위,나는 것 중 하나 추천에 세 번째 열(가능하면)는지 여부를 나타냅니다 템플릿에는 사용자나 시스템을 기반으로,또는 당신할 수 있는 적어도 생성 Guid 를 위한 시스템 템플릿으로 삽입하고 목록을 보관하는 사람들의 손에는,그래서는 필요한 경우 업데이트 템플릿을 수상하는 동 GUID 에서 당신의 개발,UAT 및/또는 생산 데이터베이스의 두려움 없이 덮어 다른 템플릿이 있습니다.세 번째 열에는 것이 편리하지만 선택하기 위한 모든 시스템 또는 사용자 템플릿지에서 필요로하지 않고,를 별도로 두 테이블(이 과잉 IMHO).

도움이 되기를 바랍니다,

Rob G

다른 팁

내가 사용하는 것이 좋습니다 두 번째로 함께 수정을 저장하는 시스템과 사용자 값에서 한 테이블.GUID 는 매우 신뢰할 수 있는 이런 식으로 구성됩니다.

또 다른 아이디어:로 사용되는 텍스트 기반 ID(필요하지 않습 GUID)를 제공 시스템에 대한 값에 의해 생성되는 임의의 문자열 또는 문자열에 따라 어떤 종류의 사용자 정의 논리를 위한 사용자는 값입니다.

또 다른 아이디어:첫 번째 방법을 사용하지만,확장블 플래그와 함께 표시하는 경우에는 값은 시스템 또는 사용자가 사용하고 있습니다.어쩌면 이것은 가장 쉬운 방법입니다.확인을 작성해야 합니다 일부는 종류의 메커니즘을 업데이트하는 올바른 시스템 값을 가지고 있지만,그것은 쉽게 수행 할 수 있습니다.

+1Biri 의 텍스트 기반의 ID 를 정의하는"template_mnemonic"텍스트를 기반으로 열고 그것은 기본 열쇠이다.이것이 알려진 값에 삽입하면 그것은 당신이 개발자가 결정 그것은(또는 자동 생성 그것은)및 당신은 항상할 수 있을 참조하여 템플릿을 그 기억에 관계없이 얼마나 많은 사용자 지정 템플릿이 있습니다.그것은 또한 사용자를 허용하는 의미있는 이름 지정 규칙에 대한 그들의 템플릿을 합니다.

어쩌면 내가 그것을 얻을하지 않지만,없을 Guid 를 사용하 Id 로고도 사용자 및 시스템을 데이터로 함께?당신은에 액세스할 수 있는 시스템을 데이터로(non-변하기 쉬워)Guid.

나는 생각하지 않는 GUID 를 만들어야 하는 모든 문제입니다.

을 방지하려면,다음 사용하기:

Int ID

템플릿 무엇이든

국기 enum/int/bool

플래그를 보여주는지 여부를 실제 값은 시스템 또는 사용자가 값입니다.

하고 싶은 경우 업데이트 시스템 가치,그때만 요청 시스템에 대한 값에 의해 주문 ID,그리고 그것은 당신을 보여줍니다 실제적인 순서 삽입(당신이 있어야 bigint 거나 뭔가에 대한 ID 를 확인하지 않는 것을 완전하고 그것을 얻지 않는 삭제된 Id 는 다시 작동하).이 목록은 x.기록입니다.x.삽입 시스템 값입니다.

가 있다고 생각은 더 나은 세 번째 솔루션입니다.그것은 당신이 저장하는 두 개의 서로 다른 것들에서 같은 테이블과는 더 좋을 수 있습을 만드는 2 개의 별도 테이블에 하나의 사용자를 위한 템플릿 및 시스템에 대한 하나의 템플릿을 합니다.할 수 있음을 만들 수 있기 두 테이블을 만들로 나타나는 단체를 응용 프로그램입니다.분명히지 않는 모든 지식을 가지고 있는 응용 프로그램의이 될 수 있다는 불가능을 위해 당신을 위해 어떤 숫자의 이유가 있지만 난 그것은 깔끔한 솔루션보다 Guid 및 방법으로 보다 안전한 범위의 Id(심각하게하지 않는 ID 범위는 그것을 물어 당신이 한 일)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top