본문 바로가기

분류 전체보기

(19)
관계 데이터 모델 - 무결성 제약조건 데이터 베이스에 데이터를 저장하고 다시 찾을 때 데이터의 무결성을 보장하기 위해서 우리는 3가지 제약조건을 걸어주게 된다 도메인 무결성 제약조건 개체 무결성 제약조건 참조 무결성 제약조건 이 3개를 우리는 차례대로 알아보도록 하겠다 도메인 무결성 제약조건 일반적인 프로그래밍에서 변수형 선언과 비슷한 느낌이라고 보면 된다 튜플에 해당 값들은 자신이 속한 속성의 도메인에 지정된 값만을 사용해야 한다는 것이다 예를 들어서 User( password : String) 이런 테이블이 있다고 하겠다 그러면 String 말고 다른 타입의 값이 들어가서는 안된다는 것이다 개체 무결성 제약조건 기본키 제약이라고 한다 NULL값을 가져서는 안된다 릴레이션 내에 오직 하나의 값만 존재해야한다 개체 무결성 제약 조건은 참조 ..
관계 데이터 모델 - 무결성 제약 조건 (Key) 제약 조건을 하는 이유 데이터베이스에 저장된 데이터는 문제가 없어야 하며 질의에 대해서 신뢰성 있는 결괏값을 제공해주기 위해서 제약조건을 만들어서 걸어줘야 한다 즉 데이터의 무결성을 만들어주기 위함이다 UserId Email Password NickName 1 peachberry@kakao.com 1234 peach 2 baek@kakao.com 1234 baek 3 peach@gmail.com 3456 peach 위와 같은 릴레이션이 존재한다고 하겠다 위의 릴레이션은 UserId와 Email은 중복이 되지 않는다고 하겠다 키 (Key) 키라는 것은 무엇인가를 식별한다는 의미를 가진다 관계 데이터베이스에서 키는 릴레이션에서 특정 튜플을 식별할 때 사용하는 속성 또는 속성 집합이다 식별을 하기위해서 사용되..
관계 데이터 모델 - Relation 🧐 릴레이션이란... 릴레이션은 하나 이상의 집합으로 표현되는 것을 이야기한다 여기서 릴레이션이라고 이야기했지만 테이블과 같은 의미를 가지고 있다 테이블로 이야기를 하자면.. 테이블은 하나 이상의 열(column)로 표현되는 것을 이야기한다 하나의 행(row)을 선택했을 때 집합 또는 열들에서 선택된 원소들이 서로 관계를 맺고 있다고 볼 수 있다 관계(Relationship)의 개념 릴레이션(테이블) 내에서 생성되는 관계 -> 하나의 행을 선택했을 때 릴레이션 간에 생성되는 관계 -> 한 릴레이션에서 다른 릴레이션으로 식별 가능한 값을 이용하여 연결 🛠 릴레이션의 구성요소 릴레이션 스키마 릴레이션이 어떻게 구성되었으며 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의 보통 스키마는 릴레이션의 첫 행인..
Spring Security CustomFilter Test 제가 요즘 Spring Security를 이용해서 간단한 인증서버 구축을 하고 있습니다 인증서버 테스트 코드 작성을 하면서 겪은 문제점에 대해서 나눠보고자 합니다 1. CustomSecurityFilter를 작성했을 경우 테스트 구성 먼저는 테스트를 구성하는 것부터 문제가 발생했습니다 일단 저는 JWT 인증을 구현하기 위해서 자체적으로 Custom 한 JwtAuthTokenFilter라는 것을 구성했습니다 그래서 일반적으로 Spring MVC 테스트를 위해서 사용하는 @WebMvcTest를 사용했을 경우에 문제가 발생했습니다 @WebMvcTest에 대해서 간단하게 설명하자면 Spring MVC의 컴포넌트들의 초점을 맞춰서 테스트를 진행하는 어노테이션으로 보면 됩니다 (MVC 컴포넌트는 @Controlle..
ICMP 이번엔 ICMP에 대해서 알아보도록 하겠습니다 ICMP란 무엇인가.. 🤔 ICMP는 Intenet Control Message Protocol 의 약자로 사용되는 것인데 호스트와 라우터 간에 메세지를 주고 받기위해서 사용되는 프로토콜이라고 볼 수 있습니다 예를 들어서 호스트에서 http 통신을 서버로 전송했는데 해당 서버가 없을 경우에 오류 메세지를 받게 되는데 그 경우에 사용되는 프로토콜이 ICMP 프로토콜이라고 볼 수 있습니다 1️⃣ ICMP의 계층의 위치 ICMP 같은 경우에는 IP의 한 부분으로 볼 수 도 있지만 보통의 경우에는 IP 데이터 그램에 포함 되서 전송되기 때문에 TCP나 UDP와 같은 전송 계층의 프로토콜로 보기도 한다 그래서 TCP UDP와 같은 방법으로 캡슐 화 되고 해체 되며 사..
Swift - UIStackView 요즘에 autolayout에 대해서 공부하면서 UIStackView를 사용해 보기로 해서 사용하면서 알게된 점이랑 원리 그리고 간단한 사용방법에 대해서 알아보도록 할게요 처음엔 저도 좀 헤메기는 했지만 예제를 따라 해 보니깐 어느 정도 이해는 되더라고요 그렇게 어렵지는 않으니 천천히 읽어 보시면 될 것 같아요 :) 제가 참고한 자료는 아래쪽에 링크를 걸어둘 테니 보시면 될 것 같아요!! 먼저 애플 공식 문서에 나와있는 스택 뷰를 쓰면 좋은 점에 대해서 보겠습니다 "Stack views let you leverage the power of Auto Layout, creating user interfaces that can dynamically adapt to the device’s orientation, ..
Swift - Properties - Property Wrappers 오늘 공부할 것은 Property Wrapper입니다 이번에는 간단한 개념과 사용방법에 대해서 알아보도록 할게요 1. 기본 개념 property wrapper는 프로퍼티를 저장 방법을 관리하는 코드와 프로퍼티를 정의하는 코드 사이에 분리하는 계층을 추가한다 네가 property wrapper를 사용할 때 너는 관리 코드(management code)를 wrapper를 정의할 때 한번 작성하고 다수의 프로퍼티에 관리 코드를 재사용하면 된다 property wrapper를 작성하기 위해서 너는 wrappedValue 프로퍼티를 정의한 struct, enumeration, classs을 만들어야 한다 2. 사용방법 애플 문서에 나와있는 예제를 가지고 설명해 드리겠습니다 @propertyWrapper struc..
Closure - Capture List 이번 시간에는 Capture List에 대해서 알아보도록 할게요 먼저 클로저는 주변 범위에서 변수나 상수를 강한 참조로 캡처할 수 있는 건 다들 아시죠? ㅎ 캡처 리스트의 기본 개념에 대해서 먼저 알아보도록 할게요 클로저 안에서 캡처된 변수들이 어떻게 컨트롤할지 명확하게 하기 위해서 사용되어요 매개변수의 리스트 앞에 대괄호로 둘러 싸여서 콤마로 분리되어서 쓰입니다 사용한다면 매개변수의 이름이나 매개변수 타입이나 반환 타입을 생략할 지라도 반드시 in 키워드를 사용해야 해요 진입점은 클로져가 생성되었을 때이다 캡처 목록의 각 항목에 대해 상수는 주변 범위에서 이름이 같은 상수 또는 변수의 값으로 초기화된다. 아래에 코드를 보면서 추가적으로 설명드릴게요! var a = 0 var b = 0 let closu..