상세 컨텐츠

본문 제목

[TIL] 2024.01.24 SQL 제약 조건

[TIL]

by 재호링 2024. 1. 24. 21:13

본문

오늘 한 일

  • SQL 제약 조건,
  • FOREIGN KEY 와 alias 사용

SQL  제약 조건

 

이번 강의는 SQL 제약 조건에 해당하는 내용을 배웠다.

먼저 각 컬럼들간의 제한 사항을 관리하는 것이 제약 조건 이라는 것인데,

조건을 위반하는 데이터 방지 및 무결성을 보장하는 규칙이다.

 

무결성이란 데이터가 결험 없이 정확하고 완전한 상태를 뜻하는데

또 다른 관계는 무엇이 있는지 궁금해져 찾아 봤다.

  • 일관성
  • 개체 무결성
  • 참조 무결성
  • 검색 및 질의
  • 보안
  • 데이터 중복 최소화
  • 데이터 모델링
  • 확장성 및 유지보수 용이성

RDBMS 를 활용하면서 데이터를 효과적으로
구조화하고 조작하기 위한 여러가지 장점들이다.

 

나중에 ERD를 작성해 프로젝트를 진행할 때
잊지 않고 생각해보아야하는 관계라고 생각이 들었다.

 

SELECT p.postId, p.title, p.content, u.email
FROM Posts as p
JOIN Users as u
	ON p.userId = u.userId;

 

  • 가장 먼저 FROM 으로 Posts 라는 테이블을 조회
  • 두 번째로 JOIN 으로 Users 라는 테이블을 조회
  • 여기서 as p, as u 는 alias 로 특정 컬럼의 이름을 정해줌
  • on 부분에선 각 테이블에 있는 아이디가 관계를 맺고 있다고 표현
    중복되는 데이터 삭제, 동일한 userId 갖고 있는 것들만 표시하는 문법

이렇게 간결하게 표현을 해주는게
"alias" 컬럼 이름을 길게 가져가면 나쁜 냄새가 나는
코드가 작성되어 권장되지 않는다.

 

CREATE TABLE Publisher (
    publisherId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    publisherName varchar(255) NOT NULL,
    publisherAddress varchar(255) NOT NULL,
);

CREATE TABLE Books (
    bookId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    publisherId int(11) NOT NULL,
    bookName varchar(255) NOT NULL,
    FOREIGN KEY (publisherId) REFERENCES Publisher (publisherId)
);

 

부모테이블인 Publisher 테이블

자식테이블인 Books 테이블에

FOREIGN KEY 로 1:N 관계를 가지게

연관지어준 코드다.

 

FOREIGN KEY 에 제일 먼저 들어오는 ( )는 Books <<

즉, 현재 있는 곳에서 사용하는 publisherId 이며,

REFERENCES 뒤에 Publisher ( ) 는 부모에 있는

publisherId를 바라보게 된다.

 

publisherId를 Books에 하나 더

만들어 주는 이유는 여러개의 책을

출판사는 가질 수 있다라는 조건이 있기 때문에

해당하는 특정 컬럼을 만들어 준 것이다.

 

책은 어떤 출판사(Publisher)에 소속되어 있는지

알게하기 위해서 publisherId를 가지게 있게 된 것.

Publisher TABLE
Books TABLE

 

관련글 더보기