KR940004389B1 - 관계형 데이타베이스에 대한 액세스플랜 발생 방법 및 시스템 - Google Patents

관계형 데이타베이스에 대한 액세스플랜 발생 방법 및 시스템 Download PDF

Info

Publication number
KR940004389B1
KR940004389B1 KR1019900014423A KR900014423A KR940004389B1 KR 940004389 B1 KR940004389 B1 KR 940004389B1 KR 1019900014423 A KR1019900014423 A KR 1019900014423A KR 900014423 A KR900014423 A KR 900014423A KR 940004389 B1 KR940004389 B1 KR 940004389B1
Authority
KR
South Korea
Prior art keywords
access
database
code
plan
instructions
Prior art date
Application number
KR1019900014423A
Other languages
English (en)
Other versions
KR910008600A (ko
Inventor
리쎌 보이킨 제임스
앤 기어 커즈제스키 리사
랜달 호온 개리
레이 맬크머스 티모씨
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
하워드 지, 피거로아
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션, 하워드 지, 피거로아 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR910008600A publication Critical patent/KR910008600A/ko
Application granted granted Critical
Publication of KR940004389B1 publication Critical patent/KR940004389B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

내용 없음.

Description

관계형 데이타베이스에 대한 액세스플랜 발생 방법 및 시스템
제1도는 데이타베이스 시스템을 설명하는 고-레벨 블럭도.
제2도는 액세스 섹션(access section)의 블럭도.
제3도는 액세스 플랜(access plan)에 대한 컴파일 절차를 설명하는 흐름도.
제4도 내지 제11도는 제약요건(constraint) 검사를 수행하기 위하여 저-레벨 코드 명령문을 액세스 섹션으로 삽입하는 것을 나타낸 도면.
제12도는 삭제가 자체-참조 테이블(self-referencing table)에서 행해질때 캐스케이드(cascade)의 삭제 규칙(a delete rule)을 갖는 참조상의 제약요건(referential constraints)을 만족하기 위해 액세스 플랜에 삽입된 저-레벨 코드의 기능을 도시하는 흐름도.
* 도면의 주요부분에 대한 부호의 설명
10 : 데이타베이스 12 : 데이타베이스 관리자
14 : 액세스 플랜 16, 18, 20, 22, 24, 26, 28 : 액세스 섹션
30, 32, 34, 36, 38, 40, 42 : 데이타베이스 객체
50 : 메인 스레드 58, 60, 62 : 서브스레드
[기술분야]
본 발명은 일반적으로 디지탈 컴퓨터용 데이타베이스 시스템에 관한 것이며, 특히 데이타베이스에 변경(change)이 행해질때 참조상의 제약요건(referential constraints)을 만족하기 위한 시스템 및 방법에 관한 것이다.
[종래기술의 설명]
디지탈 컴퓨터 시스템에서 데이타베이스의 액세스(access) 속도를 증가시키기 위해, 데이타베이스 액세스 명령들을 포함하는 소스 파일들(source files)이 액세스 플랜(access plan)내로 컴파일될 수 있다. 이 액세스 플랜은 데이타베이스를 효과적으로 액세스하기 위해 저-레벨의 절차 명령문(low-level procedural statement)을 포함한다. 데이타베이스 관리자(a database manager)에서 실행시에(at run time) 데이타베이스 액세스 명령을 해석(interpret)하는 대신, 시스템 성능을 향상 시키기 위해 상기 액세스 플랜을 실행시킨다(execute).
데이타베이스를 갱신(update)할때 그 참조 무결성(referential integrity)를 만족시키기 위해서는 많은 제약요건(constraint)이 만족되어야 한다. 참조 무결성은 전 데이타베이스에 걸쳐 일관성이 있는 상태(a state of consistency)를 말한다. 이 참조상의 무결성은 데이타베이스에 대해 행해진 모든 변경(change)이 일관성 요구에 매치되도록 이들 변경을 검사 함으로써 시행된다.
종래의 시스템에서는, 데이타베이스내의 테이블에 변경이 행해질때, 이와 같은 변경에 관련된 모든 제약요건이 결정된다. 이와 같은 제약요건에 영향을 받는 다른 테이블들이 식별되고, 필요한 일관성 검사를 수행하기 위한 루틴(routine)들이 실행된다. 관련된 일관성 검사를 결정하고 연루된 테이블을 식별하는데 걸리는 시간이 중요하며, 시간이 길어질 경우 전체 시스템 성능의 저하에 기여한다.
데이타베이스에 대해 변경이 행해질때 일관성 검사를 수행하는데 필요한 시간을 최소화하는 데이타 시스템내에 시스템 및 방법을 제공하는 것이 바람직하다.
[발명의 요약]
그러므로 본 발명의 목적은 데이타베이스 시스템에 대해 갱신(updates)이 행해질때 일관성 검사를 수행하기 위한 시스템 및 방법을 제공하는 것이다.
본 발명의 다른 목적은 일관성 검사에 필요한 시간을 최소화하는 그런 시스템 및 방법을 제공하는 것이다.
본 발명의 또다른 목적은 데이타베이스 시스템에 대한 참조 무결성을 만족하는 그런 시스템 및 방법을 제공하는 것이다.
그러므로, 본 발명에 따라, 데이타베이스 시스템 내의 참조 무결성을 만족하기 위한 시스템 및 방법은 액세스 플랜에 대해서 컴파일시에 관련된 참조상의 제약조건을 결정한다. 데이터베이스에 대한 데이타 변경에 관련된 모든 참조상의 제약요건은 액세스 플랜이 작성될때 식별된다. 참조상의 제약요건 검사를 수행하는데 필요한 코드는 컴파일시에 액세스 플랜에 직접 삽입되며, 따라서 실행시에 관련 제약요건을 결정할 필요성이 없어 진다. 제약요건 검사는 데이타베이스를 액세스하기 위해 액세스 플랜에서 이미 사용된 동일한 저-레벨 절차 명령문을 이용하여 수행될 수 있다.
[양호한 실시예의 상세한 설명]
본 발명의 새로운 특징은 첨부된 특허청구의 범위에 기재되어 있다. 그러나, 본 발명 자체뿐만 아니라, 양호한 이용방법과 그외의 목적 및 장점들은 첨부도면과 함께 다음의 실시예의 상세한 설명을 참조하면 잘 이해될 것이다.
다음의 설명에 사용되는 몇몇 중요한 단어 및 개념을 정의하는 것이 본 발명의 이해에 도움이 된다.
기본 키(primary key)는 특유의 비-널 값들(non-nullvalues)을 포함해야 하는 테이블에서의 일단의 열(column)이다. 한 테이블은 하나 이상의 기본 키를 가질 수 없다. 외래키(foreign key)는 테이블의 기본키의 값에 매치(match)될 필요가 있는 값을 갖고 있는 테이블에서의 일단의 열(column)이다. 참조상의 제약요건은 지정된 외래키의 비-널 값이 또한 지정된 테이블의 기본키의 값으로 나타날때만 유효 하다는 요구조건이다. 외래키 값은 그 어떤 부분의 값이 널일때에는 널이 된다. 참조상의 제약요건에 의해 정의된(defined) 관계(relation)는 단일 테이블의 행(rows) 사이 또는 기본키의 값과 외래키의 값에 의해 결정되는 2개의 상이한 테이블의 행 사이의 일단의 연결관계(connections)이다.
페이런트 테이블(parent table)은 관계에 있어서의 기본키를 포함하는 테이블이다. 어떤 테이블이 임의의 갯수의 관계에 있어서 패어런트 테이블이 될 수 있다. 종속(dependent) 테이블은 관계에 있어서의 외래키를 포함하는 테이블이다. 어떤 테이블이 임의의 갯수의 관계에 있어서 종속 테이블이 될 수 있다. 즉 한 테이블은 패어런트 테이블과 종속 테이블 모두가 될 수 있다.
종속 행(dependentrow)은 그 패어런트 테이블의 기본키 값에 매치하는 외래키(foreign key) 값을 갖고 있는 종속 테이블의 행이다. 그러므로 외래키 값은 종속행으로부터 패어런트 행까지의 참조를 나타낸다. 패어런트 행은 적어도 하나의 종속 행을 갖고 있는 패어런트 테이블의 행이다. 삭제 규칙(delete rule)은 각각의 참조상의 제약요건과 관련되어 있다. 삭제 규칙은 패어런트 행의 삭제를 제한(방지 할 수 있으며, 또한 종속 행에 대한 삭제의 효과를 규정(specify) 할수도 있다. 이 효과는 종속 행의 삭제(삭제의 캐스케이딩(cascading of the delete)가 될 수 있으며, 또는 종속 행의 외래키를 널(null)로 설정하는 것이 될 수 있다.
갱신 규칙(update rule)도 또한 각각의 참조상의 제약요건과 관련되어 있다. 갱신규칙을 다루는 한 방식은 패어런트 행에서의 기본키의 갱신을 제한하는 것이다. 다른 방식은 예를들어 갱신의 캐스케이딩(cascading)이 가능하도록 종속행에 대한 갱신의 효과를 규정하는 것이다.
데이타베이스에 대해 변경이 행해질때마다, 모든 관련된 참소상의 제약요건이 만족되어야 한다. 만일 만족되지 않는 것이 있으면, 그 변경이 허용되지 않는다. 외래키에 대한 다음 규칙의 시행은 데이타베이스의 참조 무결성을 보장해 준다.
삽입 규칙(Insert Rule) : 종속 테이블에 하나의 행이 삽입될때, 삽입된 행에 있는 각각의 비-널(non-null)인 외래키 값은 관계(relation)의 패어런트 테이블의 기본키의 어떤 값과 매치되어야 한다. 만일 삽입 동작이 어떤 참조상의 제약요건에 위배되면, 에러가 발생하고 어떤행도 삽입되지 않는다.
삭제규칙(Delete Rule) : 패어런트 테이블로부터 한행이 삭제될 때에는, 종속 테이블에 종속 행이 있는지 여부를 결정하기 위한 검사가 수행된다. 종속 행은 삭제될 행의 기본키에 매치하는 외래키 값을 갖고 있는 행이다. 만일 어떤 종속 행이 발견되면, 취할 동작은 종속 테이블내의 외래키에 대해 규정된 삭제규칙에 의해 규정된다.
한 외래키에 대해 세가지 삭제규칙이 규정될 수 있다. 삭제규칙이 제한(RESTRICT)인 경우에, 만일 어떤 종속 행이 발견되면, 에러가 발생하고 어떤 행도 삭제되지 않는다. 삭제 규칙이 캐스케이드(CASCADE)인 경우에는 종속 테이블내의 어떤 종속 행도 삭제된다. 종속 테이블의 삭제된 행에 대한 어떤 다른 참조상의 제약요건도 또한 만족되어야 하며, 그렇지 않으면 에러가 발생하고 어떤 행도 삭제되지 않는다. 삭제 규칙이 셋트 널(SET NULL)인 경우 만일 종속 테이블에서 어떤 종속 행이 발견되면, 외래키의 모든 널가능한 부분(nullable part)은 널로 설정된다.
갱신 규칙(Update Rule) : 패어런트 테이블에서 어느 한 행이 갱신될 종속 테이블에 종속 행이 있는지 여부를 결정하기 위해 검사가 수행된다. 종속 행은 갱신될 행의 기본키에 매치하는 외래키 값을 갖고 있는 행이다. 만일 어떤 종속 행이 발견되면, 취할 동작은 종속 테이블내의 외래키에 대해 규정된 갱신규칙에 의해 규정된다.
한 외래키에 대해 세가지 갱신규칙이 규정될 수 있다. 갱신규칙이 제한(RESTRICT)인 경우에, 만일 어떤 종속 행이 발견되면, 에러가 발생하고 어떤 행도 갱신 되지 않는다. 갱신 규칙이 캐스케이드(CASCADE)인 경우에는, 종속 테이블내의 어떤 종속 행에서의 외래키가 대응하는 기본키 부분으로 갱신된다. 종속 테이블의 갱신된 행에 대한 어떤 다른 참조상의 제약요건도 또한 만족되어야 하며, 그렇지 않으면 에러가 발생하고 어떤 행도 갱신되지 않는다. 갱신규칙이 셋트 널(SET NULL)인 경우, 만일 종속 테이블에서 종속 행이 발견되면, 외래키의 모든 널가능한 부분(nullable part)은 널로 설정된다.
외래키 갱신 규칙(Update foreign key rule) : 종속 테이블에서 외래키가 갱신될때, 만일 외래키가 널(null)이 아니면, 그 새로운 값은 관계의 패어런트 테이블의 기본키의 어떤 값에 매치되어야 한다. 만일 갱신 동작이 어떤 참조상의 제약요건에 위배 되면, 에러가 발생하고 어떤 행도 갱신되지 않게 된다.
제1도를 참조하면, 데이타베이스(10)는 데이타베이스 관리자(12)에 의해 액세스된다. 데이타베이스 관리자(12)는 데이타베이스(10)에 대한 액세스를 제공하기 위해 응용프로그램(도시안됨)에 의해 호출된다. 데이타베이스(10)에 대한 액세스는 데이타베이스 관리자(12)를 통해서만 허용된다.
응용 프로그램이 데이타베이스 관리자(12)를 호출하면 데이타베이스 관라지(12)는 요청된 데이타베이스 액세스를 수행하기 위해 액세스 플랜(14)을 차례대로 호출할 수 있다. 액세스 플랜(14)는 SQL(구조적 질의어) 등과 같은 고차 데이타베이스 액세스 언어로부터 컴파일된 저-레벨 해석 코드를 포함한다. 또한, 액세스 플랜(14)은 다수의 액세스 섹션(16,18,20,22,24,26,28)을 포함한다. 각각의 액세스 섹션(16-28)은 근본적으로, SQL이나 또는 비슷한 고차 데이타베이스 액세스 언어에서의 한 소스 레벨 명령문(one source level statement)에 대응한다.
액세스 플랜(14)은 하나의 객체(object)로서 데이타베이스(10)내에 포함되어 있다. 또한, 데이타베이스(10)내에는 다수의 다른 데이타베이스 객체들(30,32,34,36,38,40,42)이 포함되어 있다. 여러가지 형태의 데이타베이스 객체(30-42)가 존재할 수도 있는데, 본 발명에 가장 관련이 있는 객체로는 데이타 테이블이 있다.
SQL 명령문에 대응하는 각각의 액세스 섹션(16-28)은 데이타베이스(10)내에서 하나 또는 그 이상의 테이블(30-42)을 액세스한다. 각각의 액세스 섹션으로 컴파일된 명령문의 특성에 따라, 이들 테이블내의 데이타가 판독 또는 변경될 수도 있으며, 또는 테이블내에서 행이 삽입 또는 삭제될 수도 있다. 제1도에 도시된 바와 같이, 액세스 섹션은 하나이상의 테이블을 참조할 수도 있으며, 많은 상이한 액세스 섹션이 단일 테이블을 참조할 수도 있다. 테이블은 많은 상이한 액세스 플랜내의 액세스 섹션에 의해 참조된다. 예를들어, 액세스 섹션(16,18,22,24)은 모두 테이블(32)를 참조한다. 액세스 섹션(26)은 테이블(36)만을 참조하지만, 액세스 섹션(28)은 테이블(36,38,40)을 참조한다.
제2도는 전형적인 액세스 섹션의 구조를 도시하고 있다. 메인 스레드(Main thread)(50)는 액세스 섹션이 나타내는 SQL 명령문의 기능을 수행하기 위한 저-레벨 코드의 스레드(thread) 또는 블럭이다. 메인 스레드(50) 내의 코드는 테이블 객체(52)(TAOB) 및 삽입/갱신/삭제 객체(54)(IUDO)에 대한 포인터를 포함한다. 테이블 객체는 데이타베이스내의 한 테이블을 액세스하는데 필요한 모든 정보를 포함하는 제어블럭이다. IUDO는 테이블에 대한 삽입, 갱신 또는 삭제에 필요한 모든 정보 및 절차를 포함하는 제어 블럭이다. 모든 메인 스레드(50) 모두가 두가지 형태의 객체(52,54) 모두에 대한 포인터를 포함하는 것은 아니다. 단지 연산을 수행하는데 필요한 것만이 포함된다.
TAOB(52)는 데이타베이스내에 한 테이블을 배치 하는데 필요한 모든 식별자(identifiers)를 포함한다. 또한 원래의 SQL 명령문(statement)에 나타나는 어떤 술어(predicate)도 TAOB(52)에 포함된다. 이들 술어는 그 술어가 정의하는 기준에 매치하는 테이블의 행을 선택하기 위해 테이블 액세스 연산자에 의해 사용되며, SQL 명령문의 WHERE절에서 발견 된다. 술어는 통상적으로 보다 큼 또는 보다 작음과 같은 관계 연산자로 이루어져 있으며, 참(TRUE) 또는 거짓(FALSE)의 결과를 발생한다.
IUDO(50)는 메인 스레드(50)에 의해 정의된 연산을 수행하는데 필요한 모든 데이타 값(56)에 대한 포인터를 포함한다. 이들 값은 예를들어, 원래의 SQL 명령문에 포함된 숫자 상수 및 문자 상수를 포함한다. IUDO(54)는 또한 서브스레드58(S1),60(S2), 및 62(S3)에 대한 포인터를 포함한다. 서브스레드(58,60,62)는 메인 스레드(50)와 비슷한 저-레벨 코드는 블럭이다. 이 서브스레드는 숫자 및 문자에 근거한 여러가지 식을 계산 및 조작하기 위한 코드를 포함할 수 있다. 데이타베이스의 참조 무결성을 만족하기 위해, 메인 스레드(50)가 나타내는 명령문에 의해 요구되는 모든 필요한 제약요건 검사를 수행하는 서브스레드가 포함된다. 서브스레드(58,60,62)는 메인 스레드(50)의 연산의 실행을 완료하기에 앞서 실행 된다.
메인 스레드(50)내의 연산자는 필요한 서브스레드에 의해 복귀되는(return)값이 그 연산자가 예기한 적당한 값을 갖는 경우에만, 즉 연산이 참조 무결성의 요건에 위배되지 않는 경우에만 완전히 실행된다.
메인 스레드(50)가 관련 TAOB(52) 및 IUDO(54)를 갖고 있을 수는 있는 것처럼, 서브스레드(58,68,62)도 테이블 객체 및 가능하게는 삽입/갱신/삭제 객체에 대한 포인터를 포함한다. 예를 들어, 제2도에서 서브스레드(58)는 TAOB(64)에 대한 포인터를 포함하며, 서브스레드(60)는 TAOB(64)에 대한 포인터를 포함한다. 서브스레드(58,60)의 어느것도 IUDO에 대한 포인터를 포함하지 않는다. 이 예에서, 서브스레드(62)는 TAOB(68) 및 IUDO(70) 모두에 대한 포인터를 포함한다.
전술한 바와 같이, 메인스레드(50)를 실행할때 데이타베이스의 참조 무결성을 만족하는데 요구되는 모든 제약요건 검사를 수행하는데 필요한 서브스레드는 IUDO(54)하에 포함된다. 모든 필요한 제약요건 검사의 결정은 액세스 플랜이 컴파일될때 행해지며, 적당한 서브스레드가 컴파일러에 의해 삽입된다. 이 과정은 제3도에 도시되어 있다.
SQL이나 또는 다른 비슷한 고-레벨 데이타베이스 액세스 언어, 명령문의 소스 파일을 컴파일하기 위한 양호한 방법은 컴파일러가 SQL 명령문(80)을 판독하는 것부터 시작된다. 만일 컴파일러가 소스 파일의 끝에 도달하면(82), 컴파일이 완료된다. 만일 파일의 끝에 도달하지 않았다면, 그 명령문에 대한 메인 스레드가 발생된다(84).
선택(SELECT) 명령문과 같은 몇몇의 명령문은 어떤 제약요건 검사가 이루어질 필요가 없다. 어떤 제약요건이 필요한지 알기 위해 검사가 이루어지며(86), 만일 그렇지 않다면, 검사는 단계(80)로 복귀되고, 다음 명령문이 판독된다. 만일 현재 컴파일되고 있는 명령문이 어떤 제약요건 검사를 할 필요가 없다면(86), 제약요건이 식별된다(88). 제약요건 식별은 관계내의 패어런트 및 종속 테이블의 식별 및, 그 연산이 삭제 또는 갱신 연산인 경우 외래키에 대해 삭제 규칙을 사용할 것인가 갱신 규칙을 사용할 것인가를 결정하는 것을 포함한다. 모든 제약요건이 식별되었다면(88), 적당한 제약요건 서브스레드가 발생되어(90), 방금 발생된 메인 스레드의 IUDO에 링크된다. 그 다음에 제어는 판독될 다음의 소스 명령문을 판독하는 단계(80)로 복귀된다.
제약요건 서브스레드가 발생될 필요가 있는지 결정하기 위해서 모든 가능한 관계를 검사하는 것은 컴파일 과정의 시간 및 복잡성을 증가시킨다는 것은 이 기술에 숙련된 사람은 알 수 있다. 또한, 이 과정이 컴파일에 수행되고, 적당한 서브스레드가 메인 스레드를 수행하는데 사용되는 코드에 직접 링크되기 때문에, 발생된 액세스 플랜에 대해 이와 같은 검사를 실행시에 할 필요가 없다는 것도 알 수 있다. 이것은 액세스 플랜의 전체 실행을 빠르게 하며, 그래서 데이타베이스 시스템 성능을 향상시킨다. 액세스 플랜은 통상적으로 한번 컴파일되고, 비교적 여러번 실행되기 때문에, 컴파일 시간의 증가는 실행시간의 감소보다 훨씬 영향을 덜 미친다.
모든 제약요건 검사를 수행하기 위한 코드가 액세스 플랜에 직접 위치하기 때문에, 데이타베이스내의 테이블 사이의 관계에 변경이 행해질때에는 액세스 플랜이 더이상 유효하지 않다. 그러므로, 이와 같은 변경이 행해지면 액세스 플랜을 무효화시키고(invalidate), 액세스 플랜이 다시 실행되기전에 적어도 영향을 받은 액세스 섹션을 재 컴파일(recompile)하는 것이 필요하다. 관계에 있어서의 변경이 모두 액세스 플랜 무효화 및 재 컴파일을 필요로 하는 것은 아니다. 본원에 포함되어 있으며, "ACESS PLAN INVALIDATION FOR DATABASE SYSTEMS"란 제목의 공동 출원 중인 특허출원 제 호(미확인)에는 언제 액세스 플랜이 무효화 되어야 하는가를 결정하기 위한 양호한 기술이 설명되어 있다.
제4도 내지 제10도 몇몇의 중요한 제약요건 검사를 구현하기 위한 서브스레드의 이용 및 이와 같은 제약요건 검사를 구현하기 위한 코드예를 도시하고 있다. 각각의 경우에 메인 스레드는 NT로 표시되며, 서브 스레드는 S1 및 S2로 표시되어 있다. 각 경우에, 각 메인 스레드에 대해 단지 하나의 제약요건 검사만을 구현하기 위한 서브 스레드가 도시되어 있다. 그러나, 많은 경우에, 단일 SQL 명령문에 대해 복합 제약요건(mutiple constrint)이 검사되어야 하며, 이들 제약요건에 대응하는 복합 서브스레드가 포함되게 된다. 복합 서브스레드는 단순히 IUDO에 그들에 대한 포인터를 위치시킴으로써 포함된다.
다음의 저-레벨 연산자는 제4도 내지 제10도의 메인스레드 및 서브 스레드 코드 예에서 사용된다.
DEL : 이 연산지는 IUDO에 대한 포인터를 포함 한다. 만일 IUDO가 가리키고 있는 (pinted to) 제약요건 서브스레드중 어느것이 참(TRUE)의 값을 복귀시키면, 삭제는 실패한다. 이 상황은 기본키를 포함하는 행의 삭제가 종속 외래키의 삭제규칙에 일치하지 않고 데이타베이스에 대해 어떤 변경도 행해지지 않을때 발생한다. 만일 거짓 (FALES)이 복귀되면, 기대한 대로 삭제 연산이 진행된다.
DL2 : 이 연산자는, DEL 연산자의 경우와 같이 직접 삭제를 카운트하는데 사용되는 필드가 증가되는 것이 아니라 캐스케이드 삭제를 카운트하는데 사용되는 필드가 증가된다는 것을 제외하고는 DEL 연산자와 같은 기능을 갖는다.
EXS : 이 연산자는 TA 연산자와 같은 이전의 연산자 (previous operator)가 실행되었을때 서로 매치하는지의 여부를 결정한다. 만일 이전의 TA 연산자가 매치하는 레코드를 발견했다면, 참의 값이 부울 스택에 위치되고, 그렇지 않으면 거짓값이 스택에 위치된다.
EXP : 이 연산자는 술어(제약요건 검사) 서브 스레드 실행을 종료시키는 종료 스레드 연산자 (exit thread operator)이다. 서브스레드를 종료하면, 이 연산자는 부울 스택의 값을 팝 오프 (pop off)하며, 그 값을 복귀시킨다.
EXT : 이 연산자는 단순히 스레드나 서브스레드를 종료하여 이와 같은 스레드나 서브스레드가 호출되었던 장소로 제어를 되돌린다.
ISS : 이 연산자는 테이블에 행을 삽입하는데 이용된다. 이 연산자는IUDO에 대한 포인터를 포함하며, 그 제약요건 서브스레드의 복귀값이 참일때에만 실행을 완료한다. 복귀값이 거짓이라는 것은 삽입 연산이 중단될 것이라는 것을 나타낸다. 이와 같은 것은 기본키에 매치하지 않는 외래키를 포함하는 행을 삽입하려 할때 발생한다.
TA : 이 연산자는 테이블 액세스 연산자이며, TAOB에 대한 포인터를 포함한다. 이 연산자는 TAOB내의 술어에 의해 정의된 기준에 매치하는 TAOB와 관련된 테이블내의 모든 행을 선택한다.
UPD : 이 연산자는 갱신 연산자이며, IUDO에 대한 포인터를 포함한다. 갱신의 대한 IUDO는 기본키가 갱신될때 및 외래키가 갱신될때 제약요건 서브스레드에 대한 포인터를 포함한다. UPD연산자는 기본키의 갱신을 위한 모든 제약요건 서브스레드에 대한 복귀값이 거짓(FALSE)인 경우에만 실행을 완료한다. 복귀 값 TRUE는 갱신 연산이 중단될 것이라는 것을 나타낸다. 이 상황은 매치하는 외래키 값을 갖고 있는 기본키를 갱신하기 위한 시도가 행해질때 발생한다. 기본키의 각 갱신에 대해, 기본키 값이 실제로 변경되었는지를 결정하기 위한 검사가 행해진다. 만일 변경되지 않았다면, 기본기의 갱신을 위한 제약요건 서브스레드가 수행되지 않는다. UPD연산자는 또한 외래키의 갱신을 위한 모든 제약요건 서브스레드에 대한 복귀값이 참(TRUE)인 경우에만 실행을 완료한다. 복귀값 거짓(FALSE)은 갱신 연산이 중단될 것임을 나타낸다. 이 상황은 기본키에 매치되지 않는 새로운 값으로 외래키를 갱신하기 위한 시도가 행해질때 발생한다.
UP2 : 이 연산자는 갱신된 종속 행을 카운트 하기 위해 특정 필드가 증가된다는 것을 제외하고는 UPD연산자와 동일한 방식으로 수행된다.
제4도를 참조하면, 종속 테이블에의 삽입에 있어서 기본키 검사를 수행하기 위한 코드가 도시되어 있다. 이 검사는 패어런트 테이블에 새로운 키가 포함되는 것을 보장하기 위해 새로운 비-널의 외래키 값이 발생될때 이루어진다. ISS연산자는 IUDO 0을 가리키고 있으며, 이것은 차례로 서브스레드 S1을 가리키고 있다. 서브스레드 S1내에서, TA연산자는 새로 부가된 외래키에 매치하는 기본키 값을 가진(TAOB1가 가리키고 있는)패이런트 테이블 내의 행을 탐색하는데 이용된다. EXS는 부울 스택(boolean stack)에 참(TRUE)이나 거짓(FALSE)값을 위치시키며, 이 값은 스택으로부터 팝(pop)되어 EXP연산자에 의해 복귀된다.
만일 ISS연산자에 거짓(FALSE)이 복귀되면, 패어런트 테이블에서 매치하는 기본키가 발견되지 않은 것이고, 삽입 연산은 허용되지 않는다.
제5도를 참조하면, 종속 테이블의 외래키에 대한 삭제규칙에 제한(RESTRICT)일때 삭제 연산을 수행하기 위한 저-레벨코드가 도시되어 있다.
TAOB 0은 소스 삭제 명령문에 나타나는 모든 술어를 포함하며, IUDO 0은 서브스레드 S1에 대한 포인터를 포함한다. TAOB 1은 삭제되는 패어런트 테이블행의 기본키에 매치하는 외래키를 갖는 종속 테이블내의 행을 탐색하는데 필요한 술어를 포함한다. 메인 스레드에서, TA연산자는 삭제될 패어런트 테이블내의 행을 선택하며, DEL연산자는 거짓(FALSE)이 복귀되면 선택된 행을 삭제한다. 서브스레드 S1내에서, TA연산자는 TAOB1을 가리키며, 선택된 행의 기본키에 매치하는 외래키를 가진 행을 탐색한다. 서브스레드 S1은 메인 스레드의 TA연산자에 의해 선택된 패어런트 테이블의 각 행에 대해 수행된다. 만일 이와 같은 매치하는 행이 발견되었다면 EXP연산자에 의해 참(TRUE)이 복귀되며, 삭제 연산은 중단된다.
제6도를 참조하면, 종속 테이블의 외래키가 삭제 규칙 셋트 널(SET NULL)을 갖고 있는 삭제 연산을 수행하기 위한 코드가 도시되어 있다. 본 예는 서브스레드 S1이 IUDO 1에 대한 포인터를 포함하는 UP2연산자를 포함하고 있다는 것을 제외하고는 제5도의 예와 비슷하다. IUDO1은 종속 테이블에서의 외래키의 널 가능 부분(nullable parts)을 리스트하고, 호출될때 이 부분에 널 값을 할당한다. TA연산자가 종속 테이블을 주사할때, 삭제된 패어런트 행의 기본키에 매치하는 각 행에 대해 UP2연산자가 수행된다. EXT연산자는 부울값을 복귀시키지 않으며, 그래서 메인 스레드내의 DEL연산자가 항상 성공된다.
제7도는 종속 테이블에서의 외래키의 삭제 규칙이 캐스케이드(CASCADE)일때 삭제를 수행하기 위한 코드를 도시하고 있다. 제7도의 코드는 서브스레드(51)가 캐스케이드 삭제를 수행할 수 있도록 하기 위해 UP2연산자 대신에 DL2연산자를 갖고 있고 IUDO 1이 추가 레벨의 캐스케이드 삭제를 수행할 수 있도록 하기 위해 서브스레드 S2에 대한 포인터를 갖고 있다는 것을 제외하고는 제6도의 코드와 비슷하다. 서브스레드 S2는 TAOB 2 및 IUDO 2가 TAOB 1가 IUDO 1과는 다른 테이블을 참조한다는 것을 제외하고는 서브스레드 S1과 동일하다. 만일 삭제 체인(chain)이 제 3 테이블에 캐스케이드되면, IUDO 2는 그 테이블에 대한 삭제를 다루기 위해 다른 서브스레드에 대한 포인터를 포함하게 된다. 서브스레드 S1 및 S2에서의 DL2연산자는 그 각각의 서브스레드에서의 TA연산자에 의해 발견된 모든 행을 종속테이블로 부터 삭제한다.
제8도, 제9도 및 제10도를 참조하면, 갱신 연산에 대해 제약요건을 만족하기 위한 서브스레드를 예시하는 코드가 도시되어 있다. 각 경우에, 기본키 값이 실제적으로 변경되었는지 여부를 결정하기 위한 검사가 이루어진다. 만일 변경되지 않았다면, 제약요건 서브스레드가 수행되지 않는다.
제8도의 코드는 종속 테이블에 대한 삭제 규칙이 제한(RESTRICT)일때 적용된다. 메인 스레드에서, TA연산자는 패어런트 테이블로부터 행을 선택하며, UPD연산자는 거짓(FALSE)값이 복귀되는 경우에 선택된 행을 갱신 한다. 서브스레드 S1내에서, TA연산자는, 패어런트 행의 기본키에 매치하는 외래키를 갖고 있는 행이 종속 테이블에 있는지를 판단한다. 만일 매치하는 행이 발견되면, 이것은 갱신 연산이 수행되지 않아야 된다는 것을 나타내며, EXS 및 EXP연산자는 참(TRUE)값을 UPD연산자에 복귀시킨다. 만일 매치하는 행이 발견되지 않으면, 거짓(FALSE)이 복귀되고, 갱신 연산이 완료될수 있게 된다.
제9도는 종속 테이블내의 외래키에 대한 갱신 규칙이 셋트 널(SET NULL) 일때 사용될 제약요건 검사 서브스레드를 예시하고 있다. 서브스레드 S1내에서, IUDO 1은 종속 테이블내의 외래키의 널 가능 부분을 리스트 하고, UP2연산자는 TA연산자에 의해 선택된 종속 테이블내의 각 행에 대한 이들 부분에 널을 할당한다. 삭제 셋트 널 경우처럼, 서브스레드 S1은 메인 스레드에서의 UPD연산자가 실패하도록 하지 않는다.
제10도는 종속 테이블에서의 외래키에 대한 삭제 규칙이 캐스케이드(CASCADE)인 갱신을 수행하는데 이용되는 코드를 도시하고 있다. IUDO 1은 패어런트 기본키의 갱신된 부분에 대응하는 종속 테이블의 외래키 부분을 리스트한다. UP2연산자는 서브스레드 S1내의 TA연산자에 의해 선택된 종속 테이블내의 각 행에 대해서 대응하는 기본키 부분값으로 상기 외래키 부분이 셋트되도록 한다. 만일 캐스케이드가 제1종속 테이블을 지나 계속되면, IUDO 1은 삭제 캐스케이드 경우에서 발생할때 처럼 다른 서브스레드에 대한 포인터를 포함하게 된다.
제11도를 참조하면, 외래키 값의 갱신에 있어 기본키 검사를 수행하기 위한 코드가 도시되어 있다. 이 검사는 패어런트 테이블에 새로운 키가 포함되는 것을 보장하기 위해, 새로운 비-널 외래키 값이 발생될때 이루어 진다. UPD연산자는 IUDO 0을 가리키며, 이것은 차례로 서브스레드 S1을 가리킨다. 서브스레드 S1내에서, TA연산자는 새로 부가된 외래키에 매치하는 기본키 값을 갖고 있는(TAOB 1에 의해 지시된)패어런트 테이블내의 행을 탐색하는데 이용된다. EXS는 부울 스택에 참(TRUE)또는 거짓(FALSE)값을 위치시키며, 이 값은 그 스택으로부터 팝되어 EXP연산자에 의해 복귀된다.
만일 거짓(FALSE)이 UPD연산자에 복귀되면, 매치하는 기본키가 패어런트 테이블에서 발견되지 않았고, 갱신 연산이 허용되지 않는다.
패어런트 테이블 및 종속 테이블 모두에서와 같이 관계에 있어 많은 테이블이 포함되게 되기 때문에, 모든 관련 제약요건에 대해 제약요건 검사 서브스레드가 포함되어야 한다. 만일 제약요건 서브스레드 중 어느것이 실패 한다면, 메인 스레드에 의해 정의되는 연산도 실패하게 된다.
전술한 모든 제약요건은 서브스레드를 이용하여 간단한 방식으로 구현될 수 있다. 실행시의 과정에 대한 보다 어려운 제약요건은 캐스케이드 삭제 규칙을 가진 삭제 명령문에 대한 자기-참조 제약요건이다. 이런 특수 경우는 지금부터 후술되게 되는 바와 같이 상이한 방식으로 조정되는 것이 바람직하다.
캐스케이드 삭제 규칙 및 자기-참조 제약요건에 있어서, 테이블로부터 삭제된 모든 행은 자체적으로 그 테이블내의 복수의 종속 행을 갖고 있을 수도 있는 동일한 테이블에서 복수의 종속 행을 가질 수도 있다. 이들 복합 종속(mutiple dependency)이 테이블내에 포함된 데이타에 따라, 미지의 정도까지 순환적으로 계속될 수 있다. 제약요건 검사를 구현하기 위한 순환적 절차는 판단 불가능한 최대 크기의 호출스택을 필요로 할 수 있다. 그러므로, 이제 반복적 기법을 이용하는 이러한 특수한 경우의 제약요건 검사를 수행하기 위한 양호한 방법이 기술되게 된다.
제12도를 참조하면, 캐스케이드의 삭제 규칙을 가진 삭제 명령문에 관한 자기-참조 제약요건에 대한 제약요건검사를 수행하기 위한 흐름도가 도시되어 있다.
먼저, 삭제법 한 행 또는 복수의 행이 선택된다(100). 이것은 커서에 의해 현재 선택된 단일 행이 될 수도 있다. 몇몇의 비교 기준에 근거하여 선택된 하나이상의 행이 될 수도 있다. 후자의 경우에, 테이블로부터 삭제될 행을 선택하기 위해 통상의 TA연산자가 이용될 수 있다.
단계(100)에서 선택된 행에 대해, 각 행에 대한 기본키가 임시 테이블에 기록된다(102). 다음에 선택된 행이 DEL연산자를 이용하여 원래의 테이블로부터 삭제된(104). 다음에, 새로 삭제된 기본티 값을 포함하는 행이 임시 테이블로부터 판독된다(106). 그 다음에, 임시 테이블이 비어있는지 알기 위한 검사가 이루어진다(108). 만일 비어있다면, 절차가 완료되고, 그렇지 않으면 제어는 단계(110)로 가게된다.
단계(110)에서, 임시 테이블로부터 방금 선택된 기본키에 매치되는 종속 키를 가진, 원래의 테이블 내의 행이 TA연산자를 이용하여 판독된다(110). 단계(112)는 더이상의 매치되는 행이 발견되었는지를 알기 위한 테스트를 나타낸다. 만일 테이블의 끝에 도달하지 않았으면, 새로 선택된 행으로부터의 기본키가 임시테이블로 부가되고(114), 테이블로부터는 그 행이 삭제된다(114). 이 과정은 모든 매치되는 행이 TA연산자에 의해 발견되었을때까지 계속한다.
단계(110-116)에 의해 정의되는 루프는 단일 자기-참조 졔약요건에 적용된다. 즉, 임시 테이블로 부터 가장 최근에 판독된 기본키에 매치되는지 알기 위해 한 외래키가 검사된다. 단일 테이블내에 두개 이상의 상이한 자기-참조 제약요건이 있을수도 있다. 만일 추가의 자기-참조 제약요건이 존재하면, 원래의 테이블이 한번 주사를 완료한 후에 제어는 단계(112)로부터 단계(118)로 건너간다. 단계(118)의 TA 연산자에의해 참조되는 테이블 개체에서의 술어가 단계(110)의 TA 연산자에 의해 참조하는 테이블 객체에서의 술어와 다르다는 것을 제외하고는, 단계(118, 120, 122, 124)는 단계(110-116)에 대응하며, 원래의 테이블이 다시 주사되도록 한다. 이것은 상이한 참조상의 제약요건이 단계(118-124)에 의해 검사된다는 것을 의미한다.
원래의 테이블에 대해 오직 2개의 상이한 자기-참조 제약요건만이 존재한다고 가정하자. 일단 단계(120)의 테스트가 테이블이 주사를 완료했다는 것을 나타내면, 제어는 임시 테이블로부터 새로운 기본키를 판독하기 위해 단계(106)로 되돌아간다. 다음에 임시 테이블로부터 새로 판독된 기본키와 함께 전체 과정이 완료된다. 이 사이클은 계속되어, 행이 삭제될때 새로운 기본키는 임시 테이블에 부가되고, 임시 테이블이 비워질때까지 제어가 단계(106)으로 되돌아갈때마디 임시 테이블로부터 제거 된다. 자기-참조 제약요건이 단일 테이블에 대해 제한적이기 때문에, 결국 임시 테이블이나 또는 원래의 테이블 자체가 비워지게 된다.
만일 단일의 자기-참조 제약요건만이 원래의 테이블에 존재한다면, 결정 단계(112)는 제어를 직접 단계(106)로 되돌리고, 단계(118-124)의 루프는 존재하지 않게 된다. 만일 3개 이상의 상이한 자기-참조 제약 요건이 존재한다면, 제어는 결정 단계(120)로부터 다음 참조상의 제약요건에 대한 루프의 시작점으로 가게되게 되며, 최종 루프는 제어를 제어를 단계(106)를 복귀시킨다. 제약요건이 갯수 및 식별은 액세스 플랜에 대한 컴파일시에 알게 되며, 오직 요구되는 루프의 정확한 갯수만이 컴파일러에 의해 액세스 섹션에 기록된다.
전술한 시스템 및 방법은 직접 액세스 플랜으로의 제약요건 검사를 수행하기 위한 서브스레드의 컴파일을 위한 것이다. 이것은 관련 제약요건의 존재 및 식별이 실행시에 결정될 필요가 없기 때문에 실행 시간 효율을 증가시킨다. 이와 같은 액세스 섹션의 이전의 구성과 일치하는 방식으로 여러가지 액세스 섹션에 대한 메인 스레드에도 제약요건 검사를 수행하기 위한 코드가 부가될 수 있다.
본 발명이 특별히 양호한 실시예를 참조하여 도시되고 기술되었지만, 이 기술에 숙련한 사람은 본 발명의 정신 및 범위를 벗어나지 않고 그 형태 및 내용에서 여러가지 변경이 이루어질 수도 있다는 것을 알 수 있다.

Claims (9)

  1. 복수의 데이타 베이스 객체들을 갖는 관계형 데이타 베이스에 대한 액세스 플랜을 상기 데이타 베이스 객체들을 액세스하기 위해 사용되는 복수의 데이타 액세스 명령들로부터 발생시키는 방법에 있어서, 상기 복수의 데이타 베이스 액세스 명령들을 상기 액세스 플랜에 포함시키기 위해 제1의 실행가능 코드 집합으로 컴파일하는 단계와, 상기 컴파일 단계 동안에는 또한 상기 복수의 데이타 베이스 액세스 명령들의 실행 동안에 이용되는 선택된 데이타 베이스 객체들간의 제약 요건관계를 결정하는 단계와, 상기 제약 요건 관계를 만족하기 위해 복수의 제2의 실행 가능 코드 집합들을 발생시키는 단계 및, 상기 제1의 실행가능 코드 집합과 상기 복수의 제2의 실행가능 코드 집합들을 병합하여 상기 데이타 베이스 액세스 명령들을 실행시키기 위한 코드와 상기 액세스 플랜내에서 제약 요건 관계를 만족하기 위한 코드 모두를 갖는 액세스 플랜을 형성하는 단계등의 컴퓨터 시스템에 의해 수행되는 상기 단계들을 구비한 것을 특징으로 하는 관계형 데이타 베이스 시스템에 대한 액세스 플랜 발생 방법.
  2. 제1항에 있어서, 상기 액세스 플랜은 복수의 액세스 섹션들을 포함하며, 상기 복수의 액세스 섹션들의 각각은 상기 데이타 베이스 액세스 명령들중의 하나에 대응하는 것을 특징으로 하는 관계형 데이타 베이스 시스템에 대한 액세스 플랜 발생 방법.
  3. 복수의 데이타 베이스 객체들을 갖는 관계형 데이타 베이스에 대한 액세스 플랜을 상기 데이타 베이스 객체들을 액세스하기 위해 사용되는 복수의 데이타 베이스 액세스 명령들로부터 발생시키는 컴퓨터 시스템에 있어서, 상기 복수의 데이타 베이스 액세스 명령들을 상기 액세스 플랜에 포함시키기 위해 제1의 실행가능 코드 집합으로 컴파일하기 위한 수단과, 상기 데이타 베이스 액세스 명령들을 컴파일하는 동안, 상기 복수의 데이타 베이스 액세스 명령들의 실행동안에 이용되는 선택된 데이타 베이스 객체들간의 제약요건 관계를 결정하기 위한 수단과, 상기 데이타베이스 액세스 명령들을 컴파일하는 동안, 상기 제약요건 관계를 만족하기 위한 복수의 제2의 실행가능 코드 집합들을 발생시키는 수단과, 상기 데이타 베이스 액세스 명령들을 컴파일하는 동안, 상기 제1의 실행가능 코드 집합과 상기 복수의 제2의 실행가능 코드 집합들을 병합하여 상개 데이타 베이스 액세스 명령들을 실행시키기 위한 코드와 상기 액세스 플랜내에서 제약요건 관계를 만족하기 위한 코드 모두를 갖는 액세스 플랜을 형성하기 위한 수단을 구비한 것을 특징으로 하는 관계형 데이타 베이스에 대한 액세스 플랜을 발생시키는 컴퓨터 시스템.
  4. 제3항에 있어서, 상기 액세스 플랜은 복수의 액세스 섹션들을 포함하며, 상기 복수의 액세스 섹션들의 각각은 상기 데이타 베이스 액세스 명령들중의 하나에 대응하는 것을 특징으로 하는 관계형 데이타 베이스에 대한 액세스 플랜을 발생시키는 컴퓨터 시스템.
  5. 제4항에 있어서, 상기 복수의 제2의 실행가능 코드 집합들의 각각은 상기 복수의 데이타 베이스 액세스 명령들중의 하나와 관련되어 있는 것을 특징으로 하는 관계형 데이타 베이스에 대한 액세스 플랜을 발생시키는 컴퓨터 시스템.
  6. 데이타 베이스 시스템에서 데이타 테이블에 대해 데이타 베이스 연산을 수행하는 방법에 있어서, 각각의 액세스 플랜이 데이타 베이스 연산들중 선택된 그룹에 대응하고 데이타 베이스내의 테이블들을 액세스하기 위한 컴파일된 코드를 포함하고 있으며, 각각의 액세스 플랜이 테이블 액세스 동안 제약 요건 검사를 수행하여 데이타 베이스의 참조 무결성에 매치하지 않는 데이타 베이스 연산들의 실행을 예방하기 위한 코드를 포함하는 상기 복수의 액세스 플랜을 제공하는 단계와, 대응하는 액세스 플랜내의 상기 컴파일된 액세스용 코드를 실행함으로써 데이타 베이스 액세스를 수행하는 단계와, 상기 데이타 베이스 액세스를 수행하는 단계 동안에 상기 대응하는 액세스 플랜내에 포함된 제약 요건 검사용 코드를 실행함으로써 데이타 베이스의 참조 무결성을 만족시키는 단계등의 컴퓨터 시스템에 의해 수행되는 상기 단계들을 특징으로 하는 데이타 베이스 연산 수행 방법.
  7. 제6항에 있어서, 액세스 플랜을 제공하는 상기 단계가 제공된 각각의 액세스 플랜에 대해서 소스 명령어와 한 집합을 제1의 컴파일된 코드의 집합으로 컴파일하는 단계와, 상기 컴파일 단계 동안에, 데이타 베이스의 참조 무결성을 보장하기 위하여 상기 제1의 컴파일된 코드의 집합을 실행시키는 동안 어느 제약 요건들을 검사해야 하는지를 결정하는 단계와, 데이타 베이스의 참조 무결성을 만족하기 위해 필요한 명령어들을 포함하는 제2의 컴파일된 제약 요건 검사용 코드의 집합을 제공하는 단계와, 상기 제1 및 제2의 컴파일된 코드의 집합들을 데이타 베이스내의 테이블들을 액세스하기 위한 컴파일된 코드와 테이블 액세스 동안 제약 요건 검사를 수행하기 위한 코드 모두를 포함하는 단일 액세스 플랜으로 병합시키는 단계를 구비한 것을 특징으로 하는 데이타 베이스 연산 수행 방법.
  8. 제7항에 있어서, 상기 제1의 컴파일된 코드의 집합의 복수의 컴파일된 코드의 부분 집합으로 구성되어 있으며, 각각의 부분집합은 하나의 소스 명령어에 대응하는 것을 특징으로 하는 데이타 베이스 연산 수행 방법.
  9. 제8항에 있어서, 상기 제2의 컴파일된 코드의 집합을 복수의 부분 집합들로 구성되어 있으며, 상기 제2의 집합의 부분 집합은 각각 상기 제1의 복수의 부분 집합과 관련되어 있는 것을 특징으로 하는 데이타 베이스 연산 수행 방법.
KR1019900014423A 1989-10-13 1990-09-13 관계형 데이타베이스에 대한 액세스플랜 발생 방법 및 시스템 KR940004389B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US42147889A 1989-10-13 1989-10-13
US421478 1989-10-13

Publications (2)

Publication Number Publication Date
KR910008600A KR910008600A (ko) 1991-05-31
KR940004389B1 true KR940004389B1 (ko) 1994-05-23

Family

ID=23670693

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900014423A KR940004389B1 (ko) 1989-10-13 1990-09-13 관계형 데이타베이스에 대한 액세스플랜 발생 방법 및 시스템

Country Status (5)

Country Link
US (1) US5386557A (ko)
EP (1) EP0428264A3 (ko)
JP (1) JPH0820983B2 (ko)
KR (1) KR940004389B1 (ko)
CN (1) CN1029050C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100405745B1 (ko) * 1999-09-30 2003-11-15 가부시끼가이샤 도시바 다수의 데이터 연산모듈을 이용한 데이터 관리시스템과 데이터 관리방법 및 컴퓨터이용가능 매체

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5604899A (en) * 1990-05-21 1997-02-18 Financial Systems Technology Pty. Ltd. Data relationships processor with unlimited expansion capability
US5412806A (en) * 1992-08-20 1995-05-02 Hewlett-Packard Company Calibration of logical cost formulae for queries in a heterogeneous DBMS using synthetic database
US5488722A (en) * 1993-05-28 1996-01-30 International Business Machines Corporation System and method for automating implementation and execution of constraint most likely to be violated in a database
US5504886A (en) * 1993-07-02 1996-04-02 International Business Machines Corporation System and method for applying user supplied relation definitions to application files for a relational database
GB2297181B (en) * 1993-09-24 1997-11-05 Oracle Corp Method and apparatus for data replication
US6163783A (en) * 1993-12-16 2000-12-19 Bmc Software, Inc. Check data operation for DB2
US5513350A (en) * 1994-05-27 1996-04-30 At&T Corp. Update constraints in transactions which may abort
US5694598A (en) * 1994-10-12 1997-12-02 U S West Technologies, Inc. Method for mapping data between a relational format and an object-oriented format
US5706494A (en) * 1995-02-10 1998-01-06 International Business Machines Corporation System and method for constraint checking bulk data in a database
US5546576A (en) * 1995-02-17 1996-08-13 International Business Machines Corporation Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US5761477A (en) * 1995-12-04 1998-06-02 Microsoft Corporation Methods for safe and efficient implementations of virtual machines
US5751595A (en) * 1996-03-14 1998-05-12 International Business Machines Corporation Method for building and verifying authenticity of a rule system
US5899993A (en) * 1996-08-07 1999-05-04 Oracle Corporation Method and apparatus for achieving an enforced and valid constraint state
DE19725965C2 (de) * 1997-06-19 2000-07-27 Naser Abdelwahab Verfahren eines deduktiven Kataloges zur allgemeinen Constraintsbehandlung im erweiterten relationalen Datenbankkonzept
US5873075A (en) * 1997-06-30 1999-02-16 International Business Machines Corporation Synchronization of SQL actions in a relational database system
US6115720A (en) * 1997-12-15 2000-09-05 International Business Machines Corportion Method and apparatus for performing a health check on a database system
US6427143B1 (en) * 1998-04-10 2002-07-30 Computer Associates Think, Inc. Method for loading rows into a database table while enforcing constraints
US6304876B1 (en) 1998-06-05 2001-10-16 Computer Associates Think, Inc. Method for enforcing integrity constraints in a database table using an index
US6189010B1 (en) * 1998-06-10 2001-02-13 Platinum Technology, Inc. Method for repairing constraint violations in a database management system
US6295539B1 (en) * 1998-09-14 2001-09-25 Computer Associates Think, Inc. Dynamic determination of optimal process for enforcing constraints
US6606626B1 (en) 1998-10-20 2003-08-12 Sybase, Inc. Database system with lock manager enhancement for improving concurrency
US6363387B1 (en) * 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
US6745332B1 (en) * 1999-06-29 2004-06-01 Oracle International Corporation Method and apparatus for enabling database privileges
US6339772B1 (en) 1999-07-06 2002-01-15 Compaq Computer Corporation System and method for performing database operations on a continuous stream of tuples
US6453313B1 (en) * 1999-07-06 2002-09-17 Compaq Information Technologies Group, L.P. Database management system and method for dequeuing rows published to a database table
US6304873B1 (en) * 1999-07-06 2001-10-16 Compaq Computer Corporation System and method for performing database operations and for skipping over tuples locked in an incompatible mode
US6397227B1 (en) * 1999-07-06 2002-05-28 Compaq Computer Corporation Database management system and method for updating specified tuple fields upon transaction rollback
CA2279222C (en) * 1999-07-30 2002-07-16 Ibm Canada Limited-Ibm Canada Limitee Direct call threaded code
US6339777B1 (en) 1999-07-30 2002-01-15 International Business Machines Corporation Method and system for handling foreign key update in an object-oriented database environment
US6453314B1 (en) 1999-07-30 2002-09-17 International Business Machines Corporation System and method for selective incremental deferred constraint processing after bulk loading data
US6542883B1 (en) 2000-03-09 2003-04-01 International Business Machines Corporation Ordering relational database operations according to referential integrity constraints
US6556973B1 (en) * 2000-04-19 2003-04-29 Voxi Ab Conversion between data representation formats
US7440962B1 (en) 2001-02-28 2008-10-21 Oracle International Corporation Method and system for management of access information
WO2003003245A1 (en) * 2001-06-26 2003-01-09 Nokia Corporation Indexing method and system for relational databases
US8600799B2 (en) * 2001-11-27 2013-12-03 Siebel Systems, Inc. Method and system for sales-credit assignment via time-based organization hierarchies
US8027869B2 (en) * 2001-11-27 2011-09-27 Siebel Systems, Inc. Method and system for monitoring achievement and attainment and calculating compensation via time-based organization hierarchies
US7937284B2 (en) * 2001-11-27 2011-05-03 Siebel Systems, Inc. Method and system for managing time-based organization hierarchies
US7421436B2 (en) * 2001-12-21 2008-09-02 International Business Machines Corporation Decentralized many-to-many relationship management in an object persistence management system
EP1349081A1 (en) * 2002-03-28 2003-10-01 LION Bioscience AG Method and apparatus for querying relational databases
US7502791B2 (en) * 2002-11-26 2009-03-10 Norsync Technology A/S Database constraint enforcer
US7519952B2 (en) * 2003-07-28 2009-04-14 International Business Machines Corporation Detecting an integrity constraint violation in a database by analyzing database schema, application and mapping and inserting a check into the database and application
DE602004022517D1 (de) * 2004-06-15 2009-09-24 Sap Ag Datenverarbeitungssystem und -verfahren, um Datenbankreplikationen zu überwachen
WO2009050167A1 (en) * 2007-10-18 2009-04-23 International Business Machines Corporation A method, apparatus and computer program for migrating records in a database from a source database schema to a target database schema
US20100082646A1 (en) * 2008-09-26 2010-04-01 Microsoft Corporation Tracking constraints and dependencies across mapping layers
US8924921B2 (en) * 2009-04-20 2014-12-30 International Business Machines Corporation Abstracting business logic into centralized database controls
US8250048B2 (en) * 2009-04-20 2012-08-21 Oracle International Corporation Access control for graph data
US8301660B2 (en) * 2009-07-22 2012-10-30 Oracle International Corporation Enforcing restrictions for graph data manipulation operations
US9275033B2 (en) * 2010-03-25 2016-03-01 Salesforce.Com, Inc. System, method and computer program product for creating an object within a system, utilizing a template
US9026561B2 (en) 2012-07-02 2015-05-05 International Business Machines Corporation Automated report of broken relationships between tables
US20140149360A1 (en) * 2012-11-27 2014-05-29 Sap Ag Usage of Filters for Database-Level Implementation of Constraints
CN103345501A (zh) * 2013-06-27 2013-10-09 华为技术有限公司 数据库更新方法和装置
US10659389B2 (en) * 2014-07-16 2020-05-19 Nec Corporation Efficient cascading of flow tables in software defined networks (SDN)
DE102015013593A1 (de) 2015-10-15 2017-04-20 makmad.org e.V. Effizientes Verfahren zur logischen Vervollständigung eines deduktiven Kataloges zur allgemeinen Constraintsbehandlung im erweiterten relationalen Datenbankkonzept
US11113281B2 (en) 2016-10-14 2021-09-07 Elnaserledinellah Mahmoud Elsayed Abdelwahab Efficient method for logical completion of a deductive catalogue used for general constraints treatment in the extended relational database concept
DE102018008923A1 (de) 2018-10-09 2020-05-20 makmad.org e. V. Verfahren zur Erstellung einer effizienten, logisch vollständigen, ontologischen Ebene im erweiterten relationalen Datenbankkonzept

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4330822A (en) * 1971-09-02 1982-05-18 Burroughs Corporation Recursive system and method for binding compiled routines
US4104718A (en) * 1974-12-16 1978-08-01 Compagnie Honeywell Bull (Societe Anonyme) System for protecting shared files in a multiprogrammed computer
US4506326A (en) * 1983-02-28 1985-03-19 International Business Machines Corporation Apparatus and method for synthesizing a query for accessing a relational data base
US4829427A (en) * 1984-05-25 1989-05-09 Data General Corporation Database query code generation and optimization based on the cost of alternate access methods
US4769772A (en) * 1985-02-28 1988-09-06 Honeywell Bull, Inc. Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases
JP2602205B2 (ja) * 1986-01-16 1997-04-23 株式会社日立製作所 データベース・アクセス制御方法
JP2644728B2 (ja) * 1986-01-27 1997-08-25 株式会社日立製作所 データディクショナリ・ディレクトリシステム
US4918593A (en) * 1987-01-08 1990-04-17 Wang Laboratories, Inc. Relational database system
US5018067A (en) * 1987-01-12 1991-05-21 Iameter Incorporated Apparatus and method for improved estimation of health resource consumption through use of diagnostic and/or procedure grouping and severity of illness indicators
US4933848A (en) * 1988-07-15 1990-06-12 International Business Machines Corporation Method for enforcing referential constraints in a database management system
US4947320A (en) * 1988-07-15 1990-08-07 International Business Machines Corporation Method for referential constraint enforcement in a database management system
EP0360387B1 (en) * 1988-09-23 1996-05-08 International Business Machines Corporation Data base management system
US5197005A (en) * 1989-05-01 1993-03-23 Intelligent Business Systems Database retrieval system having a natural language interface

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100405745B1 (ko) * 1999-09-30 2003-11-15 가부시끼가이샤 도시바 다수의 데이터 연산모듈을 이용한 데이터 관리시스템과 데이터 관리방법 및 컴퓨터이용가능 매체

Also Published As

Publication number Publication date
EP0428264A3 (en) 1992-11-19
US5386557A (en) 1995-01-31
JPH03131941A (ja) 1991-06-05
CN1029050C (zh) 1995-06-21
KR910008600A (ko) 1991-05-31
CN1050937A (zh) 1991-04-24
EP0428264A2 (en) 1991-05-22
JPH0820983B2 (ja) 1996-03-04

Similar Documents

Publication Publication Date Title
KR940004389B1 (ko) 관계형 데이타베이스에 대한 액세스플랜 발생 방법 및 시스템
Blasgen et al. System R: An architectural overview
US5448727A (en) Domain based partitioning and reclustering of relations in object-oriented relational database management systems
Chamberlin et al. Support for repetitive transactions and ad hoc queries in System R
US6439783B1 (en) Range-based query optimizer
US6304867B1 (en) System and method for enhanced performance of a relational database management system through the use of application-specific memory-resident data
US6105033A (en) Method and apparatus for detecting and removing obsolete cache entries for enhancing cache system operation
US4931928A (en) Apparatus for analyzing source code
US6128610A (en) Index with entries that store the key of a row and all non-key values of the row
US5819282A (en) Database generator
US6338056B1 (en) Relational database extender that supports user-defined index types and user-defined search
US5499365A (en) System and method for controlling versions of objects in an object oriented computing environment
US7103588B2 (en) Range-clustered tables in a database management system
US6098075A (en) Deferred referential integrity checking based on determining whether row at-a-time referential integrity checking would yield the same results as deferred integrity checking
EP0351209A2 (en) Method of performing operations in a relational data base management system
US6343286B1 (en) Efficient technique to defer large object access with intermediate results
JPH09171478A (ja) 改良された索引によるアクセスを使用するデータベース管理システム
Whang et al. Office-by-example: an integrated office system and database manager
KR19980069967A (ko) 관계형 데이타베이스를 위한 질의 트리에서 벡터 연산을 채용한방법 및 시스템
KR940004388B1 (ko) 지정된 데이타베이스 억세스 플랜 무효화 방법
US7974968B2 (en) Direct call threaded code
Meier et al. An architecture for prolog extensions
Hong et al. Associative hardware and software techniques for integrity control
Doberkat et al. ProSet—-Prototyping with Sets: Language Definition
Yost by MW Blasgen, MM Astrahan, DD Chamberlin, J. N. Gray, W. F. King, B. G. Lindsay, RA Lorie, JW Mehl, TG Price, GR Putzolu, M. Schkolnick, P. G. Selinger, DR Slutz, H. R. Strong, 1. L. Traiger, 6. W. Wade, and

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20030307

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee