반응형

키 개념은 아래 링크를 보면 잘 알 수 있다. 


키의 종류 

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 하기 위해서는 위와 같이 사용한다.






반응형