일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- StringBuilder
- @PreAuthorize("isAuthenticated()")
- SQL dump
- 중첩 if
- StringBuffer
- JAVA 변수
- Scanner 시간구하기
- 중첩for
- 스프링부트 로그인
- 별찍기
- 증감 연산자
- D2Coding
- 스프링시큐리티 로그아웃
- 회원정보 수정
- if else if
- Node.js 설치
- SQL import
- jdk 설정
- MySQL workbench dump
- 클래스 형변환
- 이클립스 설치
- Springsecurity
- 인텔리제이 Web 애플리케이션
- System클래스
- JSP 실습
- 접근제어자
- if else
- SpringSecurity 로그아웃
- SpringBoot
- SpringSecurity 로그인
Archives
- Today
- Total
gi_dor
SQL ) 테이블 생성시 Deleted 컬럼이 필요 할까? 본문
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 (7) | 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 |