일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 너비우선탐색
- 다이나믹 프로그래밍
- oracle
- 깊이우선탐색
- 백준알고리즘
- BFS
- DP
- 파이썬
- 브루트포스
- 백준 알고리즘
- 너비 우선 탐색
- 그리디 알고리즘
- 백트래킹
- 다익스트라
- SWEA
- 브루트포스 알고리즘
- SW Expert Academy
- 자바스크립트
- 완전탐색
- 구현
- 그래프 이론
- Python
- 데이터베이스
- 문자열
- 프로그래머스
- 그래프 탐색
- javascript
- 오라클
- 스택
- DFS
- Today
- Total
목록분류 전체보기 (148)
민규의 흔적
다음 예시 릴레이션을 보자. 학번 이름 이메일 과목번호 학점 11002 이홍근 lee@naver.com CS310 A0 11002 이홍근 lee@naver.com CS313 B+ 24036 김순미 kim@gmail.com CS345 B0 24036 김순미 kim@gmail.com CS310 A+ 위의 릴레이션은 중복과 갱신 이상을 모두 일으키고 있다. 기본 키 쌍인 (학번, 과목번호) 모두에 종속된 학점 애트리뷰트는 완전 함수적 종속성을 띄고 있지만, 기본 키 쌍 중 학번 애트리뷰트가 이름, 이메일을 결정하고(부분 함수적 종속성), 이메일이 학번과 이름을 결정하고 있으며(이행적 함수적 종속성) , 이름이 학번을 결정하고 있다(부분 함수적 종속성). 릴레이션 분해를 통해 부분 함수적 종속성과 이행적 함수적..
릴레이션 분해 하나의 릴레이션을 두 개 이상의 릴레이션으로 나누는 것으로, 릴레이션의 분해는 필요한 필요한 경우에는 분해된 릴레이션들로부터 원래의 릴레이션을 다시 구할 수 있음을 보장해야 한다는 원칙을 기반으로 한다. 릴레이션 분해 후의 잠재적인 문제 릴레이션이 분해되기 전에는 조인이 필요 없는 질의가 분해 후에는 조인을 필요로 하는 질의로 바뀔 수 있다. 즉, 분해를 했을 때 성능상에 문제가 있는지(테이블 수 증가에 따른 성능 저하) 체크하고 분해를 결정해야 한다. 분해를 잘못하면 두 개의 릴레이션으로부터 얻을 수 있는 정보가 원래의 릴레이션이 나타내던 정보보다 적을 수도 있다. 즉, 정보의 손실을 의미하며 이런 경우에는 분해된 릴레이션들을 사용하여 원래 릴레이션을 재구성하지 못할 수도 있다. 무손실 ..
릴레이션 정규화(Normalization) 정규화의 정의는 다음과 같다. 원래의 릴레이션을 무손실 분해함으로써 중복과 갱신 이상을 최소화하여 일관성과 정확성을 유지하는 과정으로, 주어진 릴레이션 스키마를 함수적 종속성과 기본 키를 기반으로 분석한다. 릴레이션 정규화가 필요한 이유는 다음과 같다. 부주의한 데이터베이스 설계로 인해, 제어할 수 없는 데이터 중복을 야기하여 여러 가지 갱신 이상(update anomaly)을 유발함. 정규화에 대해 자세히 설명하기 전, 갱신 이상에 대한 개념을 숙지할 필요가 있다. 갱신 이상(Update Anomaly) 데이터베이스의 데이터를 수정, 삽입, 삭제하는 과정에서 발생하는 문제로, 각각 수정 이상, 삽입 이상, 삭제 이상이 존재한다. 수정 이상(modificatio..
(개념적 설계 단계) 데이터베이스 설계 사례에 알고리즘 적용 아래는 개념적 설계 단계의 산출물인 개념 스키마 예시이다. 해당 개념 스키마 예시를 이용해 논리적 설계를 진행하여보자. 1단계 : 정규 엔티티 타입과 단일 값 애트리뷰트 정규(강한) 엔티티 타입과 해당 엔티티 타입의 각 단일 속성들을 릴레이션으로 사상한다. EMPLOYEE 엔티티 타입의 복합 애트리뷰트인 ADDRESS 애트리뷰트 대신, 해당 애트리뷰트를 구성하는 City, Ku, Dong 애트리뷰트 각각을 사상한다. 또한 각 엔티티 타입의 기본 키는 릴레이션의 기본 키로 그대로 사상한다. EMPLOYEE(Empno, Empname, Title, City, Ku, Dong, Salary) PROJECT(Projno, Projname, Budget..
논리적 설계 단계에서는 ER 스키마를 관계 데이터 모델의 릴레이션들로 사상한다. ER 스키마를 관계 모델의 릴레이션으로 사상 ER 스키마에는 엔티티 타입과 관계 타입이 존재하지만, 관계 데이터베이스에는 엔티티 타입과 관계 타입을 구분하지 않고 릴레이션만 존재한다. ER 모델을 릴레이션들로 사상하는 과정에는 총 7단계로 이루어져 있다. 단계 사상할 대상 알고리즘 구분 1단계 엔티티 타입과 단일 값 애트리뷰트 정규(강한) 엔티티 타입 2단계 약한 엔티티 타입 3단계 관계 타입 2진 1:1 관계 타입 4단계 2진 1:N 관계 타입 5단계 2진 N:M 관계 타입 6단계 N진 관계 타입 7단계 다치 애트리뷰트 다중 값 애트리뷰트 1단계 : 정규 엔티티 타입과 단일 값 애트리뷰트 ER 스키마의 각 정규 엔티티 타입..
2023년 10월 27일 플로이드-워셜(Floyd-Warshall) 플로이드-워셜 알고리즘이란, 모든 최단 경로를 구하는 알고리즘이다. 다익스트라 알고리즘은 하나의 정점에서 다른 모든 정점까지의 최단 거리를 구하는 알고리즘이라면, 플로이드-워셜 알고리즘은 한 번의 실행으로 모든 정점 간의 최단 거리를 구할 수 있다는 차이로 구분할 수 있다. 또한 음수 가중치가 존재하는 가중치 그래프에서는 적용할 수 없는 다익스트라 알고리즘과는 다르게, 플로이드-워셜 알고리즘은 음수 가중치가 존재하는 가중치 그래프에서도 활용할 수 있다. 접근 방법 사전 준비 플로이드-워셜 알고리즘을 적용하기 위해선, 가중치 그래프가 존재해야 한다. 임의의 가중치 그래프를 예시로 들어보겠다. 정점은 1~5번까지 총 5개의 정점이 존재하고,..
지적 및 질문은 언제나 환영입니다 ! 2023년 10월 24일 문제 링크 : 프로그래머스 - 조건에 맞는 도서 리스트 출력하기 문제 설명 다음은 어느 한 서점에서 판매중인 도서들의 도서 정보(BOOK) 테이블입니다. BOOK 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다. 문제 BOOK 테이블에서 2021년에 출판된 '인문' 카테고리에 속하는 도서 리스트를 찾아서 도서 ID(BOOK_ID), 출판일(PUBLISHED_DATE)을 출력하는 SQL문을 작성해주세요. 결과는 출판일을 기준으로 오름차순 정렬해주세요. 입력 예시 출력 예시 SQL을 실행하면 다음과 같이 출력되어야 한다. TABLE 생성 CREATE TABLE BOOK( BOOK_ID NUMBER NOT NULL, CAT..
다음은 가상의 기업에서 볼 수 있는 요구사항에 관한 내용이다. 데이터베이스 설계 요구사항 기업에는 다수의 사원들이 재직한다. 각 사원에 대해서 사원번호(고유함), 이름, 직책, 급여, 주소를 저장한다. 주소는 시, 구, 동으로 세분하여 나타낸다. 각 사원은 0명 이상의 부양가족을 가질 수 있다. 한 부양가족은 두 명 이상의 사원에게 속하지 않는다. 각 부양가족에 대해서 부양가족의 이름과 성별을 저장한다. 회사는 여러 개의 프로젝트들을 진행한다. 각 프로젝트에 대해서 프로젝트번호(고유함), 이름, 예산, 프로젝트가 진행되는 위치를 나타낸다. 한 프로젝트는 여러 위치에서 진행될 수 있다. 각 프로젝트마다 여러 명의 사원들이 일을 한다. 각 사원은 여러 프로젝트에서 근무할 수 있다. 각 사원이 해당 프로젝트에..