본문 바로가기

DB3

보안을 위한 DB 테이블 설계 백엔드 개발자로서 새로운 프로젝트를 시작할 떄, 다른 분들이 어떻게 하시는지는 모르겠습니다만 저는 가장 먼저 DB 테이블 설계를 진행합니다. 서비스의 요구사항을 파악하고, 테이블 스키마를 먼저 작성해야 앞으로 어떤 API가 필요하고 코드를 어떻게 분리해야 할지 큰 그림을 보기가 편하더라구요. 예를 들어서 회원가입과 로그인이 필요한 서비스를 개발해야 한다고 가정해봅시다. 유저의 아이디와 비밀번호를 저장해야 할거고, 사이트의 요구사항에 따라 이메일, 닉네임 또는 마케팅 수신 동의 등의 정보를 저장해야겠죠. 만약 유저가 탈퇴 후 1주일이 지나야 DB에서 삭제되도록 하고 싶다면 soft delete를 위한 필드로 하나 추가해야 할거구요. 이걸 감안해서 먼저 테이블을 설계하면 아래와 같이 엔티티 객체를 만들 수 .. 2025. 11. 24.
트랜잭션과 병렬처리에 대한 고찰 이번 글에서는 프로젝트 진행 도중에 생겼던 궁금한 점을 해결하는 과정을 공유해보려고 합니다. 트랜젝션과 병렬처리의 트레이드 오프에 대한 내용인데요, 개인적으로는 맥락의 흐름이 아주 흥미로웠던 사례인것 같아 한번 함께 생각의 흐름을 따라서 읽어주시면 감사할것 같습니다. 평소와 같이 코딩을 하고 있었습니다. 저는 평소에 메서드 작성 후 AI에게 지금 내가 작성한게 책임분리는 잘 되어있는지, 그리고 성능상 병목이 의심되는 취약점, 또는 성능 개선의 여지가 있는지 물어보곤 합니다. 그날도 평소처럼 코드를 작성하고 여기서 병목이 생기거나 더 효율적으로 개선할 수 있는 부분이 있으면 알려달라고 질문했죠. private PageCreationContextDto buildGenerationContext(Long sto.. 2025. 10. 23.
12. 제약조건 데이터 무결성 제약 조건 (Data Integrity Constraint Rule) 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해 테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러가지 규칙 NOT NULL : NULL을 허용하지 않는다 UNIQUE : 중복된 값을 허용하지 않는다. PRIMARY KEY : NULL을 허용하지 않고 중복된 값을 허용하지 않는다. FOREIGN KEY : 참조되는 테이블의 컬럼의 값이 존재하면 허용한다. CHECK : 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용한다. FOREIGN KEY란 참조되는 컬럼 (부모 컬럼) 에 존재하는 값만 참조하는 컬럼 (자식 컬럼) 에 사용할 수 있다. 그렇지 않은 경우는 에러 주의) 테이블 단위가 아닌 컬럼 .. 2023. 4. 25.