3.2 관계데이터언어 0709 (1) 관계대수 0703 0705 0703 1) 관계대수정의 1 원하는정보와그정보를어떻게유도하는가를기술하는절차적인방법 0503 2 주어진관계로부터원하는관계를얻기위해연산자와연산규칙을제공하는언어 0503 3 릴레이션조작을위한연산의집합으로피연산자와결과가모두릴레이션이라는특성을가짐 2) 순수관계연산자 0305 관계데이터베이스에적용할수있도록특별히개발된관계연산자 1 디비전 (Division) 0705 X Y인 2개의 R에서 R(X) 와 S(Y) 가있을때 R의속성이 S의속성값을모두가가진튜플에서 S가가진속성을구하는연산자 표기 : R[ 속성r 속성s]S < 구입자 R> < 생산품 R> 번호 이름 구입품코드 1 박 A 1 박 B 2 김 A 2 김 B 3 정 C 생산품코드 A B 순수관계연산자종류오답 포크 (fork) 링크 (link) 구입자 [ 구입품코드 생산품코드 ] 생산품 번호 이름 1 박 2 김 2 프로젝션 (Projection) 0405 테이블에서특정속성에해당하는열을선택하는데사용되며결과로는 릴레이션의수직적부분집합에해당하는관계대수연산자 π기호사용 A unary operation that returns its argument relation, with certain attributes left out. Since a relation is a set, any duplicate rows are eliminated. ( 인수릴레이션에해당하는속성만반환하는단항연산이다. 릴레이션은집합이기때문에중복열은제거된다.) 0308 표기 : π ( 속성리스트 ) (R) < 성적 R> 이름 국어 영어 수학 총점 평균 박 95 80 80 255 85 김 70 90 80 240 80 정 100 100 100 300 100 성적 R에서 이름, 평균 51
PART 1 데이터베이스 π ( 이름, 평균 )( 성적 ) 이름 평균 박 85 김 80 정 100 3 조인 (Join) 공통된속성기준 2개의 R 하나로만듦 표기 : R 귀속성r = 귀속성s S < 성적 R> < 학적R> 학번 이름 영어 수학 총점 평균 학번 주소 123 영웅 90 80 170 85 123 서울 456 호걸 70 50 120 60 456 대구 성적 R과학적 R을학번기준합쳐라 성적 ( 학번 = 학번 ) 학점 학번 이름 영어 수학 총점 평균 주소 123 영웅 90 80 170 85 서울 456 호걸 70 50 120 60 대구 4 실렉션 (Selection) 9904 0203 0205 0503 9908 0308 조건을만족하는릴레이션의수평적부분집합 ( 행을구하는연산 ) 으로구성하여, 연산자의기호는그리스문자시그마 (σ) 를사용 표기 : σ < 조건 > (R) < 성적 R> 이름 국어 영어 수학 총점 평균 박 95 80 80 255 85 김 70 90 80 240 80 정 100 100 100 300 100 성적 R에서평균 90점이상튜플들을모을때 σ ( 평 90)( 성적 ) 이름 국어 영어 수학 총점 평균 정 100 100 100 300 100 3) 관계대수집합연산자 1 합집합 (Union) 두릴레이션에존재하는튜플의합집합을구함 결과튜플은중복이제거됨 2 교집합 (Intersection) 두릴레이션에존재하는튜플의교집합을구함 3 차집합 (Difference) 두릴레이션에존재하는튜플의차집합을구함 4 카티션곱 (Cartesian Product) 0509 A relational algebra operation on two relations, R1 and R2, producing a third relation R3, with R3 containing the concatenation of every row in R1 with every row in R2. ( 두릴레이션 R1과 R2로 R1과 R2의모든행을연결한것을지니는 3번째릴레이션 R3를만드는관계대수연산 ) 0205 두릴레이션 (Relation) 의교차곱을수행 릴레이션 R1과 R2를카티션곱을하면각릴레이션의튜플수를곱한것과같은개수의결과튜플이생김 0205 공통튜플수와관계가없음 두테이블의속성개수가같고, 대응되는각속성들의도메인이같으나속성명들이다른경우합집합, 교집합, 차집합이가능함 0103 52
(2) 관계해석 (Relational Calculus) 1) 관계해석의특징 9904 0003 0209 0409 0505 0605 0005 0503 1 튜플관계해석과도메인관계해석이있음 2 기본적으로관계해석과관계대수는관계데이터베이스를처리하는기능과능력면에서동등함 3 수학의 predicate calculus 에기반을두고있음 4 관계해석으로질의어를표현 5 원하는릴레이션을정의하는방법을제공, 즉원하는정보가무엇이라는것만정의하는비절차적인언어 0403 관계해석의특징오답 원하는정보와그정보를어떻게유도하는가를기술하는절차적인특성을가짐 릴레이션조작을위한연산의집합 계산수식을사용하여어떤데이터를가져올지명시 관계해석으로표현한식은관계대수로표현할수없음 관계데이터모델에대한연산의표현방법으로관계대수와관계해석은모두절차적인특성을가짐 기 출 문 제 0205 4. 다음은어떤관계대수연산에관한설명인가? 0503 1. 주어진관계로부터원하는관계를얻기위해연산자와연산규칙을제공하는언어를무엇이라하는가? 가. 관계행렬나. 관계대수다. 관계해석라. 관계테이블 0305 0703 2. 다음관계대수문장의의미는? π 이름 (σ 학과 = 전산 ( 교수 )) 가. 전산학과교수들의이름을검색하시오. 나. 전산학과교수들의이름테이블을삭제하시오. 다. 전산학과교수들의이름을삭제하시오. 라. 전산학과교수들의이름을삽입하시오. 0308 3. 관계에존재하는튜플에서선택조건을만족하는튜플의부분집합을구하기위해서사용하는관계대수연산은? 가. JOIN 나. SELECT 다. PROJECT 라. UNION A relational algebra operation on two relations, (ᄀ) and (ᄂ), producing a third relation (ᄃ), with (ᄃ) containing the concatenation of every row in (ᄀ) with every row in (ᄂ). 가. Join 나. Projection 다. Union 라. Cartesian Product 0005 5. 관계데이터연산에관한내용으로적당하지않는것은? 가. 관계대수는원하는정보와그정보를어떻게유도하는가를기술하는절차적인방법이다. 나. 관계해석은원하는정보가무엇이라는것만정의하는비절차적특성을지닌다. 다. 관계해석에는튜플관계해석 (tuple relational calculus) 과도메인관계해석 (domain relational calculus) 이있다. 라. 관계해석으로표현한식은관계대수로표현할수없다. 0403 6. 관계데이터의연산표현방법으로원하는결과정보만기술해주는비절차적언어는? 가. 관계대수나. 관계해석다. 근원연산라. 복합연산 53
PART 1 데이터베이스 3.3 SQL 언어 (1) 질의어 (Query Language) 1) DBMS에서데이터베이스로부터데이터를뽑아내어사용가능한형식으로나타내어주어소프트웨어툴혹은함수 2) 독자적이고상호작용형태로터미널에서많이사용하고있는비절차적언어이며고급명령어형태의독립된데이터조작어 9904 0503 3) In DBMS, a query is software tool or function that extracts data from the database and presents it in a usable format. (DBMS 에서질의는데이터베이스로부터데이터를추출하고사용가능한형태로제공하는소프트웨어도구혹은함수이다.) 0503 4) SQL (Structured Query Language) A standardized query language for requesting information from a database ( 데이터베이스에정보를요구하는표준질의어 ) 0209 (2) SQL 분류 0709 0003 0005 0308 0605 0703 0705 DDL 오답 원하는정보와그정보를어떻게유도하는가를기술하는절차적인특성을가짐 릴레이션조작을위한연산의집합 데이터사전은단순데이터 (simple data) 를수록하고있는파일 병행처리시 Lock 및 Unlock 기능 사용자와 DBMS 간의인터페이스제공 SELECT, INSERT 1) DDL (Data Definition Language)0010 0103 0106 0503 0509 0609 0703 9910 0103 0305 0409 0505 0703 0705 0709 1 데이터베이스스킴은데이터정의언어라는특별한언어로서표현된정의의집합으로지정됨 2 번역한결과가데이터사전 (data-dictionary 또는 data directory) 이라는특별한파일에여러개의테이블로서저장됨 3 데이터베이스관리시스템 (DBMS) 내에서사용자의편의와구현상의편의를위해명령어를제공함 4 데이터베이스를정의하거나그정의를수정할목적으로사용하는언어 0007 0106 0203 5 데이터베이스언어중데이터베이스의객체들, 즉테이블, 뷰, 인덱스등에대한구조인스키마를정의하고변경하며삭제할수있는기능 6 외부스키마명세및스키마에사용되는제약조건명세 7 The language that allow users to create new database and specific their schema. ( 사용자가새로운데이터베이스와자신들의특정스키마를만들게하는언어 ) 2) DML (Data Manipulation Language) 0203 0603 9904 54
1 사용자나응용프로그램과데이터베이스관리시스템 (DBMS) 간의인터페이 스를제공 0609 2 Give users the ability to query the data and modify the data, using an appropriate language ( 데이터베이스사용자에게적절한명령어를사용하여데이터를수정하거나데이터를질의할수있게하는것 ) 0205 3 The language that enables users to access and manipulate data as organized by the appropriate data model. ( 사용자가적절한데이터모델로구성된데이터에접근하고조작할수있게하는언어 ) 0503 3) DCL (Data Control Language) 9908 0109 0209 0305 0605 9908 0010 0308 0403 DCL 의특징오답 인덱스정의 주로응용프로그래머와일반사용자가사용하는언어임 데이터의검색, 삽입, 삭제, 변경 1 데이터베이스를공용하기위한데이터제어를정의하고기술하는언어 ( 데이터의보호와관리 ) 0308 2 데이터보안 3 데이터무결성및회복 4 병행수행 (3) DDL 1) CREATE 1 CREATE SCHEMA 스키마를정의 스키마의식별을위한스키마와해당스키마의소유권자 / 허가권자를정의함 Create Schema 스키마이름 authorization 사용자id ID가임꺽정인사용자의스키마 수위실 정의 CREATE SCHEMA 수위실 AUTHORIZATION 임꺽정 ; 2 CREATE DOMAIN 도메인을정의 정의된도메인명은일반적인데이터타입처럼사용 Create Domain 도메인이름 data-type data-type의종류 -정수, 실수, 날짜, 시간 - 형식화된숫자 - 고정길이문자, 가변길이문자 - 고정길이비트열, 가변길이비트열 55
PART 1 데이터베이스 CREATE DOMAIN SUNG CHAR(1) DEFAULT 여 도메인무결성 CONSTRAINT VALID-SUNG CHECK (VALUE IN ( 남, 여 )); 3 CREATE TABLE 9906 0605 테이블을정의 Create Table 테이블이름 { ( 속성명 data-type), Primary key( 기본키속성명 ), Unique( 대체키속성명 ), Foreign key( 외래키속성명 ), References 참조테이블 ( 기본키속성명 ), Check ( 조건식 ); }; CREATE TABLE 학생 { 학번 CHAR(18), 이름 CHAR(18) NOT NULL, 성별 SUNG, 생년월일 DATE, PRIMARY KEY( 학번 ), UNIQUE( 생년월일 ), FOREIGN KEY( 학과코드 ) REFERENCES 학과 ( 학과코드 ) ON DELETE SET NULL ON UPDATE CASCADE, CHECK 생년월일 >= 1974-05-01 }; 참조무결성 4 CREATE VIEW 0209 0403 0703 뷰를정의 Create View 뷰이름 ( 속성명,...) As Select 속성명,... From 테이블명 where 조건 ; [With Check option] CREATE VIEW 여학생 ( 이름, 성별 ) AS SELECT 이름, 성별 FROM 학생 WHERE 성별 = 여 ; 56
5 CREATE INDEX 인덱스를정의 Create [unique] index 인덱스이름 on 기본테이블이름 ( 속성이름정렬방식 ); 정렬방식 : ASC( 오름차순 ), DESC( 내림차순 ) CREATE UNIQUE INDEX 고객번호 _idx ON 고객 ( 고객번호 DESC); ( 고객테이블에서 UNIQUE 한특성 ( 중복값이없는속성으로인덱스생성 ) 을갖는고객번호속성에대해내림차순으로정렬하여 고객번호 _idx' 라는이름으로인덱스정의 ) 2) ALTER TABLE 0205 0405 1 테이블에대한정의를변경 2 기본구조 Alter Table 테이블이름 ADD 속성이름 data-type [default 값 ]; Alter Table 테이블이름 ALTER 속성이름 data-type [set default 값 ]; Alter Table 테이블이름 DROP 속성이름 data-type [cascade]; 3 예제 ALTER TABLE 학생 ADD 취미 CHAR(18); 0503 새로운속성추가 ALTER TABLE 학생 ALTER 성별 SET DEFAULT 남 ; 기본값변경 ALTER TABLE 학생 DROP 생년월일 ; 속성제거 3) DROP 0405 0603 0703 9906 0505 0705 1 스키마, 도메인, 테이블, 뷰, 인덱스를제거하는명령문 2 기본구조 Drop SCHEMA 이름 [CASCADE RESTRICT] DOMAIN TABLE VIEW INDEX 3 예제 DROP SCHEMA 수위실 CASCADE; DROP TABLE 학생 RESTRICT; CASCADE: 제거할개체를참조하는다른모든개체를함께제거 9910 0103 RESTRICT: 다른개체가제거할개체를참조중일경우제거가취소됨 0007 0109 0403 참조무결성위배방지 57