2013-08-22 2 views
0

내부에 여러 DBF 테이블이있는 FoxPro 컨테이너 DBC가 있습니다. 테이블이 구조 가지고에서 foxpro dbf 여러 열 인덱스를 만들 수 있습니까?

TableA(id, numbers1, numbers2, numbers3) 

numbers1, numbers2 및 numbers3 이렇게 쉼표로 구분 번호 문자열 그래서, 동일 행 사이 전체 테이블 캔트 반복

numbers1 = '01,02,03,04,05,06,07,08' --> 8 numbers 
numbers2 = '09,10,11,12,13,14,15,16' --> 8 numbers 
numbers3 = '01,02,03,04,05,06,07,08,09,10,11,12,13,14,15' --> 15 numbers 

숫자를 맨 위 칸에있는 numbers1은 다른 행에있는 numbers1 또는 numbers2에 나타납니다.

INDEX ON numbers1 CANDIDATE TAG numbers1 
INDEX ON numbers2 CANDIDATE TAG numbers2 
INDEX ON numbers3 CANDIDATE TAG numbers3 

하지만이 ... 단지 너무 .. 같은 컬럼에는 중복이있을 수 없다는 것을 방지 :

그래서,이를 방지하기 위해 ... 나는이 같은 열에 numbersX를 인덱스를 적용 :

RowA.numbers1 cant be equal to RowB.numbers1 

하지만이 일어날 수 :

RowA.numbers1 = RowB.numbers2 

그리고 난 그 싶지 않아요 ....

내 질문은 어떻게이 문제를 해결할 수 있습니까? 두 열에 여러 인덱스를 수행 할 수 있다고 생각합니까? 나는 mysql 또는 SQL 서버에서 더 많은 것을 생각하고 있지만, 이것이 foxpro에서 작동하는지 잘 모릅니다.

답변

2

표가 정규화되지 않았으므로 간단하게 수정할 수 없습니다. 당신은 아마 어떤 번호가 주어진 ID

create table tblIDNums (id int, num int) 

이 첫 번째 항목을 제외한 다른 ID와 연관되지 않을 수 있도록 NUM 열에 고유 인덱스를 생성과 관련된 열 한 쌍의 테이블을 가지고 있어야 그것을 다시 할당되지 않는 한에 할당됩니다. id 열을 업데이트하면됩니다. 당신이 (13)가 '당신이 할 수있는 ID (2)와 관련되어 있기 때문에 그것은 삽입을 실패 (13)의 값을 갖는 ID 3을 삽입하려고하면

그런 다음, 이제 당신의 기록 등

insert into tblIDNums (id, num) values (1, 1) 
insert into tblIDNums (id, num) values (1, 2) 
insert into tblIDNums (id, num) values (1, 3) 
insert into tblIDNums (id, num) values (1, 4) 
insert into tblIDNums (id, num) values (1, 5) 
insert into tblIDNums (id, num) values (1, 6) 
insert into tblIDNums (id, num) values (1, 7) 
insert into tblIDNums (id, num) values (1, 8) 
insert into tblIDNums (id, num) values (2, 9) 
insert into tblIDNums (id, num) values (2, 10) 
insert into tblIDNums (id, num) values (2, 11) 
insert into tblIDNums (id, num) values (2, 12) 
insert into tblIDNums (id, num) values (2, 13) 
insert into tblIDNums (id, num) values (2, 14) 
insert into tblIDNums (id, num) values (2, 15) 
insert into tblIDNums (id, num) values (2, 16) 

로 삽입 쉼표는 개별 값 자체가 아니라 순차, 간격, 순서가 틀린지를 아는 전체 문자열로 보아 예상되는 숫자 값을 구분합니다.

+0

죄송합니다. 그러나 나는 기회가 없습니다. 이 프로젝트를위한 다른 테이블을 만드십시오 ... 제가 가지고있는 옵션은 기존의 것을 수정하는 것입니다. –

관련 문제