Top 47 외래 키 102 Most Correct Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 외래 키 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://toplist.maxfit.vn team, along with other related topics such as: 외래 키 외래키 안쓰는 이유, 외래키 사용법, 외래키 참조, 외래키란, 외래키 사용 이유, 외래키 설정, db 외래키, 기본키 외래키

외래 키는 참조하는 테이블에서 1개의 키(속성 또는 속성의 집합)에 해당하고, 참조하는 측의 관계 변수는 참조되는 측의 테이블의 키를 가리킨다. 참조하는 테이블의 속성의 행 1개의 값은, 참조되는 측 테이블의 행 값에 대응된다.


[MSSQL 중급 1강] 기본키, 외래키
[MSSQL 중급 1강] 기본키, 외래키


외래 키 – 위키백과, 우리 모두의 백과사전

  • Article author: ko.wikipedia.org
  • Reviews from users: 25585 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 외래 키 – 위키백과, 우리 모두의 백과사전 Updating …
  • Most searched keywords: Whether you are looking for 외래 키 – 위키백과, 우리 모두의 백과사전 Updating
  • Table of Contents:

개요[편집]

외래 키 정의하기[편집]

참조 조작[편집]

같이 보기[편집]

외래 키 - 위키백과, 우리 모두의 백과사전
외래 키 – 위키백과, 우리 모두의 백과사전

Read More

19화 19. 외래키 이해하기

  • Article author: brunch.co.kr
  • Reviews from users: 35943 ⭐ Ratings
  • Top rated: 4.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 19화 19. 외래키 이해하기 앞서 살펴본바와 같이, 외래키는 두개의 테이블을 연결해주는 연결 다리 역할을 합니다. 기본키가 중복된 데이터가 하나의 테이블에 삽입되는 것을 방지 … …
  • Most searched keywords: Whether you are looking for 19화 19. 외래키 이해하기 앞서 살펴본바와 같이, 외래키는 두개의 테이블을 연결해주는 연결 다리 역할을 합니다. 기본키가 중복된 데이터가 하나의 테이블에 삽입되는 것을 방지 … 데이터베이스에서 외래키 (Foreign Key)는 왜 필요할까? | 배경 지난 기본키 이해하기 글에서는 하나의 테이블에 중복된 데이터가 삽입되는 것을 방지하기 위한 기본키 제한조건에 대해서 배웠습니다. 기본키를 활용하면 하나의 테이블내에서 고유한 행을 선택할 수 있다는 것을 기억하실 겁니다. 예를 들어, ‘주민등록번호’는 사용자 한명에 하나의 고유한 값만 존재하기 때문에, 사용자 정보가 담겨있는 사용자 테이블의 기본키가 될
  • Table of Contents:

배경

효율적인 테이블 구조

외래키 역할

마치며

19화 19. 외래키 이해하기
19화 19. 외래키 이해하기

Read More

[Mysql] Foreign Key(외래키)

  • Article author: bamdule.tistory.com
  • Reviews from users: 16646 ⭐ Ratings
  • Top rated: 3.1 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [Mysql] Foreign Key(외래키) 외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다. 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블 … …
  • Most searched keywords: Whether you are looking for [Mysql] Foreign Key(외래키) 외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다. 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블 … 1. 외래키 (Foreign Key)란? 외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다. 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블이라한다. 2. 외래키 사용시..
  • Table of Contents:

티스토리 뷰

티스토리툴바

[Mysql] Foreign Key(외래키)
[Mysql] Foreign Key(외래키)

Read More

외래키 – 해시넷

  • Article author: wiki.hash.kr
  • Reviews from users: 23213 ⭐ Ratings
  • Top rated: 3.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 외래키 – 해시넷 외래키(Foreign Key) 또는 포린키란 하나(또는 여러개)의 다른 릴레이션의 기본키(PK) 필드를 참조하는 데이터의 참조 무결성(Referential integrity) … …
  • Most searched keywords: Whether you are looking for 외래키 – 해시넷 외래키(Foreign Key) 또는 포린키란 하나(또는 여러개)의 다른 릴레이션의 기본키(PK) 필드를 참조하는 데이터의 참조 무결성(Referential integrity) …
  • Table of Contents:

