[T.I.L] Database - 관계형 database#2

재운·2021년 3월 29일
0
post-thumbnail
post-custom-banner

Foreign Key(외래키)

"관계형 데이터베이스에서 외래 키(외부 키, Foreign Key)는 한 테이블의 필드(attribute) 중 다른 테이블의 행(row)을 식별할 수 있는 키를 말한다."

  • 외래 키는 참조하는 테이블에서 1개의 키(속성 또는 속성의 집합)에 해당하고, 참조하는 측의 관계 변수는 참조되는 측의 테이블의 키를 가리킨다.
  • 참조하는 테이블의 속성의 행 1개의 값은, 참조되는 측 테이블의 행 값에 대응된다. 이 때문에 참조하는 테이블의 행에는, 참조되는 테이블에 나타나지 않는 값을 포함할 수 없다. 이러한 참조 관계는 2개의 테이블을 연관시키기 위한 관계 정규화의 본질적인 부분이다.
  • 참조하는 테이블의 행 여러 개가, 참조되는 테이블의 동일한 행을 참조할 수 있다.
    **wikipedia 참조

좀 말이 어렵다. 🤦‍♂️

쉽게 말하면 '참조를 하는' 테이블이 foreign key를 가지고 있고, '참조를 당하는' 테이블의 ID와 연결된다는 것이다.

그렇다면,

참조를 하는것참조를 당하는 것의 차이는 무엇일까?

예를 들면,
동물이라는 테이블이 있고 기린,하마,꼬끼리,사자라는 항목이 있다고 하고
각 동물마다 사진이 있는 테이블이 있다고 하자.

만약 '동물 이름'이라는 테이블에서 '동물 사진' 테이블을 참조하게되면 동물 이름 테이블에 Foreign Key가 주어진다.


동물 이름 테이블에 동물 이름이 중복되어 불필요하게 행이 많아진다.

반면에, '동물 사진' 테이블에서 '동물 이름' 테이블을 참조하게 되면 동물 사진 테이블에 Foreign Key가 주어지게되고

'동물 사진' 테이블에서는 foreign key 열만 생기면 된다.

👉 결론적으로 후자의 방법이 데이터의 정규화에 더 가까운 참조의 방향이 되는 것이다.

앞으로 DB 모델링을 진행해보며 더 좋은 예시가 있으면 포스팅을 추가해봐야겠다.

profile
Life is memory
post-custom-banner

0개의 댓글