Computer Science/Database, SQL 23

[HUFS/데이터베이스] #7 관계 해석

DB 내부에서 절차적인 관계 대수로 변환하기 전, 비절차적 질의를 관계 해석이라고 한다 * 이는 실행 결과가 반드시 참이나 거짓인 Predicate calculus에 기반을 두고 있다 비절차적(non-procedure) -> How X What O ~ 원하는 정보가 무엇인지만 선언 튜플 관계 해석 튜플/범위 변수인 t를 기준으로 범위식 R(t)는 튜플 t가 가질 수 있는 릴레이션의 범위를 뜻한다 튜플 t가 나타내는 임의의 attribute A의 값은 t.A 또는 t[A]로 나타낸다 ex) STUDENT(s), s.Sno ~ STUDENT라는 릴레이션에서 튜플 s와 s의 Sno라는 attribute값 해당 관계들로 원하는 조건(=결과)을 기술하는 튜플 해석식을 표현할 수 있는데,, 더 이상 분해가 되지 않..

[HUFS/데이터베이스] #6 관계 대수

관계형데이터베이스는 비절차적 질의를 절차적 언어로 변환하는 작업을 수행한다 즉, DB가 실질적으로 다루는 언어는 절차적 언어인 것이다 관계 대수(Relational Algebra) = 절차적 언어 비절차적 질의는 관계 해석(relational calculus)이라고 한다 * 두 방법은 표현과 기능면에서 동등하기 때문에 DB에 비절차적 질의를 사용한다 DB의 데이터인 Relation(tuple의 집합)이 관계 대수의 피연산자이며 다양한 연산이 가능하다 일반 집한 연산자 순수 관계 연산자 SELECT 연산 * 선택되는 tuple의 비율을 선택도(selectivity)라고 하는데 이 경우 3/5이니까 60%다 PROJECT 연산 DIVISION 연산 RENAME 연산 중간 처리 결과 relation이나 att..

[HUFS/데이터베이스] #5 무결성 제약

관계형 데이터베이스(Relational Database) 관계형 데이터베이스는 Relation들의 집합을 테이블 형태로 표현한 것인데,, 관계형 데이터베이스의 Schema는 Relation Schema와 무결성 제약조건으로 구성된다! 데이터베이스 키(key) 여기서 키(key)는 각 tuple을 유일하게 식별할 수 있는 attribute들의 집합이다 유일성: 각 tuple에서 해당 attribute들의 집합이 유일한가? 최소성: 해당 attribute의 집합이 각 tuple을 식별하는데 필요한 값들만 포함되었는가? 유일성과 최소성을 만족한다면 후보 키(candidate key) 유일성은 만족하지만 최소성을 만족하지 않는다면 슈퍼 키(super key) 후보 key 중에서 DB 설계자가 지정한 key를 기..

[HUFS/데이터베이스] #4 관계 데이터 모델

관계 데이터 모델 (relational data model) 계층형/네트워크형 DB와 달리 관계형 DB를 사용하면서 비절차적 질의가 가능해짐 관계형 데이터 모델은 집합(set)과 릴레이션(relation)에 기반을 두고 있다 사용자는 이를 테이블의 형태로 생각하는데,, 즉, 테이블과 달리 relation의 tuple은 중복이 허용되지 않으며 attribute의 순서에 의미가 없다 관계형 데이터 베이스는 모든 데이터를 이러한 relation의 형태로 저장한다 이 때, relation의 attribute가 취할 수 있는 값들의 집합을 도메인(domain)이라고 한다 * attribute와 domain의 이름이 같을 수도 있다 스키마(Schema)와 인스턴스(Instance) 이러한 개요를 Relation S..

[HUFS/데이터베이스] #3 데이터베이스 시스템의 구성

3단계 데이터베이스 DB = 개체(entitiy)와 관계(relationship) + 제약조건(constraint) 이러한 구조를 스키마(schema)라고 부른다 내부(internal) 스키마: 데이터베이스의 디스크에 실제로 정의되는 스키마 / 저장 장치 개념(conceptual) 스키마: 데이터 베이스의 구조를 개념적으로 정의한 것 / 범 기관적 외부(external) 스키마: 내부 스키마를 외부에서 각각 다른 형태로 보는 것 / 사용자 DB에서 사상 구조 및 스키마가 저장되는 영역을 카탈로그 or 데이터 디렉토리라고 한다 모든 객체에 대한 정의 및 명세에 대한 정보를 수록하는 DB 관리자 도구라고 볼 수 있다 * 메타 데이터: 데이터의 분류 및 속성을 설명하는 카탈로그의 데이터 DBMS DBMS의 수..

[HUFS/데이터베이스] #2 데이터베이스 관리 시스템