위키

목차

개요[편집]

특징[편집]

각주[편집]

참고자료[편집]

같이 보기[편집]

외래키 - 해시넷
외래키 – 해시넷

Read More

코딩의 시작, TCP School

  • Article author: www.tcpschool.com
  • Reviews from users: 16290 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 코딩의 시작, TCP School 외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력됩니다. 즉, FOREIGN KEY 제약 조건은 하나의 테이블을 다른 … …
  • Most searched keywords: Whether you are looking for 코딩의 시작, TCP School 외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력됩니다. 즉, FOREIGN KEY 제약 조건은 하나의 테이블을 다른 … 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
  • Table of Contents:

27) FOREIGN KEY

27) FOREIGN KEY

접속자집계

코딩의 시작, TCP School
코딩의 시작, TCP School

Read More

SQL 외래 키에 대한 이해

  • Article author: kimsyoung.tistory.com
  • Reviews from users: 25933 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about SQL 외래 키에 대한 이해 외래 키는 SQL 데이터베이스와 관련된 중요한 개념입니다. 외래 키는 데이터가 일관될 수 있도록 돕습니다. 보통은 두 개의 데이터베이스 테이블을 … …
  • Most searched keywords: Whether you are looking for SQL 외래 키에 대한 이해 외래 키는 SQL 데이터베이스와 관련된 중요한 개념입니다. 외래 키는 데이터가 일관될 수 있도록 돕습니다. 보통은 두 개의 데이터베이스 테이블을 … SQL 데이터베이스를 공부하다 보면 기본 키와 함께 등장하는 개념이 있습니다. 바로 외래 키(Foreign Key)입니다. 외래 키는 무엇일까요? 외래 키가 하는 역할은 무엇일까요? 외래 키는 왜 필요한 것일까요? 이번..
  • Table of Contents:

고정 헤더 영역

메뉴 레이어

검색 레이어

상세 컨텐츠

태그

추가 정보

페이징

SQL 외래 키에 대한 이해
SQL 외래 키에 대한 이해

Read More

PRIMARY KEY 및 FOREIGN KEY 제약 ì¡°ê±´ – SQL Server | Microsoft Docs

  • Article author: docs.microsoft.com
  • Reviews from users: 34160 ⭐ Ratings
  • Top rated: 4.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about PRIMARY KEY 및 FOREIGN KEY 제약 ì¡°ê±´ – SQL Server | Microsoft Docs 이 문서의 내용. 기본 키 제약 조건; 외래 키 제약 조건; FOREIGN KEY 제약 조건에 대한 인덱스; 참조 무결성; 다음 단계. 적용 대상: 확인 표시 … …
  • Most searched keywords: Whether you are looking for PRIMARY KEY 및 FOREIGN KEY 제약 ì¡°ê±´ – SQL Server | Microsoft Docs 이 문서의 내용. 기본 키 제약 조건; 외래 키 제약 조건; FOREIGN KEY 제약 조건에 대한 인덱스; 참조 무결성; 다음 단계. 적용 대상: 확인 표시 … PRIMARY KEY 및 FOREIGN KEY 제약 ì¡°ê±´
  • Table of Contents:

기본 키 제약 조건

외래 키 제약 조건

FOREIGN KEY 제약 조건에 대한 인덱스

참조 무결성

다음 단계

PRIMARY KEY 및 FOREIGN KEY 제약 조건 - SQL Server | Microsoft Docs
PRIMARY KEY 및 FOREIGN KEY 제약 ì¡°ê±´ – SQL Server | Microsoft Docs

Read More

