2013-04-21 3 views
0

질문을 중복 레코드를 방지하는 방법 : 나도 같은 고객 ID와 고객 레코드를 작성에서 웹 사이트의 두 개의 서로 다른 관리 사용자를 방지하려면 어떻게데이터베이스에

.

배경 정보 : 번호의

  1. 검사 허용 범위에 의하여 :

    내가 자동 생성 함께 일하고 있어요 웹 사이트는 다음 작업을 수행 루틴/방법에 따라 "고객 번호"라는 숫자에 cust_number_range 테이블을 사용합니다.

  2. 은 고객 테이블에서 사용중인 가장 높은 숫자를 계산합니다.
  3. 은 "새 고객 생성"양식에 다음 사용 가능한 번호를 표시합니다.
  4. 제출 단추를 클릭하면 레코드를 저장하기 전에 고객 테이블을 다시 한 번 확인하여 다음 사용 가능한 것으로 계산 된 번호가 사용되지 않았는지 확인합니다. 그래도 괜찮 으면 데이터베이스에 저장합니다. 이 관리자는 동일한 시간에 새로운 CUST 기록을 "제출"시스템이 생성됩니다 클릭하면 내가으로 실행했습니다 문제는

    customer table 
    ===================== 
    id   integer - primary key 
    custnumber integer 
    fname  varchar(255) 
    lname  varchar(255) 
    
    cust_number_range 
    ==================== 
    lower_range integer 
    upper_range integer 
    id integer - primary key 
    

    : 여기

데이터베이스의 모습입니다 같은 custnumber 가진 두 개의 레코드.

  1. 가 custnumber 필드 옵션 약동학의 일부를 만드는 : 여기에 내가 가진 몇 가지 질문은? 의미, 그것은 정말로 "적절한"해결책입니까?
  2. 다른 어떤 방법으로 문제를 해결해야합니까?

감사합니다.

+0

어떤 RDBMS를 사용하고 있는지, 어떻게 RDBMS를 사용하는지에 차이가 있습니다. –

답변

0

고유 한 열을 사용해야합니다. 하지만 데이터베이스에서 사용자를 추가하기 전에 코드에서 확인하여 사용자가 존재하지 않는지 확인한 다음 사용자가 존재하지 않는 경우에만 추가하십시오.

0

번호가 순서대로 필요합니까? "색인"테이블을 만들 수 있습니다.

index_table 
==================== 
index_type integer (possible values - 1 for customers, 2 for orders, etc.) 
last_index integer 

새로운 고객을 만들 때마다 last_index id 필드를 전진시켜 인덱스 테이블에서 사용자에 대한 색인을 만듭니다. 사용자가 레코드를 저장하지 않으면 id를 건너 뜁니다.

대부분의 데이터베이스에는 비슷한 메커니즘이있는 record_id가 있기 때문에이를 사용하는 것이 좋습니다.