전체 글 83

[SQLD] 식별자

식별자  식별자엔터티 내의 각 인스턴스를 고유하게 구분하기 위한 속성, 혹은 속성들의 집합을 의미식별자를 통해 데이터의 무결성과 효율적인 관리를 보장할 수 있다비식별자인스턴스를 식별하는데 사용되지 않는 속성으로, 인스턴스를 유일하게 식별하는데 영향을 미치지 않는다예를들어 '이름', '닉네임', '성별' 처럼 중복될 수 있는 속성은 인스턴스를 식별할 수 없기에 비식별자이다  주식별자의 주요 특징유일성주식별자에 의해 엔터티 내 모든 인스턴스가 유일하게 구분되어야 한다최소성주식별자를 구성하는 속성의 수는, 유일성을 만족하는 최소한의 수로 구성되어야 한다불변성주식별자가 한번 특정 엔터티에 지정되면, 그 식별자의 값은 변하지 않아야 한다존재성주식별자의 값은 반드시 존재해야 하며, NULL 값을 가질 수 없다  식..

DataBase 2025.02.13

[SQLD] 데이터모델링의 관계

관계   관계두 엔터티 간의 논리적인 연관성을 의미엔터티의 인스턴스들이 서로 어떻게 연관되어 있는지를 나타낸다  관계의 개념적 분류존재에 의한 관계한 엔터티가 다른 엔터티에 속하거나 포함되는 등, 존재 자체로 형성되는 관계ex) 학생 - 학과: '소속된다'라는 관계는 학생이 학과에 속하는 존재적 관계임행위에 의한 관계엔터티 간의 상호작용이나 행위를 통해 형성되는 관계ex) 고객 - 상품: '주문한다'라는 관계는 고객이 상품을 주문하는 행위에 의해 형성되는 관계임  ERD에서의 관계ERD에서는 '존재에 의한 관계'와 '행위에 의한 관계'를 구분짓지 않고 동일한 표기법을 사용한다(단일화된 방식) ERD에서 관계 표기법관계명두 엔터티 간의 관계를 나타내는 '동사(Verb)' 형태의 이름관계 차수1:1, 1:N..

DataBase 2025.02.11

[SQLD] 함수 종속성, 정규화, 반정규화

