키 개념은 아래 링크를 보면 잘 알 수 있다. 키의 종류 https://terms.naver.com/entry.nhn?docId=3431147&cid=58430&categoryId=58430&expCategoryId=58430 수퍼키 https://terms.naver.com/entry.nhn?docId=3431148&cid=58430&categoryId=58430&expCategoryId=58430 레코드들을 식별할 수 있는 ‘필드의 집합’ (유일성) 테이블은 적어도 1개의 슈퍼키를 가져야 한다. 후보키 https://terms.naver.com/entry.nhn?docId=3431149&cid=58430&categoryId=58430&expCategoryId=58430 슈퍼키에서 레코드를 식별할 수 있는 최소한의 필드만 남겨놓은 집합 (유일성, 최소성) Ex. 슈퍼키 { 학번, 학생이름, 학과 } 집합은 학번만으로도 레코드를 식별할 수 있으므로 부분집합 중 { 학번 } 집합만 후보키가 될 수 있다. 기본키 https://terms.naver.com/entry.nhn?docId=3431150&cid=58430&categoryId=58430&expCategoryId=58430 설계자가 여러 후보키 중 하나를 선택하여 정의한 식별자 (유일성, 최소성) 기본키의 모든 필드의 값은 null 이 될 수 없다. 외래키 https://terms.naver.com/entry.nhn?docId=3431152&cid=58430&categoryId=58430&expCategoryId=58430 다른 테이블의 기본키를 참조한다. 외래키의 모든 필드는 참조하는 기본키와 동일한 도메인(값의 종류&범위)을 갖는다. 외래키의 모든 필드의 값은 참조하는 기본키와 동일하거나 null 이다. 대체키 기본키로 선택되지 못한 후보키들이다. 이름에서 알 수 있듯이 대체키는 기본키를 대신할 수 있지만 기본키가 되지 못하고 탈락한 이유가 있을 수 있다. 기본키를 선택할 때 고려할 사항을 하나씩 따져보면 기본키의 [주소 속성이 추가된 릴레이션의 예]의 고객 릴레이션은 고객아이디 속성을 기본키로 선택하는 것이 무난하다. 따라서 기본키로 선택되지 못한 (고객이름, 주소) 속성 집합이 대체키가 된다. 키는 관계형 데이터 모델에서 특정 레코드를 식별하기 위해 사용한다. 두 개 이상의 필드로 구성된 키를 복합키라고 한다. 키의 종류에는 슈퍼키, 후보키, 기본키, 외래키, 대체키가 있다. 기본키 https://www.w3schools.com/sql/sql_primarykey.asp 개인키를 테이블 생성 시에 삽입하는 방법은 아래와 같다. MySQL: CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, PRIMARY KEY (ID) ); SQL Server / Oracle / MS Access: CREATE TABLE Persons ( ID int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int ); 여러 필드를 PRIMARY KEY를 묶기 위한 방법이다. MySQL / SQL Server / Oracle / MS Access: CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, CONSTRAINT PK_Person PRIMARY KEY (ID,LastName) ); ALTER TABLE Persons ADD PRIMARY KEY (ID); ALTER TABLE Persons ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName); 를 통해 PRIMARY KEY를 수정 할 수 있고 ALTER TABLE Persons DROP PRIMARY KEY; ALTER TABLE Persons DROP CONSTRAINT PK_Person; 를 통해 기본키로 구성되어있던 것을 DROP 할 수 있다. 외래키 https://www.w3schools.com/sql/sql_foreignkey.asp FOREIGN KEY Constraint 외래키는 두 테이블을 함께 쓸 때 연결하는 키이다. 외래키는 또다른 테이블에서 기본키를 지칭하기 위한 필드(or collection of fields)이다. 외래키를 포함하는 테이블은 child table라고 보통 말하고 후보키를 포함하는 테이블은 parent table라고 불린다. MySQL: CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) ); SQL Server / Oracle / MS Access: CREATE TABLE Orders ( OrderID int NOT NULL PRIMARY KEY, OrderNumber int NOT NULL, PersonID int FOREIGN KEY REFERENCES Persons(PersonID) ); 를 이용하여 외래키 설정이 가능하다. 외래키를 여러 컬럼을 함께 설정하고싶거나 CONSTRAINT를 이용하기 위해서는 아래와 같이 이용한다. MySQL / SQL Server / Oracle / MS Access: CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NULL, PersonID int, PRIMARY KEY (OrderID), CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID) REFERENCES Persons(PersonID) ); MySQL / SQL Server / Oracle / MS Access: ALTER TABLE Orders ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID); 외래키를 추가하기 위해서는 위와 같이 이용한다. MySQL: ALTER TABLE Orders DROP FOREIGN KEY FK_PersonOrder; SQL Server / Oracle / MS Access: ALTER TABLE Orders DROP CONSTRAINT FK_PersonOrder; 외래키를 DROP 하기 위해서는 위와 같이 사용한다. 'Applied > Database' 카테고리의 다른 글
|