데이터베이스 관리 시스템(Database Management System) DBMS 이전의 데이터들은 OS(운영체제)가 지원하는 파일 중심 데이터 처리 시스템을 따랐다 각각의 물리적 구조가 달라 응용 프로그램들이 데이터를 공유하지 못하는 문제 -> 종속성 각 응용프로그램이 동시에 데이터를 변경하지 못하는 문제 -> 중복성 데이터베이스의 필수 기능 정의 기능 하나의 저장 구조로 여러 사용자의 요구를 지원하도록 데이터를 조직 데이터의 논리적(정보)/물리적(용량) 구조를 명세 물리적/논리적 사상(mapping)을 명세 조작 기능 사용자와 DB 사이의 인터페이스를 위한 수단 체계적 접근 및 조작 (검색/갱신/삽입/삭제) 데이터 언어로 원하는 연산의 명세 및 효율적 처리 제어 기능 데이터의 정확성과 보안성을 유지..

[HUFS/데이터베이스] #1 데이터베이스 환경

임의의 위치의 데이터를 읽을 수 있는 하드디스크가 발명되면서 데이터베이스라는 개념도 등장했다 이제 본격적으로 데이터베이스 환경에 대해서 알아보자! 정보 처리 시스템 * 처리기는 데이터베이스 혹은 정보 시스템이 가지는 응용 프로그램으로 구성된다 보통 정보 시스템에 질의(쿼리, query)를 던지면 연산을 통해 결과(정보)가 산출된다 정보 시스템은 기획, 운영, 통제에 도움을 주는 경영 정보 시스템, 의사 결정에 도움을 주는 의사 결정 지원 시스템 등이 있는데, 이는 분석 가능한 형태의 정보들이 저장된 중앙 저장소인 데이터 웨어하우스(DW), 대규모 데이터에서 통계적 규칙이나 패턴을 찾아내는 데이터 마이닝, 조직내의 인적 자원이 축적한 개별적 지식을 체계화하여 공유하는 지식관리 시스템을 포함한다 데이터 처리..

[Codeit/MySQL] #6 서브쿼리와 뷰를 활용한 데이터 분석

서브쿼리(SubQuery) 서브쿼리: SQL문 안에 ‘부품’처럼 들어가는 SELECT문 서브쿼리를 포함하는 전체 SQL문은 outer query(외부 쿼리), 서브쿼리는 inner query(내부 쿼리) SELECT절의 서브쿼리는 보통 새로운 column 조회를 추가하는 경우다! WHERE절의 서브쿼리도 활용해 조건을 붙이자 IN으로 컬럼의 여러 row값을 return하는 조건도 가능하다! ANY와 ALL을 활용해도 좋다! ANY(=SOME): 서브쿼리 row값 중 단 하나의 값이라도 만족하면 TRUE ALL: 서브쿼리 row값 모두 만족해야 TRUE FROM절의 서브쿼리는 테이블 형태의 결과를 return한다 (활용성 높다!) 전체 SQL문을 서브쿼리로 만든 derived table은 전체에 alias..

[Codeit/MySQL] #5 테이블 조인을 통한 데이터 분석

테이블 간의 연결고리 우선 테이블 column간의 연관성을 파악하는 것이 중요하다 ~stock (자식)테이블의 item_id가 item (부모)테이블의 id 컬럼을 참조하는 경우 이렇게 다른 테이블의 row를 식별해주는 컬럼을 Foreign Key(외래키)라고 한다 파악이 되었다면 Foreign Key를 설정해보자 table의 Setting에서 Foreign Keys를 선택하고 Foreign Key Name을 설정한다 item을 참조하는 stock의 fk이므로 ‘fk_stock_item’으로 지어준다 다음으로 Referenced Table을 클릭해 참조되는 Table을 선택하고 우측에서 컬럼들을 연결 짓는다 Apply! 이런 식으로 외래키 지정을 해 두면 이상한 row가 추가되는 것을 방지할 수 있다! ..

[Codeit/MySQL] #4 데이터 분석 입문

집계 함수 ~ 컬럼의 여러 row들을 대상으로 원하는 특징 값을 구해준다 (동시에 실행) COUNT( ) -> row의 개수 구하기 SELECT COUNT(*) FROM copang_main.member; ~ 모든 row의 개수를 구함 SELECT COUNT(email) FROM copang_main.member; ~ null을 제외하고 해당 특성을 가진 row의 개수를 구함 MAX( ) -> 해당 속성 중 가장 큰 값 찾기 SELECT MAX(height) FROM copang_main.member; MIN( ) -> 해당 속성 중 가장 작은 값 찾기 SELECT MIN(weight) FROM copang_main.member; AVG( ) -> 해당 속성값의 평균 구하기 SELECT AVG(weigh..