ERD (엔티티 관계 다이어그램, Entity Relationship Diagram)
데이터 베이스 설계 과정에서 사용되는 모델링 기법 중 하나이다.
데이터 베이스에 저장될 데이터 엔티티(Entity)들과 엔티티 간의 관계를 시각적으로 표현하는 기법.
Entity는 정의 가능한 사물 또는 개념을 의미하고 아래와 같이 표현된다.

테이블 이름 , pk정보,컬럼이름 ,자료형 ,제약조건

|(필수, mandatory ) or O(Optional, 선택).
관계
1:1 관계 : 하나의 인스턴스 엔티티가 다른 하나의 인스턴스와 관계를 맺는 것/
ex) 한 사람은 하나의 여권을 가질 수 있고, 한 여권은 한 사람에게만 발급된다.
1:n 관계 : 하나의 엔티티가 여러개의 인스턴스와 관계를 맺는 것
ex) 하나의 사용자는 여러개의 전화번호를 가질 수 있지만 여러명의 유저가 하나의 전화번호를 가질 수는 없다.
n:m 관계 : 양쪽 엔티티가 서로 여러 관계를 맺고, 두 엔티티 모두 여러 인스턴스가 서로 연결되는 구조
ex) 한명의 학생은 여러 수업을 수강할 수 있고, 수업은 여러 학생 등록할 수 있다.
sql 실습
DDL
CREATE
열 : 열의 이름
데이터 타입 : 정수, 문자열, 날짜
제약조건 : NOT NULL, DEFAULT, PRIMARY KEY 등의 옵션
COMMENT : 별명CREATE TABLE [데이터베이스이름].[테이블이름] (
[열] [데이터타입] [제약조건] COMMENT [별명],
)실제 예시
CREATE TABLE test_db.students (
name VARCHAR(255) NOT NULL, // NOT NULL은 해당 열에 NULL값을 허용하지 않는 의미
age INT NOT NULL,
address VARCHAR(255) NOT NULL
)UNIQUE 제약조건 : 중복 없이 유일하게 들어가야하는 정보 ex) id, 이메일
CREATE TABLE 테이블명 (
컬럼명 데이터타입 UNIQUE
...
)DEFAULT 제약조건 : 컬럼에 값을 입력하지 않을 경우 기본값이 적용된다.
CREATE TABLE 테이블명 (
컬럼명 데이터타입 DEFAULT 기본값
...
)실제예시
CREATE TABLE profile (
id VARCHAR(255) NOT NULL,
create_date DATE DEFAULT now()
)
INSERT INTO profile (id) VALUES (45)PRIMARY KEY (기본키) : 데이터를 식별하기 위한 기준. 기본키는 NULL 값을 가질 수 없으며 중복된 값을 가져서도 안된다 즉 NOT NULL + UNIQUE -> ID같은 속성
auto_increment : 자동증가 옵션과 함께 많이 사용
CREATE TABLE 테이블명 (
컬럼명 데이터타입 PRIMARY KEY auto_increment.
...
) FOREIGN KEY (외래키) : 테이블간 관계를 나타낼 때 사용. 다른 테이블의 기본키를 참조해 외래키로 사용한다. 즉 외래키는 다른 테이블의 기본키 중 하나
RESTRICT : 대부분의 DBMS 시스템은 DEFAULT 설정으로 RESTRICT가 적용된다. 데이터 무결성을 유지하기 위한 가장 안전한 옵션인데, 외래키 제약 조건이 설정된 경우 참조된 행이 삭제되는 것을 방지한다.
이 제약조건을 사용하게 될때 자식의 모든 레코드를 삭제해야 부모 테이블을 삭제할 수 있다.
CASECADE : 부모테이블에 대한 DELETE를 허용. 참조된 테이블의 레코드가 삭제될 때 해당 레코드를 참조하는 다른 테이블의 레코드도 함께 삭제도니다. 즉 부모의 행이 삭제되면 관련된 자식 테이블 행도 자동삭제된다.
SET NULL : 부모 테이블의 정보가 삭제되었을 때 참고하던 자식 테이블의 FK 컬럼값이 NULL로 변경
CREATE TABLE customer (
id INT PRIMARY KEY,
name VARCHAR(10) NOT NULL,
address VARCHAR(200),
contact VARCHAR(100)
);
CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
date TIMESTAMP DEFAULT now(),
payment VARCHAR(50),
amount INT,
delivery_amount INT,
-- 참조한 외래키
FOREIGN KEY (customer_id) REFERENCES customer(id) [ON DELETE CASCADE|ON DELETE SET NULL]
)ALTER : 테이블의 구조 변경을 위해 사용
ALTER TABLE students ADD grade VARCHAR(20) // varchar속성의 grade 추가
ALTER TABLE students RENAME COLUMN grade TO grea // students의 grade이름을 great로 수정
ALTER TABLE students MODIFY COLUMN address VARCHAR(100) // 타입을 varchar로 수정
ALTER TABLE students DROP COLUMN grade // grade 열삭제DML
DCL
'DataBase' 카테고리의 다른 글
| [오르미 백엔드 7기] (database 실습2) (7) | 2024.11.14 |
|---|---|
| [오르미 백엔드 7기] (DataBase) (0) | 2024.11.11 |