STUDY/Computer Science
-
데이터베이스 정규화 알아보기STUDY/Computer Science 2023. 8. 16.
DB 정규화란 (normalization) 데이터 중복과 insertion, update, deletion anomaly를 최소화하기 위해 일련의 normal forms(NF)에 따라 relational DB를 구성하는 과정 정규형(Normal form) 이란? 정규화 되기 위해 준수해야 하는 몇 가지 규칙 들이 있는데 이 각각의 규칙을 normal form(NF) 이라고 부른다. 이 normal form을 가지고 정규화 하는 과정을 알아보자 Init table - 1NF - 2NF - 3NF - BCNF - 4NF - 5NF - 6NF 처음부터 순차적으로 진행하며 normal form을 만족하지 못하면 만족하도록 릴레이션 구조를 조정한다 앞 단계를 만족해야 다음 단계로 진행할 수 있다. 1NF 부터 B..
-
API란 무엇인가?STUDY/Computer Science 2023. 8. 9.
어떤 것을 좀 사용해봤다고 그것에 대해 잘 이해하고 있다고 착각하는 경우가 종종 있다. 내가 그렇다. API가 뭔지 설명해보란 말에 떠올랐던 생각은 "어떠한 역할을 수행할 수 있는 기능?" 따위였다. 분명 API에 대한 내용을 한 번 들었건만, 제대로 정리하지 않고 프로젝트만 진행해서 API를 계속 만들줄만 알고 API가 어떤건지에 관해서는 다 까먹어버린 것이다. 뭐 이렇게 기회가 왔으니, 이참에 API에 대해 정리해보고자 한다! API API는 Application Programming Interface의 약자로, 사전적 정의는 "응용 프로그램에서 사용할 수 있도록, 운영 체제 혹은 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스"를 말한다. 여기서 인터페이스(interface)란 서..
-
DB TransactionSTUDY/Computer Science 2023. 7. 26.
트랜잭션은 프로젝트를 진행할 때, 가끔 존재는 확인했지만 활용할 생각을 못했던 그리고 어떤것인지 정확하게 파악하지 못했던 개념이다.. 프로젝트를 진행하며 하나의 요청이 들어왔을 때 여러 개의 엔티티 인스턴스를 수정해야 하는 일이 생길 수도 있다. 그럴 때 어떻게 해야 하는지 알아보자. 🧐 트랜잭션(Transaction) 이란? 시스템에서 사용되는 더 이상 쪼갤 수 없는 업무 처리의 최소 단위이다. 정의만 보면 어떤 것인지 정확한 의미로 받아들이기 힘들것이다. 간단하게 말해서 데이터베이스에서 여러 작업을 하나의 단위로 묶어서 처리할 수 있도록 하는 것이 트랜잭션의 사용 목적이다. 예시를 통해 알아보면 이해가 빠를것이다. 가장 대표적으로 알려져 있는 예시로 계좌이체가 있다. 사람 A는 B에게 20만원을 이체..
-
시간 복잡도에 관하여STUDY/Computer Science 2023. 7. 12.
알고리즘은 어떤 목적을 달성하거나 결과물을 만들어내기 위한 일련의 과정들을 얘기한다. 같은 풀이라도 코드에 따라 각양각색의 알고리즘이 있을 수 있다. 어떤 알고리즘이 가장 효율적인가를 판단하기 위해서는 코드의 완료까지 걸리는 절차의 수로 결정한다. 따라서 같은 작업을 수행하는데 걸리는 절차가 적은 알고리즘이 훌륭한 알고리즘이다. 이것을 수치화 한것이 시간 복잡도이다. 예제로 알아보는 시간 복잡도 개념 실행 시간의 개념을 '함수나 알고리즘 수행에 필요한 스텝(step) 수'라고 정의하도록 하겠다. 왜냐하면 실행 시간은 같은 알고리즘이라도 컴퓨터 하드웨어의 성능에 따라 달라지기 때문에 초 단위로 표현하는 것은 어렵다 function multiply(arr, mult) { // cost times const ..
-
디자인 패턴과 프로그래밍 패러다임STUDY/Computer Science 2023. 5. 19.
디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있오록 하나의 '규약' 형태로 만들어 놓은 것을 의미한다. 1-1. 싱글톤 패턴 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 ( 주로 데이터베이스 연결 모듈에 많이 사용) -> 해당 클래스의 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 생성할 때 드는 비용이 줄어들지만, 의존성이 높아진다(독립적인 인스턴스를 만들기 어렵다) 의존성 주입 - 1-2. 팩토리 패턴 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다. 1-3. 전략 패턴 정책..