Computer Science/SQL

SQL | 관계형 데이터베이스 설계 (vetdb에서 Owner와 Pet 테이블 만들기) - 1

올리브한입 2025. 4. 25. 02:09
반응형

관계형 데이터베이스를 공부하면서 가장 먼저 익혀야 할 개념은 테이블 설계 관계 설정입니다. 이 글에서는 동물병원 데이터베이스 vetdb를 예시로, Owner(반려동물 주인)와 Pet(반려동물) 두 개의 테이블을 생성하면서 MySQL 기본 구문을 하나씩 살펴보겠습니다.

 

데이터베이스 생성

CREATE DATABASE vetdb;
  • CREATE DATABASE: 새로운 데이터베이스를 생성합니다.
USE vetdb;
  • USE vetdb: 생성한 vetdb를 현재 세션에서 사용하도록 설정합니다.

Owner 테이블 생성

CREATE TABLE Owner (
    owner_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    phone VARCHAR(20),
    email VARCHAR(100)
);

 

  • INT AUTO_INCREMENT PRIMARY KEY: owner_id는 정수형이며, 값이 자동으로 증가합니다. 동시에 기본키로 지정됩니다.
  • VARCHAR(100): 최대 100자의 문자열을 저장합니다.
  • NOT NULL: 해당 컬럼은 반드시 값이 있어야 합니다.

Pet 테이블 생성 (외래키 포함)

CREATE TABLE Pet (
    pet_id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    species VARCHAR(50),
    breed VARCHAR(50),
    birthdate DATE,
    owner_id INT,
    FOREIGN KEY (owner_id) REFERENCES Owner(owner_id)
);

 

  • FOREIGN KEY (owner_id) REFERENCES Owner(owner_id): Pet 테이블의 owner_id는 Owner 테이블의 owner_id를 참조합니다. 즉, 반려동물은 반드시 등록된 주인에게 연결됩니다.

예시 데이터 삽입

-- Owner 테이블
INSERT INTO Owner (name, phone, email) VALUES
('Kim Soojin', '010-1234-5678', 'soojin.kim@example.com'),
('Lee Hyunwoo', '010-9876-5432', 'hyunwoo.lee@example.com'),
('Choi Yuna', '010-4567-8901', 'yuna.choi@example.com');

-- Pet 테이블
INSERT INTO Pet (name, species, breed, birthdate, owner_id) VALUES
('Bori', 'Dog', 'Shih Tzu', '2020-04-15', 1),
('Nabi', 'Cat', 'Korean Shorthair', '2019-07-23', 1),
('Coco', 'Dog', 'Poodle', '2021-11-30', 2),
('Toto', 'Parrot', 'Cockatiel', '2018-02-12', 3);

 

  • INSERT INTO ... VALUES: 테이블에 데이터를 삽입하는 구문입니다. 여러 행을 한 번에 삽입할 수도 있습니다.
  • owner_id는 앞서 삽입된 Owner 테이블의 PK와 연결되므로, 외래키 제약 조건을 만족해야 합니다.

 

다음 포스팅에서 이어집니다.

 

반응형