Crocus

  • Article author: www.crocus.co.kr
  • Reviews from users: 27081 ⭐ Ratings
  • Top rated: 4.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Crocus 외래키는 두 테이블을 함께 쓸 때 연결하는 키이다. 외래키는 또다른 테이블에서 기본키를 지칭하기 위한 필드(or collection of fields)이다. …
  • Most searched keywords: Whether you are looking for Crocus 외래키는 두 테이블을 함께 쓸 때 연결하는 키이다. 외래키는 또다른 테이블에서 기본키를 지칭하기 위한 필드(or collection of fields)이다. 키 개념은 아래 링크를 보면 잘 알 수 있다. 키의 종류 https://terms.naver.com/entry.nhn?docId=3431147&cid=58430&categoryId=58430&expCategoryId=58430 수퍼키 https://terms.naver.com/entry.nhn?docId=3431..Crocus에서 다양한 프로그래밍 정보를 보고 활용해보세요Crocus, 자료구조, 알고리즘, algorithm, c, cpp, python, java, android, web, html, css, vue, 백준, boj, 코딩, 프로그래밍, 크로커스
  • Table of Contents:

데이터베이스 키 개념 기본키 외래키

티스토리툴바

Crocus
Crocus

Read More

[SQL] 외래키(Foreign Key) : 네이버 블로그

  • Article author: blog.naver.com
  • Reviews from users: 39917 ⭐ Ratings
  • Top rated: 4.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [SQL] 외래키(Foreign Key) : 네이버 블로그 1. 외래키 (Foreign Key)란? 외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다. 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 … …
  • Most searched keywords: Whether you are looking for [SQL] 외래키(Foreign Key) : 네이버 블로그 1. 외래키 (Foreign Key)란? 외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다. 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 …
  • Table of Contents:

악성코드가 포함되어 있는 파일입니다

작성자 이외의 방문자에게는 이용이 제한되었습니다

[SQL] 외래키(Foreign Key) : 네이버 블로그
[SQL] 외래키(Foreign Key) : 네이버 블로그

Read More

SQL 외래키

  • Article author: www.1keydata.com
  • Reviews from users: 8715 ⭐ Ratings
  • Top rated: 4.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about SQL 외래키 외래키의 목적은 데이터의 참고 온정성 (referential integrity) 을 확정하는것입니다.다시말하면 허용된 데이터 수치만 데이터베이스내에 저장할수 있습니다. 예를 들어 … …
  • Most searched keywords: Whether you are looking for SQL 외래키 외래키의 목적은 데이터의 참고 온정성 (referential integrity) 을 확정하는것입니다.다시말하면 허용된 데이터 수치만 데이터베이스내에 저장할수 있습니다. 예를 들어 … 초보자들을 위하여 설계한 SQL용어 사이트。이 페이지에서는 데이터베이스중 외래키의 개념을 소개합니다。
  • Table of Contents:
 SQL 외래키
SQL 외래키

Read More


See more articles in the same category here: toplist.maxfit.vn/blog.

위키백과, 우리 모두의 백과사전

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

개요 [ 편집 ]

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

참조하는 테이블과 참조되는 테이블이 동일할 수도 있다. 이 경우는 외래 키가 자기 자신을 참조하는 것이다. 이러한 외래 키는 데이터베이스 언어표준 SQL:2003의 「자기 참조」외래 키 혹은 「재귀적」외래 키로 규정되어 있다.

하나의 테이블이 여러 개의 외래 키를 포함할 수 있다. 그리고 이러한 외래 키들은 각각 서로 다른 테이블을 참조할 수 있다. 각각의 외래 키는 관계 데이터베이스 관리 시스템(RDBMS)에 의해 개별적으로 강제 적용된다. 그렇기에 테이블 사이에 연속되는 관련성을 외래 키를 사용해 정의할 수 있다.

설계의 관점에서 ‘외래 키-기본 키’ 관계가 없어야 하는데 있거나, 있어야 하는데 없는 경우가 있다. 이러한 경우, 데이터베이스 설계에 있어 문제를 유발할 수 있다.

외래 키 정의하기 [ 편집 ]

외래 키는 데이터베이스 언어 ANSI/ISO SQL 표준에 대해 FOREIGN KEY 제약으로서 규정되어 있다. 이미 존재하는 테이블들에 외래 키 제약을 추가하는 구문은 SQL:2003에 다음과 같이 나와 있다. 또한, 속성(column)의 리스트를 REFERENCES구로 생략하면, 외래 키는 참조된 테이블의 주키를 참조하는 것을 암묵적으로 나타낸다.

