반응형

CS/DB 24

[DB] 물리적 데이터베이스 설계

물리적 데이터베이스 설계 논리적인 설계의 데이터 구조를 보조 기억장치상의 화일(물리적인 데이터 모델)로 사상한다. 예상 빈도를 포함하여 데이터베이스 질의와 트랜잭션을 구분한다. 데이터에 대한 효율적인 접근을 제공하기 위하여 저장 구조와 접근방법들을 다룬다. 특정 DBMS의 특성을 고려하여 진행된다. 질의를 효율적으로 지원하기 위해서 인덱스 구조를 적절히 사용한다. 보조 기억 장치 사용자가 원하는 데이터를 검색하기 위해서 DBMS는 디스크 상의 데이터베이스로부터 사용자가 원하는 데이터를 포함하고 있는 블록을 읽어서 주기억 장치로 가져온다. 데이터가 변경된 경우에는 블록들을 디스크에 다시 기록한다. 블록 크기는 512바이트부터 수 킬로바이트까지 다양하다. (전형적인 블록 크기는 4,096바이트) 각 화일은 ..

CS/DB 2022.05.16

[DB] ER 스키마를 관계 모델의 릴레이션으로 사상하기

ER 스키마를 관계 모델 릴레이션으로 사상하기 논리적 설계 단계에서 ER 스키마를 관계 데이터 모델의 릴레이션들로 사상한다. ER 스키마에는 엔티티 타입과 관계 타입이 존재하지만 관계 데이터베이스에는 엔티티 타입과 관계 타입을 구분하지 않는다. 릴레이션으로 사상할 대상이 ER 스키마에서 엔티티 타입인지 또는 관계 타입인지, 엔티티 타입이라면 정규 엔티티 타입인지 또는 약한 엔티티 타입인지, 관계 타입이라면 2진 관계인지, 3진 이상의 관계인지 등에 따라 사상하는 방법이 달라짐 ER 모델을 릴레이션들로 사상하는 7개의 알고리즘 단계가 있음. 단계 1. 정규 엔티티 타입과 단일 값 애트리뷰트 엔티티 타입 E에 대해 릴레이션 R을 생성함 E에 있던 단순 애트리뷰트들은 릴레이션 R에 모두 포함시킴 E에서 복합 ..

CS/DB 2022.05.15

[DB] ER 모델

ER 모델 데이터베이스 설계를 용이하게 하기 위해서 P.P. Chen이 1976년에 제안 현재는 EER(Enhanced Entity Relationship) 모델이 데이터베이스 설계 과정에 널리 사용됨 실세계를 엔티티, 애트리뷰트, 엔티티들 간의 관계로 표현함 기본적으로 엔티티, 관계, 애트리뷰트가 있고, 기타로는 카디날리티 비율, 참여 제약조건 등이 있음 적은 노력으로 쉽게 배울 수 있고, 전문가가 아니어도 이해하기 쉬우며, 자연어보다 정형적이고, 구현에 독립적임 엔티티 엔티티 : 사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체 사원처럼 실체가 있는 것도 있고, 생각이나 개념같이 추상적인 것도 있음 엔티티 타입 엔티티들은 엔티티 타입(또는 엔티티 집합)들..

CS/DB 2022.05.14

[DB] 데이터베이스 설계 개요

개념적 데이터베이스 설계 실세계의 엔티티, 관계, 프로세스, 무결성 제약조건 등을 나타내는 추상화 모델을 구축 엔티티는 서로 구분이 되면서 조직체에서 데이터베이스에 나타내려는 객체를 의미 관계는 두 개 이상의 엔티티들 간의 연관을 나타냄 프로세스는 관련된 활동을 나타냄 무결성 제약조건은 데이터의 정확성과 비즈니스 규칙을 의미 데이터베이스 설계 개요 한 조직체의 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정 모든 주요 응용과 사용자들이 요구하는 데이터 및 데이터 간의 관계를 표현 DB 개발은 일반적으로 프로젝트의 라이프 사이클을 따름 데이터베이스 설계 주요 단계 요구사항 분석, 개념적 설계, DBMS 선정, 논리적 설계, 스키마 정제. 물리적 설계, 튜닝 등 여러 작업으로 이뤄짐 데이터베이스 설..

CS/DB 2022.05.13

[DB] SQL 사용법(2)

선택되는 행 제한 where 절을 사용한다. BETWEEN, IN, LIKE =, , >, 12000; 사원번호가 176인 사원의 이름과 부서 번호를 표시 select last_name, department_id from hr.employees where department_id = 176; 결과 없음 (사원 번호가 176인 튜플이 없음) 급여가 $5,000에서 $12,000 사이에 포함되지 않는 모든 사원의 이름과 급여를 표시 select last_name, salary from hr.employees where salary NOT Between 12000 AND 5000; 2007년 2월 20일과 2007년 5월 1일 사이에 입사한 사원의 이름, 업무 ID 및 시작일을 표시하되, 시작일을 기준으로 오..

CS/DB 2022.04.26

[DB] SQL 사용법(1)

