Trabalho 1 Bd2
C

Trabalho 1 Bd2

이 활동은 메타데이터 파일과 데이터 파일을 읽어 ‘select * from table’을 시뮬레이션하는 것으로 구성됩니다. 이를 위해 세 개의 파일이 제공됩니다: 하나는 테이블 메타데이터(table.dic), 다른 하나는 속성 메타데이터(att.dic), 그리고 나머지 하나는 table.dic에 포함된 테이블 중 하나의 데이터(11.dat)를 담고 있습니다.

GitHub|

T1 - 데이터 파일 읽기

이 활동은 메타데이터와 데이터 파일을 읽어 SELECT * FROM table 연산을 시뮬레이션하는 것을 포함합니다. 이를 위해 세 개의 파일이 제공됩니다: 하나는 테이블 메타데이터(table.dic)를, 다른 하나는 속성 메타데이터(att.dic)를, 그리고 세 번째 파일은 table.dic에 나열된 테이블 중 하나의 실제 데이터를 포함합니다(예: 11.dat).
+-----------+ idtable +---------+
| table.dic |---------------<| att.dic |
+-----------+ +---------+

다음과 같은 기능을 수행하는 C 애플리케이션을 구현하십시오:

  • 실행 시, 프로그램은 데이터베이스 내의 논리적 이름(테이블)에 해당하는 매개변수(문자열)를 받아야 합니다. 예를 들어, 프로그램 이름이 select인 경우, 명령줄 입력(리눅스 기준)은 ./select table이 됩니다. 결과는 SELECT * FROM table SQL 쿼리와 동일해야 합니다.
  • 애플리케이션은 매개변수로 전달된 테이블 이름을 table.dic에서 검색해야 하며, 해당 테이블을 찾으면 물리적 이름에 해당하는 파일을 읽기 모드로 열어야 합니다. table.dic의 구조는 다음과 같습니다:

struct ttable {
int idtable; // 테이블 ID
char ctname[20]; // 개념적 테이블 이름
char ptname[20]; // 물리적 테이블 이름
}

  • table.dic에서 논리적 이름을 찾으면, 파일 스키마를 가져오기 위해 att.dic 파일을 열어야 합니다. 이 파일의 구조는 다음과 같습니다:

struct tatt {
int idtable; // 테이블 ID
char atname[20]; // 속성의 이름
char attype; // S (문자열) I (정수) F (실수) (C 문자)
char isKey; // 1은 기본 키임
char atopt; // 필수 (0) 선택 (1)
int atlen; // 길이
}

생성된 소스 코드가 포함된 ZIP 파일을 제출하십시오(별도의 .h 및 .c 파일을 사용하는 것이 권장됨). 모든 내용이 단일 파일에 포함되어 있다면 해당 소스 파일만 제출해도 됩니다. ZIP 파일 또는 소스 파일의 이름은 본인의 학생 ID 번호여야 합니다. 예시:
table.dic의 인스턴스 중
<1, "car", "xyz.dat">, <2, "owner", "d001.dat">가 있고,
att.dic의 인스턴스 중
<1, "model", 'S', 1, 0, 30>, <1, "year", 'I', 0, 0, 4>,
<2, "issn", 'S', 1, 0, 12>, <2, "name", 'S', 0, 0, 30>

애플리케이션 이름이 selectDB인 경우, 리눅스에서 실행하는 명령은 ./selectDB owner가 됩니다(여기서 “owner”는 테이블 이름, 즉 논리적 이름을 나타냅니다).

d001.dat 파일에는 att.dic 파일 내 테이블 ID 2(“owner”)에 해당하는 스키마를 따르는 데이터가 포함됩니다. 구체적으로, "issn"(12자 문자열, 필수 항목이자 키)과 "name"(30자 문자열, 필수 항목, 키 아님)입니다.

마지막으로, 물리 파일(d001.dat)의 내용을 나열해야 합니다. 간편을 위해 선택적 속성은 모두 필수로 간주하므로 별도로 처리할 필요가 없습니다. 권장 출력 형식:
issn name

002322 John Wayne
230011 Anthony Hopkins
450001 Greta Garbo

제안된 과제의 경우, table.dic 및 att.dic에는 "student", "course", "enrollment" 테이블에 대한 메타데이터가 저장되어 있습니다. "student" 테이블에 대한 물리 파일만 제공되었습니다. 이 테이블을 사용하여 테스트를 수행하십시오. 채점 시에는 "student" 테이블 외에도 "course" 및 "enrollment" 테이블을 사용할 것입니다.