2017-11-01 1 views
0

주 ID (p_id)와 보조 ID (s_id)가있는 데이터 세트가 있습니다. 그러나 보조 ID는 사용자가 요청한 세부 정보를 제공 할 때까지 생성되지 않습니다. 사용자가 세부 정보를 입력하지 않으면 보조 ID는 그대로 유지됩니다. 나는 모든 NA를 Secondary Id로 바꿀 수있는 방법을 원합니다.PostgreSQL의 데이터 조작

p_id | s_id | Amount | P_date 
123 | NA  | 20  | 10/02/2017 
123 | NA  | 15  | 10/02/2017 
123 | abc123 | 15  | 10/03/2017 
123 | abc123 | 22  | 10/05/2017 
456 | NA  | 26  | 10/02/2017 
456 | NA  | 30  | 10/04/2017 
456 | NA  | 10  | 10/05/2017 
456 | aws456 | 05  | 10/06/2017 
456 | aws456 | 05  | 10/06/2017 
678 | NA  | 10  | 10/03/2017 
678 | rty678 | 10  | 10/04/2017 

우리가 특정 사용자에 대한 보조 이드 무엇인지, 우리가

p_id | s_id | Amount | P_date 
123 | abc123 | 20  | 10/02/2017 
123 | abc123 | 15  | 10/02/2017 
123 | abc123 | 15  | 10/03/2017 
123 | abc123 | 22  | 10/05/2017 
456 | aws456 | 26  | 10/02/2017 
456 | aws456 | 30  | 10/04/2017 
456 | aws456 | 10  | 10/05/2017 
456 | aws456 | 05  | 10/06/2017 
456 | aws456 | 05  | 10/06/2017 
678 | rty678 | 10  | 10/03/2017 
678 | rty678 | 10  | 10/04/2017 

내가이 데이터를 가지고 선택 쿼리를 사용하는 데 필요한 실제 보조 ID로 NA 교체 모든 필요가 알게되면 PostgreSQL.

+0

이 테이블에 기본 키가 있습니까? 그렇지 않은 경우 : 왜 안 되니? – wildplasser

답변

0

이것은 third normal form을 위반하며 발생하는 문제가 그에 연결되어 있습니다.

당신은 테이블에서 s_id를 제거하고 p_id 기본 키를 만 p_ids_id와 두 번째 테이블이 있어야합니다. 그런 다음 원본 테이블의 외래 키 제약 조건을이 두 번째 테이블에 추가하십시오.

p_id 변경 사항 –과 같은 항목을 모두 업데이트하지 않아도 문제가 해결됩니다.