728x90

- 프로그래밍 언어의 데이터형(스키마)과 값(인스턴스)의 개념과 비슷함

 

1. 데이터 정의 언어 (DDL) : 스키마(Schema)

데이터베이스의 전체적인 구조

- : 데이터베이스는 고객 및 계좌 집합에 대한 정보와 그들 사이의 관계로 구성됨

- 프로그램의 변수 선언(형 정의)와 유사

- 물리적 스키마(Physical schema) : 물리적 단계에서 데이터베이스 설계 기술

- 논리적 스키마(Logical schema) : 논리적 단계에서 데이터베이스 설계 기술

- 서브 스키마(Subschema) : 뷰 단계의 스키마

 

- 데이터베이스 스키마 구현상의 세부 사항을 정의

- 릴레이션의 집합과 각 릴레이션에 대한 정보 명시

- 각 릴레이션의 스키마

- 각 속성들과 관련된 값들의 타입

- 무결성 제약조건

- 각 릴레이션에서 유지하여야 할 인덱스들의 집합

- 각 릴레이션의 보안과 권한 정보

- 각 릴레이션의 디스크에서의 물리적인 저장 구조

 

# create 명령어

create table instructor (

                                  ID               char(5),

                                  name           varchar(20),

                                  dept_name    varchar(20),

                                  salary           numeric(8,2) )

 

- DDL 컴파일러는 데이터 사전에 저장된 테이블 템플릿 집합을 생성함

- 데이터 사전은 메타데이터(데이터를 위한 데이터)를 포함함

- 데이터베이스 스키마

- 주장

- 권한 : 읽기 권한, 삽입 권한, 갱신 권한, 삭제 권한

 

# cascade (defaulton delete no action)

  create table course ( dept_name varchar(20),

                                 foreign key (dept_name) references department

                                 on delete cascade

                                 on update cascade, . . . )

cascade의 작업: set null, set default, restrict(참조되어지는 row를 삭제 못함) no action

 

# 무결성 제약조건

- Primary key (ID는 강사를 고유하게 식별함)

- 참조 무결성 (SQL 참조 제약조건) 존재하지 않는 사실은 참조하지 않음

  예) 모든 instructor 튜플의 dept_name 값은 department 릴레이션에 나타나야 함

- not null

- primary key (A1, ..., An ) : 널 값 갖지 않고 유일

- foreign key (Am, ..., An ) references s

- 데이터베이스의 손상 방지

- 교수 이름은 null 이 될 수 없음

- 서로 다른 교수가 같은 ID를 가질 수 없음

- course 릴레이션에서 모든 학과이름은 department 릴레이션의 학과이름과 일치해야 함

- 학과의 예산은 $0.00보다 항상 커야 함

 

개체무결성 존재하는 사실은 유일하게 식별 (주키)

 

# drop 명령어

- 릴레이션 제거. 존재 자체

- drop table course;

 

# alter table

- alter table r add A D : 존재하는 릴레이션에 속성 추가

  r은 릴레이션 이름, A는 추가될 속성의 이름, D는 그 속성의 도메인

  릴레이션의 모든 투플들에 대해서 새로운 속성을 위한 값으로 null이 할당됨

 

- alter table r drop A : 릴레이션에서 속성 제거

  r은 이미 존재하는 릴레이션의 이름, A는 속성의 이름

  많은 데이터베이스 시스템은 속성의 제거는 지원하지 않음

 

2. 데이터 조작 언어 (DML) : 인스턴스(Instance)

특정한 순간에 데이터베이스에 저장되어 있는 정보의 모임

- 변수에 저장된 값과 유사, 실체가 만들어지는 것

- 적절한 데이터 모델로 구성된 제이터를 접근하거나 조작할 수 있도록 하는 언어

- DML 은 질의어

 

# 두 가지의 형태의 DML

1) 절차식(Procedural) DML

- 어떤 데이터가 필요하며 그 데이터를 어떻게 구할지 지정할 것을 요구함

2) 선언적(Declarative) DML(비절차식(nonprocedural))

- 필요한 데이터를 어떻게 구할지 명시할 필요 없이, 어떠한 데이터가 필요한지 지정할 것을 요구함

- SQL 은 가장 널리 쓰이고 있는 질의어

 

- select, insert, update, delete 명령어

 

# 응용 프로그램에서의 데이터베이스 접근

- 호스트 프로그램 안에 DML을 내장하기 위한 내장형 SQL, 호스트 언어 문법의 확장(DML 선컴파일러가 DML문을 호스트 언어의 프로시저 호출로 바꾸어 줌)

- DML과 DDL 문을 데이터베이스에 보내기 위한 응용 프로그램 인터페이스 제공(API : ODBC-C언어/JDBC-Java)

 

# 릴레이션 스키마와 인스턴스

- A1, A2, , An : 속성

- R(A1, A2, , An ) : 릴레이션 스키마

  예: instructor(ID, name, dept_name, salary)

- D1, D2, . Dn 집합 릴레이션 r D1 x D2 x x Dn 의 하위 집합

- 릴레이션은 각 에 대한 (a1, a2, , an) n-투플의 집합

- 릴레이션의 현재 값(릴레이션 인스턴스)은 테이블에 의해 변경됨

- r 의 요소 t 은 테이블에 행으로 표시되는 투플

- 순서 자체는 의미가 없음. 각각의 row를 집합의 원소로 봄

 

어떤 강좌 담당 릴레이션 - teaches(ID, course_id, sec_id, semester, year)

교수 릴레이션 instructor(ID, name, dept_name, salary)

학과 릴레이션 - department(dept_name, building, budget)

과목 릴레이션 course(course_id, title, dept_name, credits)

강좌 릴레이션 - section(course_id, sec_id, semester, year, building, room_number, time_slot_id)

선수 과목 prereq(course_id, prereq_id)

교실 classroom(building, room_number, capacity)

학생 student(ID, name, dept_name, tot_cred)

이수 takes(ID, course_id, sec_id, semester, year, grade)

지도 advisor(s_ID, i_ID)

시간표 time_slot(time_slot_id, day, start_hr, start_min, end_hr, end_min)

반응형

'전공 공부 > 데이터베이스시스템' 카테고리의 다른 글

저장 장치 관리  (0) 2020.12.22
데이터베이스 설계  (0) 2020.12.22
데이터 모델  (0) 2020.12.21
데이터의 추상화  (0) 2020.12.21
데이터베이스시스템이란 ?  (2) 2020.12.21
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기