ALTER TABLE < table identifier > ADD [ CONSTRAINT < constraint identifier > ] FOREIGN KEY ( < column expression > { , < column expression > } … ) REFERENCES < table identifier > [ ( < column expression > { , < column expression > } … ) ] [ ON UPDATE < referential action > ] [ ON DELETE < referential action > ]

같은 방법으로, 외래 키는 CREATE TABLE SQL 문장의 일부로 정의할 수도 있다.

CREATE TABLE table_name ( id INTEGER PRIMARY KEY , col2 CHARACTER VARYING ( 20 ), col3 INTEGER , … CONSTRAINT col3_fk FOREIGN KEY ( col3 ) REFERENCING other_table ( UNIQUE ( key_col ) ON DELETE CASCADE , … )

외래 키가 단일 속성만으로부터 구성되는 경우, 아래 구문을 사용하여 외래 키와 그 속성을 지정할 수 있다.

CREATE TABLE table_name ( id INTEGER PRIMARY KEY , col2 CHARACTER VARYING ( 20 ), col3 INTEGER FOREIGN KEY REFERENCES other_table ( column_name ), … )

참조 조작 [ 편집 ]

관계 데이터베이스 관리 시스템(RDBMS) 혹은 SQL 데이터베이스 관리 시스템은 참조 정합성 제약을 강제 적용하기 위해 DBMS는 참조되는 테이블의 행을 삭제(또는 갱신)하는 경우에도, 데이터 정합성을 유지해야 한다. 그 때, 참조하는 테이블에 행이 남아 있는 경우, 참조 정합성을 고려해야 한다. 데이터베이스 언어표준 SQL:2003에는 그러한 경우에 발생시키는 5종류의 참조 조작이 규정되어 있다.

CASCADE: 참조되는 테이블의 행이 삭제되었을 경우에는 참조하는 테이블과 대응되는 모든 행들이 삭제된다. 참조되는 테이블의 행이 갱신되었을 경우에는 참조하는 테이블의 외래 키 값은 같은 값으로 갱신된다.

RESTRICT: 참조하는 테이블의 행이 남아 있는 경우에는 참조되는 테이블의 행을 갱신하거나 삭제할 수 없다. 이 경우에는 데이터 변경이 이루어지지 않는다.

NO ACTION:참조되는 테이블에 대해 UPDATE 또는 DELETE가 실행된다. DBMS에서 SQL 문장의 실행 종료시에 참조 정합성을 만족하는지를 검사한다. RESTRICT와 차이점은, 트리거 또는 SQL 문장의 시멘틱스 자체가 외래 키의 제약을 채울 것이라는 데에 있다. 이 때는 SQL 문장 실행이 성공한다. 외래 키의 제약이 만족되지 않은 경우에는 SQL 문장 실행이 실패한다.

SET NULL:참조되는 테이블에 대해 행이 갱신 또는 삭제되었을 경우, 참조하는 테이블의 행에 대한 외래 키 값은 NULL로 설정된다. 이 옵션은 참조하는 테이블의 외래 키에 NULL을 설정할 수 있는 경우에만 가능하다. NULL의 시멘틱스에 의해, 참조하는 테이블에 대해 NULL이 있는 행은, 참조되는 테이블의 행을 필요로 하지 않는다.

SET DEFAULT: SET NULL과 비슷하지만, 참조되는 테이블의 행이 갱신 또는 삭제되었을 경우, 참조하는 테이블의 외래 키 값은 속성의 기본값(default)으로 설정된다.

19화 19. 외래키 이해하기

배경

지난 기본키 이해하기 글에서는 하나의 테이블에 중복된 데이터가 삽입되는 것을 방지하기 위한 기본키 제한조건에 대해서 배웠습니다. 기본키를 활용하면 하나의 테이블내에서 고유한 행을 선택할 수 있다는 것을 기억하실 겁니다. 예를 들어, ‘주민등록번호’는 사용자 한명에 하나의 고유한 값만 존재하기 때문에, 사용자 정보가 담겨있는 사용자 테이블의 기본키가 될 수 있습니다.

SQL 기반으로 데이터분석을 진행하는데 있어서 반드시 이해해야하는 2가지 ‘키 (Key)’가 존재합니다. 하나가 방금 전에 언급한 기본키 (Primary Key)이며, 또 다른 하나가 바로 오늘 글에서 배울 외래키 (Foriegn Key) 입니다. 외래키는 하나의 테이블을 이용해서 데이터를 분석하는 과정에서는 큰 의미가 없습니다. 하지만, 여러개의 테이블을 조합해서 데이터분석을 진행한다면 반드시 이해해야하는 개념입니다.

효율적인 테이블 구조

외래키를 활용하는 방법에 대해서 알아보기 전에, 왜 외래키가 필요한지에 대해서 알아보도록 합시다. 우리가 온라인 식료품 마트를 운영하고 있다고 가정해봅시다. 온라인 식료품 마트는 사용자로부터 주문을 받아서 배송해주는 시스템을 운영하고 있습니다. 우리는 데이터베이스를 다룰 줄 알기 때문에, 사용자의 주문 내역을 스프레드시트가 아닌 데이터베이스에 테이블을 만들어서 저장, 관리, 분석할 것 입니다.

먼저, 사용자에 대한 정보를 저장하기 위해 테이블에 기본적으로 아래와 같은 열이 필요할 것입니다.

아이디 (user_id), 비밀번호 (user_pwd), 이름 (name), 성별 (gender), 배송 주소 (address)

온라인 마켓이다보니 위의 정보만으로는 주문 정보를 저장할 수 없으므로, 아래와 같은 주문과 관련된 정보들이 추가로 필요합니다.

주문 일자 (order_date), 제품 ID (product_id), 제품명 (product_title), 수량 (qty)

위의 모든 열을 합쳐서 테이블을 만든다면 아래와 같은 테이블이 만들어 집니다. 2개의 예시 데이터를 넣어두었습니다. 예를 들어, marco117 아이디를 사용하는 사용자는 10월 1일 coke를 5개 주문했고, blondy121 아이디를 사용하는 사용자는 같은 날인 10월 1일에 sprite를 10개 주문했습니다.

위의 테이블 구조는 당장에는 큰 문제가 없어보입니다. 하지만, 사실 아주 큰 비효율을 발생시키는 테이블 구조입니다. 왜냐하면, 주문을 추가할때마다 데이터가 계속 중복해서 쌓이기 때문입니다. 예를 들어, Marco가 몇일 동안 여러개의 제품을 주문했다고 가정합시다. 주문 테이블은 아래와 같이 계속해서 빨간색으로 표시한 중복 데이터 가 발생할 것입니다.

Marco는 이틀에 걸쳐 네번의 주문을 넣었습니다. 이 네번의 주문은 주문입장에서는 모두 달라져서 우측에 파란색으로 표시된 데이터는 새롭게 추가되는 것이 당연합니다. 하지만, 사용자 Marco 와 관련된 정보들 즉, 아이디, 비밀번호, 이름, 성별, 주소는 주문시 변경되는 데이터가 아닙니다. 이렇게 주문에 따라 매번 새롭게 발생하는 주문 정보와 주문을 해도 변경되지 않는 사용자 정보가 하나의 테이블에 들어있으면, 엄청난 양의 데이터 중복이 발생하는 문제가 생깁니다.

중복 데이터가 많다는 것은 하나의 데이터를 찾는데 더 많은 시간이 들며 데이터를 저장하기 위한 공간도 훨씬 많이 필요하다는 의미입니다. 어떻게 이 문제를 해결할 수 있을까요? 바로 아래와 같이 주문과 사용자 정보를 나누어서 다른 테이블로 관리하면 됩니다.

사용자 테이블

사용자 테이블은 사용자에 해당하는 정보만 가지고 있으면 됩니다. 위에서 4개의 행으로 존재했던 데이터들은 모두 중복되기 때문에 아래와 같이 하나의 행으로 데이터를 저장하면 됩니다.

주문 테이블

주문 테이블은 주문을 관리하는 테이블로 주문과 관련된 정보만 가지고 있으면 됩니다. 위에서 파란색에 해당하는 정보들만 가지고 있으면 됩니다. 하지만, 이렇게만 테이블을 만들면 큰 문제가 발생합니다. 주문 정보는 추가되는데, 누가 주문을 했는지 알 수 있는 방법이 없다는 것입니다.

이 문제를 해결하기 위해서 orders 테이블에 주문한 사용자를 사용자 테이블에서 찾을 수 있는 정보를 추가하면 됩니다. 이때 사용하는 정보가 바로 사용자 테이블의 기본 키 (Primary Key) 입니다. 기본키는 해당 테이블에서 고유한 값을 가지는 열의 조합입니다. 다시 말해, 사용자 테이블의 기본키 정보만 주문 테이블이 가지고 있으면 사용자 테이블에서 한명의 사용자를 찾을 수 있다는 것 입니다. 위의 사용자 테이블은 사용자 아이디가 기본키 입니다. 그러므로, 아래와 같이 주문 테이블 마지막에 사용자 테이블의 기본키를 추가하면, 중복된 데이터가 없으면서도 문제 없이 데이터를 저장, 관리할 수 있게 됩니다.

주문 테이블에서 사용자 아이디 정보를 활용해 사용자 테이블의 정보를 찾을 수 있게 되었습니다. 바로, 주문 테이블에 존재하는 사용자 아이디 정보 (기본키) 를 우리는 외래키 (Foriegn Key)라고 부릅니다.

외래키 역할

앞서 살펴본바와 같이, 외래키는 두개의 테이블을 연결해주는 연결 다리 역할을 합니다. 기본키가 중복된 데이터가 하나의 테이블에 삽입되는 것을 방지하는 역할을 했던 것을 기억하실 것 입니다. 외래키 역시 비슷하게 문제를 방지하는 역할을 수행합니다. 외래키는 새롭게 추가되는 행에서 외래키에 해당하는 값이 외래키가 참조하는 테이블에 존재하는지를 체크합니다.

예를 들어, 위의 주문 테이블에 새로운 데이터를 넣고자 할때 외래키에 해당하는 사용자 아이디가 아직 가입하지 않은 사용자 아이디 정보면 DBMS 는 에러를 발생시켜서 해당 데이터 삽입을 막습니다. 이 기능은 테이블 내에 저장되어있는 데이터가 항상 참조하는 값이 있다는 것을 보장해주는 역할을 합니다.

마치며

오늘 글에서는 외래키의 개념에 대해서 이해하는 시간을 가졌습니다. 본문에서 설명했던 것처럼, 외래키는 두개의 테이블을 연결하는 연결다리 역할을 하며, 참조하는 테이블에 무결성을 높여주는 역할을 한다는 것을 기억하시기 바랍니다.

SQL은 테이블로 시작해서 테이블로 끝난다고 말씀드렸었습니다. 데이터 분석을 해나가는 과정에서 중간 중간 쿼리의 결과를 테이블 형태로 시각화해서 생각하는 것이 효율적이고 안정적인 SQL을 작성하는데 도움이 됩니다. 외래키의 경우 아래와 같이, 외래키가 다른 테이블의 기본키를 화살표로 가리키는 형태로 머릿속에 시각화해서 기억하시면 좋을 것 같습니다.

다음 글에서는 2개로 나누어진 테이블을 하나로 합치는 작업인 조인 (JOIN)에 대해서 배워보도록 하겠습니다.

[Mysql] Foreign Key(외래키)

1. 외래키 ( Foreign Key )란?

외래키는 두 테이블을 서로 연결하는 데 사용되는 키이다.

외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블이라한다.

2. 외래키 사용시 주의 사항

1) 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일해야한다. (참조 무결성 제약조건)

