2026/04 3

참조 무결성 체크: select if(count(*) = 0, 1, 0) 패턴

참조 무결성 체크: select if(count(*) = 0, 1, 0) 패턴 정리데이터 삭제 로직에서 가장 중요한 건 하나다.“이 데이터를 삭제해도 다른 곳에 영향이 없는가?”이걸 확인하는 가장 단순하고 안정적인 방법이 바로count + if 패턴이다.1. 테이블 구조 (일반화)특정 도메인에 종속되지 않도록 일반적인 구조로 보면 이렇게 생각하면 된다.📌 ITEM (삭제 대상 테이블)ITEM_IDPKNAME이름📌 ITEM_USAGE (참조 테이블)USAGE_IDPKITEM_IDITEM을 참조하는 FK...기타 사용 정보 👉 핵심 관계ITEM_USAGE.ITEM_ID → ITEM.ITEM_ID즉, ITEM이 다른 곳에서 사용 중인지 확인해야 삭제 가능2. 문제 상황ITEM을 삭제하려고 한다.하지만IT..

SQL 2026.04.17

[MYSQL] 코테 암기용 날짜 비교 함수 정리

1. 현재 시간now() -- 날짜+시간curdate() -- 날짜curtime() -- 시간 2. 날짜 추출year(dt)month(dt)day(dt)hour(dt)minute(dt)second(dt)date(dt) -- 날짜만time(dt) -- 시간만3. 포맷 변환date_format(dt, '%Y-%m-%d')date_format(dt, '%Y-%m')date_format(dt, '%H:%i:%s') 핵심 포맷%Y 연도%m 월%d 일%H 시%i 분%s 초4. 날짜 더하기 / 빼기date_add(dt, interval 1 day)date_sub(dt, interval 1 day) 단위day / month / year / hour / minute / second5..

SQL 2026.04.15

Token 기반 사용자 인증 도입기 (Stateless, Authorization Header)

sso 서버는 기본적으로 session으로 제공함웹에서는 session 기반으로만 사용자 권한을 유지하는데 큰 문제가 없었음(브라우저가 JSESSIONID 쿠키를 자동으로 저장하고 전송해주기 때문) 하지만 Android 앱이 해당 서버를 이용할 경우,사용자 권한을 session으로만 관리하면 두 가지 문제가 있음Android 앱에서는 쿠키를 자동으로 저장하고 재전송하지 않는다→ 부가적인 구현 필요이 앱에서는 일반적으로 작업 시간이 길기 때문에저장 시점에 서버 세션이 만료되면 인증 실패로 작업물이 날아갈 수 있다→ 클라이언트가(앱에서) 세션 상태 제어권을 가져야 함그래서 요청 header에 token을 포함하여 웹/앱 환경 모두에서 일관되게 사용자 권한을 관리할 수 있도록 변경했다.( 아래 예제 코드는 이..

spring 2026.04.07