일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 이클립스 설치
- 자바의정석
- spring 게시판 삭제
- SpringSecurity 로그인
- @PreAuthorize("isAuthenticated()")
- 스프링시큐리티 로그아웃
- 논리 연산자
- SQL 튜닝
- join
- 배열
- 예약어
- 객체
- SQL
- 오버로딩
- 오버라이딩
- 함수
- java
- 친절한 SQL
- SQL튜닝
- 반복문
- 인텔리제이 Web 애플리케이션
- 상속
- 객체지향
- 비교 연산자
- 산술 연산자
- 연산자
- SpringSecurity 로그아웃
- StringBuffer
- 식별자
- 친절한 SQL 튜닝
Archives
- Today
- Total
gi_dor
SQL ) 테이블 생성시 Deleted 컬럼이 필요 할까? 본문
728x90
CREATE TABLE SAMPL_CUSTOMERS
(
NO NUMBER(10),
ID VARCHAR2(255) CONSTRAINT custmerId_NN NOT NULL,
NAME VARCHAR2(255) CONSTRAINT cusomterNm_NN NOT NULL,
PASSWORD VARCHAR2(255) CONSTRAINT cusomterPw_NN NOT NULL,
EMAIL VARCHAR2(255),
TEL VARCHAR2(255) CONSTRAINT customer_Tel_NN NOT NULL,
GENDER CHAR(1),
POSTAL_CODE VARCHAR2(20),
ADDRESS1 VARCHAR2(255),
ADDRESS2 VARCHAR2(255),
DELETED CHAR(1) DEFAULT 'N',
REG_DATE DATE DEFAULT SYSDATE,
UPD_DATE DATE DEFAULT SYSDATE,
CONSTRAINT customer_No_Pk PRIMARY KEY (NO),
CONSTRAINT customer_Id_Pk UNIQUE (ID),
CONSTRAINT customer_Gender CHECK ( USER_GENDER IN ('F', 'M') ),
CONSTRAINT customer_Email_UK UNIQUE (EMAIL),
CONSTRAINT customer_DELETED_CK CHECK ( DELETED IN ('Y', 'N') )
)
SQL 수업중 제약조건에 대해서 배우게 되었다
CREATE 를 사용해 테이블을 만드는 중에 문득 Deleted 컬럼이 거슬렸다
지난번 프로젝트 모델링 할 때 deleted 컬럼을 사용했었는데
회원 탈퇴하면 그냥 삭제 처리하면 되는걸
deleted 컬럼을 만들어서 N으로 표시해야할까 ?
라고 생각했다.
DELETED 컬럼 필요해 ?
( Customer )
Customer_No (PK) | Customer_Name | deleted |
10 | 곽두팔 | N |
20 | 김분식 | N |
30 | 박탈퇴 | Y |
(Order)
Order_No (PK) | Order_other | Customer_No (FK) |
1205 | 상품A | 10 |
1206 | 상품B | 10 |
1210 | 상품B | 20 |
예를들어
Customer 테이블 Customer_No
Order 테이블 Customer_No
Order 테이블 Customer_No 가 Customer 테이블의 Customer_No 를 참조 하고 있다면
Order 테이블 Customer_No는 FK 로 설정되어있다
이 상황시 발생할수 있는 경우가 2가지가 있다.
1.ON DELETE CASCADE
- 테이블에서 행 하나 삭제시 해당 고객이 주문한 모든 주문행도 삭제가 된다
- 판매량 조사 같이 주문량이 필요한 경우 문제가됨
2. ON DELETE RESTRICT
- 테이블에서 행 하나 삭제시 해당 고객이 주문한 행이 있다면 삭제가 되지 않는다
- 고객이 회원탈퇴 시 'N' 값이 아닌 'Y' 값을 주어서 회원 탈퇴 표시를 따로 해야한다.
728x90
'DataBase' 카테고리의 다른 글
[MySQL] RDS DB 이중화 읽기전용 + CQRS (6) | 2024.08.19 |
---|---|
트랜잭션(Trasaction) 이란 ? (0) | 2024.08.19 |
[MySQL] MySQL 프로파일링 - 인덱스 SELECT 성능 비교 (0) | 2024.05.08 |
DB 기본 (2) | 2023.12.04 |
Oracle ) 시작하기 , 관리자로 계정 생성 (1) | 2023.12.04 |