2013-03-05 6 views
1

저는 데이터베이스 개념에 대해 아주 새롭고 현재 데이터베이스를 디자인하는 방법을 배우고 있습니다. 그들은 미래에 변경 될 수 있습니다로대용 키를 사용하여 업데이트 쿼리를 수행하는 방법

1. Names - text - unique but might change in future 
2. Result - varchar - not unique 
3. issues_id - int - not unique 
4. comments - text - not unique 
5. level - varchar - not unique 
6. functionality - varchar - not unique 

내가 기본 키와 위의 열을 선택할 수 없습니다 : 나는 아래에 열이있는 테이블 ... MySQL의에서이가

있습니다. 그래서 names_id로 자동 증가 ID를 만들었습니다. 나는 또한이 테이블과 사용자 업데이트 결과, issues_id 및 Names.Names를 기반으로 한 주석을 표시하는 GUI (JTable)가 큰 텍스트 열입니다. GUI에서 아무런 의미가 없으므로 GUI에 names_id를 표시 할 수 없습니다. 이제 사용자가 GUI에서 column2,3,4에 대한 입력을 한 후에 데이터베이스를 업데이트 할 때 아래 쿼리를 사용하여 데이터베이스를 업데이트했습니다. where 절에서 names_id를 사용할 수 없습니다. Jtable의 row_id가 names_id와 일치하지 않기 때문에 행은 JTable에로드됩니다.

update <tablename> set Result=<value>,issues_id=<value>,comments=<value> 
where Names=<value>; 

데이터베이스를 업데이트 할 수는 있지만 PK를 사용하지 않고도 데이터베이스를 업데이트 할 수 있는지 알고 싶습니다. 이게 얼마나 효율적입니까? 대리 키는 어떤 용도로 여기에 사용됩니까?

+0

감사합니다. Matt, 다음 번부터 올바른 형식으로 해당 항목을 확인합니다. – Raju

답변

1

기본 키를 참조하지 않는 where 조건을 사용하여 데이터베이스를 업데이트해도 문제가 없습니다.

색인 및 제약 조건에 대해 배우고 싶을 수 있습니다. 여러 행의 이름이 같은 경우 검색어가 둘 이상의 행을 업데이트 할 수 있습니다. 이들이 고유한지 확인하려면 컬럼에 고유 제한 조건을 작성할 수 있습니다.

기본 키는 항상 해당 열에 인덱스를 만듭니다. 이 색인은 액세스를 빠르게합니다. name에 색인이없는 경우, 갱신은 모든 이름을보기 위해 전체 표를 스캔해야합니다. 필드에 색인을 작성하여이 작업을 빠르게 수행 할 수 있습니다.

+0

고든에게 감사드립니다. 나는 PK를 사용하는 것과 동일한 성능을내는 방법을 알고 싶었다. 나는 대답을 얻었다. – Raju

+0

@Raju. . . 이 경우 색인을 작성하면 실적을 얻을 수 있습니다. –