2) 부모 테이블의 기본키, 고유키를 외래키로 지정할 수 있다.

3) 부모 테이블의 기본키, 고유키가 여러개의 컬럼으로 이루어져 있다면 부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정할 수 있다.

CREATE TABLE `parent` ( `id1` INT(11) NOT NULL, `id2` INT(11) NOT NULL, `id3` INT(11) NOT NULL, `uk1` INT(11) NOT NULL, `uk2` INT(11) NOT NULL, `uk3` INT(11) NOT NULL, PRIMARY KEY (`id1`, `id2`, `id3`), UNIQUE KEY (`uk1`, `uk2`, `uk3`) ); CREATE TABLE `child` ( `id` INT(11) NOT NULL, `id1` INT(11) NOT NULL, `id2` INT(11) NOT NULL, `uk1` INT(11) NOT NULL, `uk2` INT(11) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`id1`, `id2`) REFERENCES `parent` (`id1`, `id2`), FOREIGN KEY (`uk1`, `uk2`) REFERENCES `parent` (`uk1`, `uk2`) )

4) 외래키로 지정할 두 테이블의 필드는 같은 데이터 타입이어야 한다.

3. 외래키 예제

데이터베이스 마다 선언 하는 방식이 다를 수 있으며, Mysql 기준으로 설명하겠다.