함수 종속성 (Functional Dependency)   함수 종속성(Functional Dependency)특정 속성이 다른 속성을 결정하는 관계를 의미X -> Y == X가 Y를 함수적으로 결정 == X의 값이 정해지면 Y의 값이 항상 고유하게 결정된다잘못 설계된 함수 종속성을 정규화를 통해 제거하면 데이터 무결성 보장, 중복 제거, 저장 공간 절약, 성능 개선 등의 이점이 있다ex) '사원' 테이블 == '사원번호' -> '이름' 의 함수 종속성이 존재: '사원번호'가 정해지면 그에 해당하는 고유한 '이름'이 정해지지만, '이름'은 여러 개가 존재할 수 있으므로 이에 대응하는 '사원번호'가 유일하지 않을 수 있기 때문  함수 종속성의 유형완전 함수 종속 (Full Functional Depende..

DataBase 2025.02.11

[SQLD] 엔터티, 속성, NULL 속성

Entity(엔터티)   엔터티업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로, 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합1976년 '피터 첸'에 의해 Entity-Relationship Model이라는 표기법이 만들어짐  엔터티 조건반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다유일한 식별자와 유일한 이름을 가져야 한다두 개 이상의 영속성 인스턴스의 집합이어야 한다(싱글톤 제외)두 개 이상의 속성(attribute)을 가져야 한다다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다엔터티는 업무 프로세스에 의해 이용되어야 한다  엔터티의 발생 시점에 따른 분류기본 엔터티(Fundamental..

DataBase 2025.02.05

[SQLD] 데이터 모델링, 데이터 독립성, 스키마

데이터 모델링   데이터 모델링정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법으로, 시스템 구현'만'을 위해 수행하는 테스크가 아니다현실 세계의 데이터를 약속된 표기법으로 표현하는 과정데이터베이스를 구축하기 위한 분석 및 설계의 과정데이터 모델링 자체로도 업무를 설명하고 분석할 수 있어야 한다 데이터 모델링 유의점중복데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다비유연성'데이터의 정의'를 '데이터의 사용 프로세스'와 분리이를 통해 '데이터나 프로세스의 작은 변화'가 '애플리케이션과 데이터베이스'에 중대한 변화를 일으킬 수 있는 가능성을 줄인다 비일관성데이터간의 연관된 정보가 있는데 이를 무시하고 데이터가 갱신되는 경우를 말한다데이터의 중복이 없더라도 비일관성은 발생할 수..

DataBase 2025.02.05

[Real MySQL 8.0] RDBMS중 왜 MySQL을 선택했는가?

RDBMS를 선택하기 위한 기준은 다음 순서대로 생각해보면 좋다안정성성능과 기능커뮤니티나 인지도여기서 추가적으로 비용까지 고려해서 비교해보자.비교할 RDBMS들은 'DB-Engines'의 랭킹 1위부터 4위까지중, windows 플랫폼에 최적화된 'Microsoft SQL Server'를 제외하고 'Oracle', 'MySQL', 'PostgreSQL'만으로 비교해보겠다.      비교 1. 안정성 - ACID 준수 여부 -> ACID를 준수하는가?Oracle: ACID를 완벽하게 준수PostgreSQL: ACID를 완벽하게 준수MySQL: InnoDB 엔진 사용시 ACID를 준수하지만, 기본 설정에서는 읽기 일관성(Read Consistency)를 보장하지 않기에, 별도 설정이 필요하다- 장애 발생 시..

DataBase 2025.01.24

2024 .

2024년 마지막 날이다 올해 처음으로 취업 준비를 했다 취준 시기는 남자 인생에서 가장 비참한 시기라는 말이 있듯, 나에게도 가장 비참한 해로 끝이 난 것 같다    올해의 시작은 기대 반 걱정 반이었다 아무것도 모르던, 사회에 나가본 적도 없던 20대 5명이 창업이라는 달콤한 말에 이끌려 아무런 각오 없이 뛰어들었다 지금 와서 돌이켜보면, 그 누구 한 명 진심으로 창업에 대해 다가간 적 없었던 것 같다 매번 마감기한에 쫓겨 지원금 기획서를 작성하고, 출근해서는 취업을 위한 이력서와 포트폴리오를 작성하기에 바빴었다 누구 하나 예외 없이. 그렇게 실력도, 자신감도 없이 도전했던 창업은 무려 6개월을 끌다가 끝이 났다    이후 나는 인생에서 처음으로 알바가 아닌 직장을 구하게 됐다 정규직도 아닌 계약직이..

회고록 2024.12.31

[AWS] EC2 Key Pair 다른 Region으로 옮기기 (feat. Value for parameter PublicKeyMaterial is invalid. Length exceeds maximum of 2048)

EC2의 Key Pair는 다른 리전으로 복사할 수가 없다.하지만 Key Pair Import 기능이 있으니, 기존의 Key Pair를 직접 까서 값을 복사한 후 import 해주는 방법을 사용해 보자. 이때 Key Pair Import시에 private key가 아닌 public key만을 import 할 수 있으므로, 다음 절차를 잘 따라서 진행하자.  1. Key-Pair가 저장된 디렉터리로 이동 2. 다음 명령어를 사용하여 private key에서 public key를 추출ssh-keygen -y -f Key이름.pem  3. AWS EC2 -> Network & Security -> Key Pair로 이동해서 "키 페어 가져오기"  4. 이름 & 추출한 public key 붙여 넣고 생성   5..

[RabbitMQ] RabbitMQ Management 접속 에러 해결하기

Problem: aws ec2에서 RabbitMQ를 docker-compose로 실행시켰는데 RabbitMQ Management인 'ec2 ip:15672'에 접속하면, 'ec2 ip에서 접근을 거부하였습니다' 에러 발생  Environment - aws ec2- docker-compose에서 포트 포워딩 설정 완료- 인바운드 규칙에서 15672 포트 설정 완료 DOCKER-COMPOSE.YMLDOCKER-COMPOSE.YML-----------------------------version: "3"networks: # network를 먼저 정의해줘야 services에서 붙일 수 있다 my-network: # 네트워크 이름 external: true # 이미 생성되어있는 네트워크 사용# docker..

[백준/Java] 농구 경기 1159

1. 첫 번째 풀이(success): HashMap 사용import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.HashMap;import java.util.Map;/** * condition * - 성의 첫 글자가 같은 선수 5명을 선발 * * answer * - 가능한 성의 첫 글자를 사전순으로 공백없이 출력 * - 5명보다 적다면 PREDAJA 출력 * * approach * - HashMap 사용 * - 입력받은 이름의 첫 번째 값의 value 증가 * - 모든 입력이 끝난 후 cnt가 5 이상인 값들을 sb에 추가 후 출..