diff --git a/back/database/img/sql-first-step-25.png b/back/database/img/sql-first-step-25.png new file mode 100644 index 0000000..9f43c13 Binary files /dev/null and b/back/database/img/sql-first-step-25.png differ diff --git a/back/database/sql-first-step/sql-first-step-07.md b/back/database/sql-first-step/sql-first-step-07.md index 648866e..b020a09 100644 --- a/back/database/sql-first-step/sql-first-step-07.md +++ b/back/database/sql-first-step/sql-first-step-07.md @@ -2,8 +2,8 @@ id: sql-first-step-07 title: 6장 테이블 생성과 제약 authors: hank -tags: [hank, SQL 첫걸음, mysql, ALTER TABLE, CONSTRAINT, 제약] -keywords: [SQL 첫걸음, mysql, ALTER TABLE, CONSTRAINT, 제약] +tags: [hank, SQL 첫걸음, mysql, ALTER TABLE, CONSTRAINT, 제약, key] +keywords: [SQL 첫걸음, mysql, ALTER TABLE, CONSTRAINT, 제약, key, PRIMARY KEY] last_update: date: 12/16/2023 author: hank @@ -168,6 +168,26 @@ ALTER TABLE 테이블명 DROP PRIMARY KEY; 테이블 제약의 경우에는 DROP 명령을 추가로 사용해야합니다.
+## Key + +테이블에서의 키는 테이블의 한 레코드를 특정할 수 있는 검색키입니다. 기본키 제약이 설정된 테이블에서는 기본키로 검색했을 때 복수의 행이 조회될 수 없습니다. 또한 RDBMS에서는 설계에 따라서 데이터의 중복을 제거하기 위해 여러 테이블로 분리되는데 테이블의 특정 키를 저장할 때도 사용됩니다. + +### key의 정의 + +![sql-first-step-25](../img/sql-first-step-25.png) + +> tuple - 각 attribute의 값으로 이루어진 리스트 +> 1. **super key** : table에서 tuple들을 unique하게 식별할 수 있는 attributes set +> 2. **canidate key(후보키)** : 어느 한 attribute라도 제거하면 unique하게 tuples를 식별할 수 없는 super key +> - ex) { bank_name, account_num } 에서 한가지 attribute라도 빠지면 튜플 값을 결정할 수 없을 때 +> 3. **primary key** : table에서 tuple들을 unique하게 식별하려고 선택된 (canidate) key +> - 보통은 primary key를 attribute가 적은 것으로 고릅니다. +> 4. unique key(대체키) : primary key가 아닌 canidate key +> 5. **foreign key(외래키)** : 다른 테이블의 Primary Key +> 6. prime attribute : 임의의 key에 속하는 attribute +> 7. non-prime attribute : 어떤 key에도 속하지 않는 attribute + +
# reference