create table department( id int auto_increment primary key, name varchar(20) not null, code char(13) not null unique key ); create table employee ( id int auto_increment primary key, name varchar(20) not null, code char(13) not null unique key, dept_id int, foreign key (dept_id) references department(id) );

department(부서)와 employee(회사원) 테이블이 있다. department이 부모 테이블이고, employee가 자식 테이블이다.

외래키를 가진 테이블이 자식 테이블이고, 참조되는 테이블이 부모 테이블이다.

CONSTRAINT [CONSTRAINT_NAME] FOREIGN KEY (자식 테이블 컬럼 명) REFERENCES 참조테이블(부모 테이블 기본키명) ON UPDATE 옵션 ON DELETE 옵션; # CONSTRAINT [CONSTRAINT_NAME]은 생략이 가능하다.

다대 일 관계

4. 외래키 옵션

1) On Delete

Cascade : 부모 데이터 삭제 시 자식 데이터도 삭제

Set null : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Null로 업데이트

Set default : 부모 데이터 삭제 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트

Restrict : 자식 테이블이 참조하고 있을 경우, 데이터 삭제 불가

No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.

2) On Update

Cascade : 부모 데이터 업데이트 시 자식 데이터도 업데이트

Set null : 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Null로 업데이트

Set default : 부모 데이터 업데이트 시 자식 테이블의 참조 컬럼을 Default 값으로 업데이트

