MySQL에서 1:1 관계는 두 개의 테이블 간에 1:1 대응 관계가 있는 경우에 사용됩니다. 
예를 들어, 학생 정보를 저장하는 테이블과 학생의 상세 정보를 저장하는 테이블이 있을 때,
이 두 테이블은 1:1 관계를 가질 수 있습니다. 이 경우 학생 정보를 저장하는 테이블과 
학생 상세 정보를 저장하는 테이블 각각의 기본키(primary key)와 외래키(foreign key)를 연결하여 
관계를 설정합니다. 이를 통해 데이터의 중복을 최소화하고 불필요한 데이터의 저장을 방지할 수 있습니다. 
1:1 관계에서는 두 테이블 중 하나의 테이블에서만 외래키를 가질 수 있습니다
1:1 관계를 사용하는 경우는 보통 테이블의 칼럼 중에 일부가 NULL 값을 가지거나, 
특정 칼럼의 값이 자주 변경되지 않는 경우입니다. 이러한 경우 1:1 관계를 사용하면 
테이블의 정규화를 유지하면서도 데이터를 보다 효율적으로 관리할 수 있습니다.

정규화란 데이터베이스 설계에서 가능한 중복을 제거하고 데이터를 구조화 하는 프로세스 입니다. 
이를 통해 테이터의 일관성, 유지보수, 검색 속도 등을 개선할 수 있습니다.
-- 회원 정보와 회원 등급 정보  1 : 1 관계로 설계 
DROP TABLE IF EXISTS member;
CREATE TABLE `member`(
	id INT PRIMARY KEY AUTO_INCREMENT, 
    name varchar(50) NOT NULL, 
    email VARCHAR(100), 
    address VARCHAR(100)
);

CREATE TABLE member_grade(
	member_id INT PRIMARY KEY, 
    grade VARCHAR(10), 
    point INT,
    FOREIGN KEY(member_id) REFERENCES member(id)
);


-- 직원 정보와 직위 정보를 저장하는 테이블 설계 1 : 1 관계 
 
CREATE TABLE employee(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    hire_date DATE NOT NULL
);

CREATE TABLE employee_position(
    employee_id INT PRIMARY KEY,
    position VARCHAR(50) NOT NULL,
    dismissal_date DATE,
    FOREIGN KEY (employee_id) REFERENCES employee(id)
);

-- 상품과 상품 상세 정보 1 : 1 관계 설계 
drop table product; 
CREATE TABLE product(
	id INT PRIMARY KEY, 
    name VARCHAR(100) NOT NULL, 
    price INT
);

CREATE TABLE product_detail(
	product_id INT PRIMARY KEY, 
    description TEXT, 
    FOREIGN KEY (product_id) REFERENCES product(id) 
);

'MYSQL' 카테고리의 다른 글

MySQL FUNCTION  (0) 2023.03.16
JOIN 구문  (0) 2023.03.16
1 : N 관계와 INSERT 구문  (0) 2023.03.16
1 : N (One-to-Many Relationship) 차수에 대한 고찰  (0) 2023.03.16
관계 차수  (0) 2023.03.16

+ Recent posts