내일배움캠프 25일차 TIL - 외래키

2024. 5. 22. 22:04·⛺스파르타코딩클럽
목차
  1. 오늘의 학습 
  2. # 오늘의 회고

240522

오늘의 학습 

    ●  1. 외래키 및 외래키 제약조건

 

외래키(foreign key)

테이블의 데이터 중복값을 최소한으로 만들기위해 테이블을 쪼개게되는데 그것을 정규화라고 한다. 정규화로 쪼개진 테이블의 관계를 맺어줄 때 테이블간의 알아볼 수 있는 외래키(일반 컬럼)를 만들어 접근을하게 된다. 이때 알아볼 수 있는 외래키는 보통 1:N 관계에서 1의 테이블의 PK를 이용하여 저장이될 N 테이블의 외래키를 만들게 된다.

* 외래키는 하나의 일반컬럼이다. *

 

외래키(foreign key) 제약조건

1. 관계형 데이터베이스에서 테이블간의 참조 무결성을 보장하기 위해 제약을 걸어둘 수 있는 하나의 제약조건이다.

2. 외래키에 대한 제약조건을 명시하여 강제적으로 외래키의 개념을 다룬 것이다.

 

외래키(foreign key) 제약조건 특징

1. 테이블 생성시 외래키 제약조건에 해당하는 즉, 참조를 하고있는 테이블의 컬럼이 존재하고 있어야 한다.

( 즉, 외래키를 통해 참조하고있는 테이블의 존재가 있어야 하며 테이블의 참조 컬럼 또한 존재하고 있어야 한다. )

2. 테이블의 값 추가시(insert) 추가하려고 하는 컬럼의 데이터의 값은 참조하는 테이블의 컬럼의 값과 동일한 데이터 값이

존재해야지만 테이블의 속성에 대한 값이 추가가 된다.

3. 위의 두 특징은 DB 참조 무결성의 두개의 테이블의 관계에서 항상 일관된 값을 보장해야한다는 조건을 지키고 있다.

4. 즉, 참조 무결성을 위해서 사용하는 제약조건이다.

 

외래키를 이용해 2개의 테이블을 만드는 SQL문법이다.

# 2. food의 외래키 제약조건 때문에 users의 생성이후에 가능하다.
create table food
(
    id    bigint auto_increment
        primary key,
    name  varchar(255) null,
    price double       not null,
    user_id    bigint null,
    constraint orders_user_fk # 외래키 제약조건(N일 경우)
        foreign key (user_id) references users (id)
);
# 1. users의 테이블을 생성을 해야지 food를 생성할 수 있음.
create table users
(
    id   bigint auto_increment
        primary key,
    name varchar(255) null
);

 

food 테이블에 외래키 제약조건이 걸려있으므로 users의 테이블을 생성해야지만 food가 생성된다.

food 테이블에 insert를 통해 데이터를 추가하고자 한다면 외래키에 넣는 값은 참조하고 있는 users의 id에 들어간 값 중 

동일한 값이 존재해야지만 들어간다. ( 어길 시 오류남 < 제약조건 > ) ( 해당 데이터가 존재하지 않을 경우 에러 )

 

 

# 오늘의 회고

오늘은 모의 면접을 봤다. 머릿속으로 생각을 정리하고 문장을 만드는걸 잘 못해서 아는데도 대답을 못한 질문이 있었다. 

너무 아쉬웠고 앞으로는 질문의 의도와 키워드를 뽑고 문장을 만드는 연습을 좀 하려고 한다.

그리고 오늘은 외래키에 대해서 공부를 진행했다.

'⛺스파르타코딩클럽' 카테고리의 다른 글

내일배움캠프 27일차 TIL - JWT  (1) 2024.05.24
내일배움캠프 26일차 TIL - JPA핵심 및 관계, 3계층 분리  (3) 2024.05.23
내일배움캠프 24일차 TIL - Generic Static Method  (1) 2024.05.21
내일배움캠프 23일차 TIL - JVM  (2) 2024.05.20
내일배움캠프 22일차 TIL - Annotation  (0) 2024.05.19
  1. 오늘의 학습 
  2. # 오늘의 회고
'⛺스파르타코딩클럽' 카테고리의 다른 글
  • 내일배움캠프 27일차 TIL - JWT
  • 내일배움캠프 26일차 TIL - JPA핵심 및 관계, 3계층 분리
  • 내일배움캠프 24일차 TIL - Generic Static Method
  • 내일배움캠프 23일차 TIL - JVM
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (156) N
      • 🎓방송통신대학교 (26)
        • 🖥️컴퓨터과학과 (1)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • ⚙️컴퓨터의 이해 (11)
        • 🏛️세계의정치와경제 (3)
      • 🛠️Backend (53) N
        • 📚백엔드 공부 (4)
        • ☕Java (22) N
        • 🌳Spring (11)
        • ⚡Python (13)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • Data Structure (1)
      • ⛺스파르타코딩클럽 (65)
      • 정보 (1)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    방송통신대학교
    입출력
    컴퓨터의 이해
    유비쿼터스 컴퓨팅
    세계화
    자바
    Java
    컴파일러
    유비쿼터스 컴퓨팅개론
    Spring Framework
    방통대
    다형성
    파이썬
    스프링
    클래스
    Python
    방송대
    spring
    유비쿼터스
    클라우드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
내일배움캠프 25일차 TIL - 외래키

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.