Restrict : 자식 테이블이 참조하고 있을 경우, 업데이트 불가

No Action : Restrict와 동일, 옵션을 지정하지 않았을 경우 자동으로 선택된다.

5. 외래키 추가

ALTER TABLE employee ADD FOREIGN KEY (dept_id) REFERENCES department(id);

6. 외래키 삭제

외래키를 삭제하려면 CONSTRAINT_NAME을 알아야한다.

select * from information_schema.table_constraints where TABLE_SCHEMA = ‘DB명’ and TABLE_NAME = ‘테이블명’

삭제하고 싶은 키의 CONSTRAINT_NAME을 확인한다.

ALTER TABLE [Table_Name] DROP CONSTRAINT [CONSTRAINT_NAME]; 또는 ALTER TABLE [Table_Name] DROP FOREIGN KEY [CONSTRAINT_NAME];

7. TEST

# 외래키 이름을 검색한다. ex) employee_ibfk_1 select * from information_schema.table_constraints where TABLE_SCHEMA = ‘myDB’ and TABLE_NAME = ’employee’ # 외래키를 삭제한다. ALTER TABLE employee DROP FOREIGN KEY employee_ibfk_1; #새로운 조건의 외래키를 추가한다. #부모 행이 삭제되었을 경우 외래키 ID를 NULL로 업데이트한다. ALTER TABLE employee ADD CONSTRAINT employee_ibfk_1 FOREIGN KEY (dept_id) REFERENCES department(id) ON DELETE SET NULL;

도움이 되셨다면 공감버튼을 눌러주세요!

So you have finished reading the 외래 키 topic article, if you find this article useful, please share it. Thank you very much. See more: 외래키 안쓰는 이유, 외래키 사용법, 외래키 참조, 외래키란, 외래키 사용 이유, 외래키 설정, db 외래키, 기본키 외래키

Leave a Comment