컴퓨터 사이언스/Database

컴퓨터 사이언스/Database

DB Index

index가 중요한 이유 예를 들어 다음의 select query 발생시, first_name에 index가 걸려있다면 full scan보다 더 빨리 찾을 수 있다. full scan : O(N) B tree based Index : O(log N) SELECT * FROM customer WHERE first_name = 'Minsoo'; 즉, index를 사용하는 이유는 다음과 같다. 특정 조건을 만족하는 튜플(들)을 빠르게 조회하기 위해서이다. 빠르게 정렬(order by)하거나 그룹핑(group by)하기 위해서이다. index 거는 법 이름과 같이 중복을 허용하는 index를 만드는 방법은 다음과 같다. CREATE INDEX player_name_idx ON player (name); SELE..

컴퓨터 사이언스/Database

왜 DB Index로 B tree 계열이 사용되는가?

B tree 계열에는 B+ tree, B* tree가 있는데, 시간복잡도를 계산했을때 average case와 worst case 모두 조회, 삽입, 삭제에서 O(logN)이 나온다. 그런데 self-balancing BST의 종류인 AVL tree와 Red-Black tree의 average case와 worst case 모두 조회, 삽입, 삭제에서 시간복잡도 O(logN)이 나온다. 그렇다면 이제 왜 DB index로 B tree 계열이 사용되는지 알아보자. computer system CPU : 프로그램의 코드가 실제로 실행되는 곳 Main memory(RAM) : 실행중인 프로그램의 코드들과 코드 실행에 필요한 혹은 그 결과로 나온 데이터들이 상주하는 곳 Secondary Storage(SSS o..

컴퓨터 사이언스/Database

MongDB 사용법

설치하기 Homebrew 설치하기 : Homebrew는 다운로드 패키지를 관리할 수 있는 툴로 brew install 프로그램이름을 입력하면 프로그램을 자동으로 다운로드 받아 설치해준다. 터미널 창에 아래 코드를 복사, 붙여넣기 하고 엔터를 입력해주면 된다. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" mongoDB 설치하기 brew tap mongodb/brew brew install mongodb-community mongoDB 실행하기 brew services start mongodb-community Studio 3T MongoDB를 그래픽으로 볼 수 있게 도와주는 G..

컴퓨터 사이언스/Database

DB의 종류

Database는 크게 두 가지 종류로 나뉜다. RDBMS(SQL) 행/열의 생김새가 정해진 액셀에 데이터를 저장하는 것과 유사하다. 데이터 50만 개가 적재된 상태에서 갑자기 중간에 열을 하나 더하기는 어렵지만, 정형화되어 있는만큼 데이터가 일관적이고, 분석에 용이하다. MySQL, MSSQL이 여기에 속한다. NoSQL 딕셔너리 형태로 데이터를 저장해두는 DB로 데이터 하나하나마다 같은 필드 값들을 가질 필요가 없어 자유로운 형태의 데이터 적재에 유리한 대신에 일관성이 부족할 수 있다. MongoDB가 이에 속한다. MongoDB 다양한 플랫폼에서 사용할 수 있는 NoSQL 타입의 데이터베이스 프로그램으로 JSON과 비슷한 형태로 자료를 정리한다. MongoDB의 자료는 각각의 딕셔너리인 도규먼트가 ..

컴퓨터 사이언스/Database

데이터베이스 설계 실습 - 스타벅스 홈페이지

스타벅스 홈페이지 1. 요구사항 분석 2. 개념적 설계

컴퓨터 사이언스/Database

데이터베이스 설계 실습 - 맥도날드 키오스크

🗒️ 요구사항 명세서 메뉴를 생성/조회/수정/삭제할 수 있어야 한다. 메뉴는 하나 이상의 메뉴그룹과 매핑될 수 있다. 메뉴마다 가격과 칼로리가 존재한다. 메뉴마다 재료를 추가하거나 변경할 수 있다. 메뉴는 판매가능한 시간(모닝, 런치)이 존재한다. 세트메뉴를 생성/조회/수정/삭제할 수 있어야 한다. 세트메뉴는 기본적으로 햄버거 + 감자튀김 + 음료의 조합이다. 대신, 콤보(햄버거 + 음료)처럼 다양한 조합이 나올 수 있다. 햄버거를 제외한 나머지 메뉴는 각 그룹 내에서 교환할 수 있다. 1. 요구사항 분석 2. 개념적 모델링 인용 https://yeongunheo.tistory.com/entry/DB-%EC%84%A4%EA%B3%84%ED%95%98%EB%8A%94-%EB%B2%95-feat-%EB%8D..

컴퓨터 사이언스/Database

정규화

하나의 릴레이션에 관련없는 속성이 들어가지 않게 하기위해서 속성들의 친밀도를 정확히 판단하고, 이 기준에 따라 릴레이션을 구성하는 방법을 정규화라고 한다. 또는 데이베이스를 잘못 설계하면 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입, 수정, 삭제 연산을 수행할 때, 부작용이 발생할 수 있는데 이러 한 부작용을 이상현상이라고 하고, 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해나가는 과정이 정규화이다. 이상 현상의 종류 삽입 이상: 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 갱신 이상: 중복 tuple 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제 삭제 이상: tuple을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제 정규화의..

컴퓨터 사이언스/Database

데이터베이스 설계

논리적 데이터 모델의 개념과 특성 선택한 DBMS에 따라 사용자 입장에서 E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적인 구조를 논리적 데이터 모델이라고 한다. 즉, 논리적 데이터 모델은 논리적 데이터 모델링의 결과물이고, 사용자가 생각하는 데이터베이스의 모습 도는 구조이다. 그리고 논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조가 바로 데이터베이스 스키마이다. 데이터베이스에 있는 데이터 간의 관계를 표현하는 방법에 따라 다양한 논리적 데이터 모델이 존재한다. 일반적으로 누구나 쉽게 이해할 수 있는 데이터 구조를 가지고, 데이터의 검색, 삽입, 삭제, 수정 등의 연산을 제공하는 논리적 데이터 모델이 관계 데이터 모델이다. 데이터베이스 설계 개념 관계 데이터 ..

컴퓨터 사이언스/Database

키의 종류

릴레이션에 포함된 tuple들을 유일한게 구별해주는 역할은 속성 또는 속성들의 집합인 키가 담당한다. 키는 관계 데이터 모델에서 중요한 제약조건을 정의한다. 1. 슈퍼키 슈퍼키는 유일성의 특성을 만족하는 속성 또는 속성들의 집합이다. 유일성은 키가 갖추어야 하는 기본 특성으로, 하나의 릴레이션에서 키로 지정된 속성 값은 tuple마다 달라야 하다는 의미이다. 하지만 (고객아이디, 고객이름)과 같이 슈퍼키 중에는 tuple 하나를 유일하게 구별하기 위해서 또는 2개의 tuple이 서로 다름을 판단하기 위해 불필요한 속성 값까지 확인하는 비효율적인 작업이 필요한 경우도 있다. 이때, 꼭 필요한 속성의 집합만으로 tuple을 유일하게 구별할 수 있도록 하는 또 다른 키의 개념이 필요한데, 이 것이 후보키이다...

컴퓨터 사이언스/Database

Join 시, on과 where의 차이

on : join 전에 조건을 필터링한다. where : join 후에 조건을 필터링한다. 공통점 inner join 을 할 때는 차이가 없다. 차이점 outer join 시, on으로 조건을 적용시켜야 원하는 결과를 얻을 수 있다. 여기서 원하는 결과는 outer table에 null 값들을 포함한 행들이 join의 결과값으로 반환된 것을 말한다. on 명령어 select m.id, m.username, t.id, t.name from member m left join team t on m.team_id = t.id AND t.name = "teamA"; where 명령어 select m.id, m.username, t.id, t.name from member m left join team t on m..

kimjingyu
'컴퓨터 사이언스/Database' 카테고리의 글 목록