[DB] 7. 데이터 모델링 7. 데이터 모델링 데이터 모델링: 추상화 과정을 통해 현실세계의 개념을 데이터베이스에 표현하는 과정. 현실세계 -> 개념적 모델링 -> 논리적 모델링 -> 데이터베이스 데이터 모델링의 관점에서 요구사항 수집 및 분석 설계 개념적 모델링: 핵심 Entity를 도출하여 ERD 작성. 논리적 모델링: 각 개념을 구체화(릴레이션 스키마), ERD-RDB 모델 매핑, 상세 속성 정의, 정규화... 물리적 모델링: DB개체 정의(CREATE TABLE), 테이블(도메인..등) 및 인덱스 등 설계 데이터베이스 구현 개념적 데이터 모델 E-R(개체-관계) 모델 (Diagram) 개체-사각형, 관계-마름모 속성-타원형으로 표현. 개체와 개체들 사이의 관계로 표현 논리적 데이터 모델 관계, 네트워크, 계층 데이터 모델 ..
[DB] 6. DDL 6. DDL DDL은 같은 명령을 사용. CREATE / DROP / ALTER CREATE : 데이터베이스 객체 생성 (대표적으로) 테이블을 생성한다. 스키마 내부에서 생성한다. 스키마내에서 이름이 중복된 객체가 존재하면 안 된다.CREATE TABLE 테이블명 ( 열이름 자료형 [DEFAULT 값 | NOT NULLL | UNIQUE | CHECK 체크조건], 열 정의2, 열 정의3, ..., [PRIMARY KEY (열1, ...)] [FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름)] [ON DELETE reference_option] [ON UPDATE reference_option] ); DROP : 데이터베이스 객체 삭제 데이터베이스 객체를 삭제한다. 객체의 스키마와 내..
[DB] 5. JOIN 5. Join 여러 테이블에 대한 조인 검색. Join? : 여러 개의 테이블을 연결하여 하나의 테이블로 만드는 과정(데이터를 검색하는 것) 조인 속성 : 조인 검색을 위해 테이블을 연결해주는 속성 연결하려는 테이블 간 조인 속성의 이름은 달라도 되지만, 도메인은 같아야 한다. 일반적으로 외래키를 조인 속성으로 이용 사용 (동등조인) -- CROSS JOIN SELECT * FROM table1, table2 WHERE table1.key1 AND table2.key2; WHERE 절은 ' AND '으로 구성, 해당 폼은 이제 잘 사용되지 않는 구식 형태 혹은, 외부조인과 폼을 통일시켜 다음과 같이 작성할 수 있다.SELECT * FROM table1 {INNER|LEFT|RIGHT|FUL..
[DB] 4. SQL SQL(Structured Query Language) -** RDB를 위한 표준 질의어, 비절차적 데이터 언어 유래 : IBM이 개발한 SEQUEL에서 유래, ANSI와 ISO에 의해 현재까지도 표준화 및 용어 통일. 방식 : 대화식 SQL : DBMS에 직접 접근해 질의를 작성 및 실행 삽입 SQL : 프로그래밍 언어로 작성된 응용 프로그램에 삽입 (MyBatis, Hibernate.. 등) SQL은 완전한 프로그래밍 언어가 아닌 data sublanguage로 분류 -> 데이터와 메타 데이터에 대해서만 생성하고 처리하는 문법을 가지고 있다. SQL은 클라이언트/서버 구조로 구성되어 있다. -> 분산형 구조로 클라이언트에서 질의(요청)를 하면 서버에서 그 질의를 받아 처리하고 응답을 돌려준다. SQL..
[DB] 3. 관계대수 이전.. 데이터 모델 = 데이터 구조, 연산, 제약조건 관계대수 : 관계형 DB에서 연산 담당 관계대수(relatinal algebra) : 릴레이션에서 원하는 결과를 얻기 위해 질의하는 방법을 기술한 언어 관계 데이터 연산 1. 관계대수(절차적) : 어떤 데이터를 찾기 위한 처리 절차를 명시, DBMS내 처리 언어로 사용 2. 관계해석(비절차적, 선언적) : 어떤 데이터를 찾는지 명시, SQL의 이론적 기반 * 카티전 프로덕트(X) : 데카르트 곱, 두 집합의 원소를 골라 순서쌍으로 나타낸다. 도메인(domain) : 카티전 프로덕트의 기초 집합(A, B)가 가질 수 있는 값의 범위 관계대수 순수 관계 연산자 : 관계 데이터 모델의 위해 고안 (셀렉트, 조인, 프로젝트, 개명, 디비전) - 셀렉트 : ..
[DB] 2.2 키(key) key = 릴레이션에서 투플들을 유일하게 '구별하는' 속성 또는 속성들의 집합 primary key = 기본키로써, 테이블에 반드시 존재 그 밖에 candidate key, alternate key, super key, foreign key 존재 키의 특성 유일성 : 투플을 구별 -> 모든 투플은 서로 다른 키 값을 가져야 한다. 최소성 : 꼭 필요한 최소한의 속성들로만 키를 구성함 => 릴레이션에서는 투플의 중복을 허용하지 않는다 => 투플 간 구분을 위해, 키는 반드시 다른 값을 가진다. 키는 릴레이션 간의 관계를 맺는데도 사용된다. => foreign key의 역할 1. super key : 유일성을 만족하는 속성 또는 속성들의 집합 2. candidat key : 유일성과 최소성을 만족하는 속성 ..
[DB] 2. 데이터 모델 DBMS의 역할 정보 시스템에서 파일시스템을 대체하여, 데이터의 중복을 방지하고, 독립성, 일관성, 무결성을 보장. 또한, 데이터 관리, 재난 복구, 동시성 제어 등의 기능을 갖는다. 데이터 모델링 : 현실 세계의 데이터를 -> 개념적 -> 논리적 모델링 단계를 거쳐 데이터베이스에 저장하는 구조로 표현하는 작업. 데이터 모델 : 데이터 모델링의 결과물을 표현하는 도구 개념적 데이터 모델 : E-R(Entity-Relation, 개체-관계) 모델로 나타낸다. 논리적 데이터 모델 : 관계 데이터 모델 데이터 모델의 구성 1. 연산, ex) CRUD.. 2. 데이터 구조, 데이터가 저장되는 형태 3. 제약조건, 데이터 간의 만족해야할 조건 1. 개념적 데이터 모델 : 현실 세계의 '중요 데이터를 추출'하는 작..
썸네일 [MySQL] 데이터베이스, DBMS 데이터 특성에 따른 분류 : 범주형 데이터(categorical data), 수치형 데이터(numerical data) 범주형 데이터 : 학년, 과목, 상품이름 등 연산이 불가능한 데이터. 질적 데이터라고도 한다. 순서가 없는 명목형(nominal)과 데이터 사이에 순서가 존재하는 순서형(ordinal) 데이터가 있다. 수치형 데이터 : 숫자로 표현되어, 계산이 가능한 데이터. 양적 데이터라고 한다. 셀 수 있는 이산(discrete), 셀 수 없고 측정이 가능한 연속(continuos) 데이터가 있다. 형태에 따른 분류 : 정형(structured), 반정형(semi-structured), 비정형(unstructured data) 데이터 정형 데이터 : 데이터의 형태(틀)이 정해져 있다. RDB의 테이..
[일상]뜻밖의 휴가 벌써 2주전 일요이었나. 새벽 코딩을 마치고 커밋을 올리고 자려고 하는 찰나, 들고있던 물병을 엎질렀다. 노트북은 침수됐고, 현장의 분위기는 침체됐다. 나 어떡하지. 이틀 후, 강남의 레노버 서비스 센터에 갔다. 찾아보니 레노버 정식 서비스센터는 강남밖에 없더라. 이틀 후 알려주겠다고 했다. 혼란스러운 상태로 본가로 돌아갔다. 마음이 싱숭생숭하다. 간만에 동네 서점에 갔다, 기다리던 연락을 받았다. 고치는 것보다 새로 사는게 더 싸단다. 눈물을 머금는다. 충격에 빠진 상태로, 새 노트북을 알아보기 시작한다. 여권도 새로 만들었는데, 이번 여행은 다 갔다. 새 노트북은 중고로 알아보기로 했다. 윈도우와 macos 사이에서 고민을 엄청했다. 며칠동안 당근을 둘러본 것 같다. 결국 맥북에어가 저렴하게 올라와 ..
썸네일 [일상] 최근 근황에 대해 협업을 위한 Git, GitHub 1강을 마지막으로 포스팅을 못 하고있다. 2학년 2학기. 복학하자마자 전공 4.5라는 보잘것없지만 기념비적인 성적을 올렸다. 방학을 맞이한 기념으로 자료구조와 알고리즘을 공부하고 있다. 모든 포스팅은 블로그가 아닌 GitHub TIL에 올리고있다. 자료구조를 빨리 끝내고 하고픈 것이 산더미같은데, 몸은 왜 따라주질 않는지 애석하기만 하다. 블로그 포스팅을 하고 싶은데, 막상 글로 정돈하는것이 부담스럽게 다가온다. 결론은 TIL과 블로그 포스팅, 둘 사이에서 아직 고민중이다. 올해들어 첫 포스팅이던가. 아무튼 23년, 나를 포함해 모두가 많이 발전하는, 그런 한 해가 되길 기원한다. + 아,, 알고리즘 스터디를 시작한지 2주차가 됐다. 2주전부터 백준을 풀기시작해 오늘 실..
썸네일 Template 과 Generic 그리고 C++ STL //template MyStack::MyStack() { tos = -1; } 1. 단순 함수 오버로딩 #include using namespace std; void myswap(int& a, int& b) { int tmp; tmp = a; a = b; b = tmp; } void myswap(double& a, double& b) { double tmp; tmp = a; a = b; b = tmp; } int main() { int a = 4, b = 5; myswap(a, b); cout
썸네일 클래스 분리 시, #include 문의 위치 C++ 공부를 하다 문득 궁금해졌다. 클래스 분리가 없는 자바와는 다르게, C++에서는 클래스를 .h 헤더파일과 .cpp 소스파일로 나누어 구현한다. 좀 더 정확하게 말하면 클래스를 정의부와 구현부로 나누어 작성하는 것이다. 보통 소스파일은 헤더파일을 include하여 메소드를 구현하게 되는데, 이 떄 궁금한게 생겼다. 외부 클래스나 라이브러리를 써야하는 상황이라면, 어느 곳에서 include하는게 맞을까? .cpp 파일에 쓰면 당연히 상관이 없고, .h 파일에 써도 어차피 헤더파이을 include 하기 때문에 정상적으로 작동한다. 앞서 몇 시간동안 공부를 하다보니 머리가 둔해져서 이렇다 할 결론이 안 나오더라. 결국 궁금해서 찾아보았다. 그렇게, 2009년에 나와 같은 질문이 올라온 것을 발견한다. 그..