SELECT 문 SELECT 뒤에 표시할 대상 열을 FROM 뒤에 열을 포함하는 테이블을 지정한다. Alias 열 명을 AS를 통해 재정의할 수 있다. (AS는 생략가능) "string" 처럼 ""로 묶어주는 것이 좋다. (특수문자나 빈 칸, 대소문자 구별이 필요할 때 ""로 묶어주지 않으면 에러 발생) 리터럴 ||을 사용하고 사이에 들어갈 문자는 ''안에 넣어준다. 중복행 제거 DISTINCT 명렁어를 사용한다. 테이블 구조 표시 DESCRIBE 명령어를 사용한다. 실습 1. 다음 명령어의 오류는? SELECT employee_id, last_name, sal * 12 AS "ANNUAL SALARY" FROM employees; 로 바꿔주어야 한다. (콤마 누락, 곱셈 기호 잘못됨, 열 이름 재정의할..

CS/DB 2022.04.26

[DB] 관계 대수 예시

데이터베이스 스키마가 다음과 같을 때 a~g의 질의를 관계 대수식으로 표현할 것 CUSTOMER(CUSTOMER_ID, NAME, ADDRESS, PHONE) VIDEO(VIDEO_ID, TITLE, GENRE) RESERVED(CUSTOMER_ID, VIDEO_ID, DATE) a. 제목이 '반지의 제왕'인 비디오의 장르를 검색하라 b. 예약된 비디오의 ID를 검색하라 c. 예약되지 않은 비디오의 ID를 검색하라 d. 예약된 모든 비디오의 제목을 검색하라 e. 비디오를 예약한 고객의 이름을 검색하라 f. 장르가 '액션'인 비디오를 예약한 고객의 주소를 검색하라 e. 장르가 '다큐멘터리'인 비디오를 모두 예약한 고객의 이름을 검색하라 selection은 S, projection은 P로 나타낸다. a. P..

CS/DB 2022.04.26

[DB] 관계 대수

관계 대수 : 어떻게 질의를 실행할 것인지 명시하는 절차적 언어 관계 대수는 필수적인 연산자, 편의를 위해 유도된 연산자로 나눌 수 있다. 필수 연산자는 여기를 참조 [DB] 연산자 개요 데이터베이스에서 쓰이는 연산자들을 정리한 문서이다. 연산자는 필수연산자와 편의를 위해 유도된 연산자로 나뉜다. 필수연산자 셀렉션, 프로젝션, 합집합, 차집합, 카티션 곱 편의를 위 gamedoridori.tistory.com 다른 관계 연산자들은 필수적인 관계 연산자를 두 개 이상 조합하여 표현할 수 있음 임의의 질의어가 적어도 필수적인 관계 대수 연산자들만큼의 표현력을 갖고 있으면 관계적으로 완전하다고 함 아래는 편의를 위해 유도된 연산자임 조인 연산자 두 개의 릴레이션으로부터 연관된 튜플을 결합하는 연산자 세타 조인..

CS/DB 2022.04.26

[SQL] Table 생성 및 수정, 삭제

테이블 생성 dept라는 이름의 Table을 생성한다. dept의 애트리뷰트는 다음과 같다. Number 타입의 deptno VarChar2 타입의 dname VarChar2 타입의 loc describe를 통해 테이블의 정보를 확인할 수 있다. 테이블 생성 시에 적용할 수 있는 데이터 타입은 다음과 같다. 서브 쿼리를 사용하여 테이블을 만들 수도 있다. employees 테이블의 일부를 서브 쿼리를 사용하여 dept80이라는 새로운 테이블로 만든 예시이다. ALTER 명령어를 통해 테이블의 열을 추가, 수정, 삭제할 수 있다. ADD를 통해 새로운 컬럼을 추가할 수 있다. 추가되는 컬럼은 마지막 컬럼이 된다. MODIFY를 통해 컬럼을 수정할 수 있다. 데이터 타입, 크기, 기본값 등을 변경할 수 있다..

CS/DB 2022.04.25

[SQL] 내포된 SQL

내포된 SQL SQL이 호스트 언어의 완전한 표현력을 갖고 있지 않기 때문에 모든 질의를 SQL로 표현할 수 없음 또한 SQL은 조건문(IF), 반복문(WHILE), 입출력 등과 같은 동작, 사용자와의 상호 작용 등의 기능을 가지고 있지 않음 따라서 DB에 접근하는 부분은 SQL이 맡고 SQL에 없는 기능은 호스트 언어로 작성해야 함 SQL 컴파일 과정 편집기로 호스트 언어 안의 내포된 SQL을 가지는 프로그램을 작성한다. 이 프로그램을 전컴파일러(preprocessor)로 처리한다. 그러면 내포된 SQL이 호스트 언어와 함수 호출문으로 변환이 된다. 변환된 프로그램은 C, java 컴파일러 등에 의해 오브젝트 프로그램을 생성한다. 링커는 오브젝트 프로그램과 SQL 라이브러리를 링크를 해서 .exe 확장..

CS/DB 2022.04.24
반응형