중요한 생각입니까? COUNT을 (를) PRIMARY KEY로 지정 하시겠습니까? 일반적으로 기본 키는 무엇을 결정해야합니까?
후보 키는 기능 종속성을 기반으로합니다. 기본 키는 후보 키 중 하나입니다. 후보 키 집합을보고 "이 기본 키 여야합니다."라고 말하는 공식적인 방법은 없습니다. " 이 결정은 공식적인 논리가 아니라 실제적인 문제에 근거합니다.
귀하의 테이블 구조는 이러한 사실을 알려줍니다.
- COUNT는 고유합니다. 이 테이블에 몇 개의 행이 있더라도 COUNT에 대해 동일한 값을 가진 두 행을 결코 찾을 수 없습니다.
- COUNT은 TABLE_NAME을 결정합니다. 즉, COUNT에 대한 값이 주어지면 TABLE_NAME에 대해 하나의 값만 영원히 발견하게됩니다.
- TABLE_NAME은 고유하지 않습니다. TABLE_NAME에 대해 동일한 값을 가진 여러 행을 찾을 것으로 예상됩니다.
- COUNT는 RUN_DTTM을 결정합니다. 즉, COUNT에 대한 값이 주어지면 RUN_DTTM에 대해 하나의 값만 영원히 발견하게됩니다.
- RUN_DTTM은 고유하지 않습니다. 우리는 RUN_DTTM에 대해 동일한 값을 가진 여러 행을 찾을 것으로 예상합니다.
- TABLE_NAME과 RUN_DTTM의 조합은 고유하지 않습니다. TABLE_NAME 및 RUN_DTTM에 대해 동일한 값을 갖는 여러 행을 단일 행에 포함 할 것을 기대합니다.
- 다른 결정 요인은 없습니다. 즉, TABLE_NAME 값이 주어지면 COUNT 및 RUN_DTTM에 대해 서로 관련이없는 값이 여러 개 발견됩니다. 마찬가지로, RUN_DTTM에 대한 값 또는 열 쌍 {TABLE_NAME, RUN_DTTM}에 대한 값이 주어진 경우.
이러한 모든 사항이 참이면 COUNT가 기본 키가 될 수 있습니다. 그러나 나는 모든 것들이 진실임을 의심합니다.
위험한 진행 방법 인 열 이름만을 기반으로 생각하면 유일한 후보 키는 {TABLE_NAME, RUN_DTTM} 일 가능성이 훨씬 높습니다. RUN_DTTM의 이름이 잘못되었거나 RUN_DTTM의 데이터 유형이 잘못되었을 가능성도 있습니다. 그것이 날짜라면 RUN_DT라고 이름을 붙일 것입니다. 그것이 시간 소인 인 경우, 데이터 유형은 TIMESTAMP 여야합니다.
목적은 무엇입니까? 시퀀스를 사용하지 않는 이유는 무엇입니까? – Mihai
@Mihai - 음, 시퀀스가 왜 더 좋은가요? – Coffee
이 정의는 데이터베이스에서 합법적입니까? 'COUNT'는 예약어입니다. – chrylis