도순씨의 코딩일지

DB :: 속성, 키, 외래키, 기본키 본문

𝐂𝐎𝐌𝐏𝐔𝐓𝐄𝐑 𝐒𝐂𝐈𝐄𝐍𝐂𝐄/𝐃𝐀𝐓𝐀𝐁𝐀𝐒𝐄

DB :: 속성, 키, 외래키, 기본키

도순씨 2020. 9. 20. 00:00

🌼 관계형 스키마와 인스턴스

관계형 인스턴스는 일정 시점의 스키마 값 내용입니다. 우리는 현시점에서 인스턴스를 표로 나타낼 수 있습니다. 집합(set) r의 원소 t를 튜플이라고 부르며, 이는 테이블에서 row(행)애 해당합니다.

 

🌼 속성(Attributes)

집합에 존재하는 attribute에 등장할 수 있는 모든 가능한 값을 도메인(domain)이라고 부릅니다. 각 속성마다 도메인이 있습니다. 예를 들어서 ID 컬럼에 가능한 모든값 00000-9999 이러한 것들이 모두 도메인이라 할 수 있습니다. RDB에서 도메인은 매우 atomic한 상태로 존재합니다. 저도 이 말만 듣고 무슨 말인지 이해가 안됐는데, dept_name에 computer science라는 값이 있다면 이 값은 교차하는 지점에서 오직 하나여야 한다는 의미입니다. 

null은 네 종류의 상황에서 쓰입니다. 해당값을 잘 모를 때, 해당사항이 없을 때(not applicable), 누락된 경우, 마지막으로 특정값이 나중에 정해지는 경우에 null이 사용됩니다. 이러한 null 값은 DB 연산을 하는 데 있어서 여러 복잡한 케이스를 만들게됩니다. 또한 설계자가 어떻게 스키마 설계를 하느냐에 따라서 null값을 많이 또는 적게 만들 수 있습니다.

 

 

🌼 데이터베이스 스키마

데이터베이스 스키마는 데이터베이스의 논리적인 구조입니다. 데이터베이스 인스턴스는 특정시점의 값이므로 시간에 따라 변할 수 있습니다. 

 

 

🌼 키

만약에 K가 R에 포함되는 관계라면, K는 R에 있어서 고유식별성을 가진 슈퍼키(superkey)입니다. K는 고유식별자가 될 수 있습니다. 예를 들어서 학번에는 중복되는 학번이 없는 것처럼. 슈퍼키(superkeyt)는 K가 작을 경우 후보키가 될 수 있습니다. 이러한 경우는 고유식별성을 가지기 위해 정말 필요한 column만 있는 경우가 해당합니다. 후보키 중 하는 기본키(primary key)로 선택될 수 있습니다. 여러개의 키 중 무엇을 선택할 것인지는 설계자의 몫입니다. 

외래키(Foreign key) 제약은 값 한 개가 있는 경우는 없고 복수개가 존재한다는 것입니다. FK는 참조하는 관계이고 PK는 참조받는 관계라고 할 수 있습니다. 

 

사실 이렇게만 설명한다면 와닿지 않을 것 같습니다. 그래서 예시를 준비했습니다.

먼저 여기서 외래키와 기본키를 찾고 아래를 참조해보세요

더보기

여기서 왜 반대는 존재하지 않는 것일까요? 수강의 학번만으로는 고유식별성을 가질 수 없기 때문입니다. 수강 표의 학번에는 학번이 여러개가 존재하는 것을 보아 고유식별성이 존재하지 않는다는 것을 알 수 있습니다.

 

🌼 외래키

위 표에서 수강 테이블은 학생 테이블의 기본키를 속성들로 포함할 수 있습니다. 우리는 수강테이블의 그러한 속성을 외래키(foreign key)라 부릅니다. 외래키에 나타난 null이 아닌 값은 반드시 그것이 참조하는 기본키에 존재해야 합니다. 하지만 반대는 성립하지 않아도 됩니다. PK에는 아예 null이 존재할 수 없죠.

 

PK와 FK의 컬럼명은 다를 수 있습니다. 

같은 테이블 내에 외래키와 기본키가 존재할 수도 있습니다.

 

배우자 고객번호는 다른 인스턴스로 존재하기 때문에, 같은 테이블 내에 동시에 존재할 수 있는 것입니다. 

 

자연조인(natural join)이란 관계대수, SQL에서 제공하며 FK, PK의 이름이 같을 때 간단하게 제공할 수 있는 구문을 제공해주는 것입니다. 

Comments