| English | 의미 |
|---|---|
| table/ˈteɪbl/ | 표 |
| relational database/rɪˈleɪʃənl ˈdeɪtəbeɪs/ | 관계형 데이터베이스 |
| flat files/flæt faɪlz/ | 플랫 파일 |
| data redundancy/ˈdeɪtə rɪˈdʌndənsi/ | 데이터 중복 |
| data inconsistency/ˈdeɪtə ˌɪnkənˈsɪstənsi/ | 데이터 일관성 부족 |
| integrity/ɪnˈteɡrɪti/ | 무결성 |
| field/fiːld/ | 필드 |
| entity/ˈentɪti/ | 엔티티 |
| record/ˈrekɔːd/ | 레코드 |
| tuple/ˈtuːpl/ | 튜플 |
| attribute/ˈætrɪbjuːt/ | 속성 |
| primary key/ˈpraɪməri kiː/ | 주키 |
| composite key/ˈkɒmpəzɪt kiː/ | 복합 키 |
| candidate key/ˈkændɪdeɪt kiː/ | 후보 키 |
| secondary key/ˈsekəndəri kiː/ | 서브 키 |
| indexing/ˈɪndeksɪŋ/ | 인덱싱 |
| foreign key/ˈfɒrən kiː/ | 외부 키 |
| referential integrity/ˌrefəˈrenʃl ɪnˈteɡrɪti/ | 참조 무결성 |
| one-to-many/wʌn tə ˈmeni/ | 일대다 관계 |
| many-to-many/ˈmeni tə ˈmeni/ | 다대다 관계 |
IBM이 원하지 않은 논문
- 1970년 IBM 연구원 에드거 코드는 12페이지 분량의 논문을 발표하여, 데이터를 단순한 표에 저장하고 공유된 값으로 연결하며, 디스크 상의 위치가 아닌 원하는 것을 무엇이라고 말하는 언어로 요청하라고 제안했습니다.
- 이미 데이터 Trees 구조로 파일 레이아웃에 묶여 있는数据库를 판매하던 IBM은 그를 수년간 무시했습니다. 레이아웃이 변경될 때마다 해당 파일을 사용한 모든 프로그램을 다시 써야 했습니다.
- 1980년대에는 모든 은행, 항공사 및 정부 부처가 코드의 표로 전환되었습니다. 반세기 후에도 여전히 이 방식이運行되고 있습니다.
- 이 교훈은 파일 기반 접근법의 문제점, 관계형数据库가 이를 어떻게 해결하는지, 그리고 정확히 사용해야 할 용어입니다.
파일 기반 접근법
- 데이터베이스 이전에는 각 프로그램이 자체적인 플랫 파일을 유지했다. 판매 프로그램에는 고객 파일, 회계 프로그램에는 다른 파일, 배송 프로그램에는 또 다른 파일이 있었다.
- 각 파일은 프로그램 코드에 의존하는 고정된 레이아웃을 가졌으며, 프로그램 외부에 있는 것은 그 안에 무엇이 있는지 모릅니다.
- 작은 단일 프로그램에게는 작동합니다. 두 번째 프로그램이 동일한 데이터를 필요로할 때부터 문제가 시작됩니다.

세 개의 프로그램, 고객의 세 가지 복사본
제한점
- 데이터 중복: 같은 데이터(고객 주소)가 여러 파일에 저장되어 있어 저장소와 노력이 낭비됩니다.
- 데이터 일관성 부족: 복사본이 개별적으로 업데이트되어 서로 멀어지며, 어느 것이 맞는지 아무도 모릅니다.
- 데이터 종속성: 프로그램이 파일 형식에 묶여 있으므로 레이아웃 변경 시 해당 파일을 사용하는 모든 프로그램을 다시 써야 합니다.
- 무결성을 enforcing하기 어렵고, 데이터를 안전하게 공유하기 어려우며, 파일 간 검색이 느리고, 보안 설정을 필드 단위로 지정할 수 없습니다.
고객의 주소를 여러 개별 파일에 저장하면:
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
여러 곳에 동일한 데이터를 보관(중복)하면 별도로 업데이트되어 일관성이 깨질 수 있습니다.
플랫 파일 시스템에서는 동일한 데이터가 여러 파일에 중복되어 저장되며, 하나의 복사만 업데이트되면 일관성이 깨질 수 있습니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
이런 중복과 이로 인한 일관성问题是 관계형 모델이 해결하는 핵심 문제입니다.
파일 기반 방식의 제한 사항은 무엇입니까? 적용되는 것을 모두 선택하십시오.
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
중복, 일관성 부족, 데이터 종속성이 명시된 세 가지 한계입니다. 테이블과 연결은 이를 대체하는 관계형 접근방식에 속합니다.
관계형Database가 이에 대응하는 방법
- 관계형Database는 데이터를 표에 저장하며, DBMS라는 하나의 소프트웨어가 관리하고 모든 프로그램이 사용합니다.
- 각 사실은 한 번만 저장되므로 중복과 일관성 문제가 사라집니다: 주소가 한 곳에서 변경되면 모든 프로그램이 변경 사항을 확인합니다.
- 프로그램은 이름으로 DBMS에 데이터를 요청하므로, 저장 방식이 변경되더라도 프로그램은 변경되지 않습니다: 데이터 독립성.
- 무결성 규칙, 접근 권한 및 백업은 중앙에서 관리되며, 모든 테이블은 다른 어떤 테이블과도 검색하거나 연결할 수 있습니다.

하나의 데이터 복사본, 하나의 게이트키퍼
관계형 데이터베이스는 어떻게 데이터 불일치를 제거합니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
한 사본, 한 업데이트, 편차 없음. DBMS는 모든 프로그램에게 동일한 최신 값을 제공합니다.
용어: 테이블, 행(row) 및 열(column)
- 테이블(관계)은 행과 열로 구성된 격자이며, 각 엔티티 유형마다 하나씩 존재합니다. 엔티티란 데이터를 저장하는 대상을 의미합니다:
CUSTOMER,ORDER,PRODUCT. - 레코드는 한 줄, 즉 엔티티의 한实例입니다. 공식 용어는 **튜플(tuple)**입니다.
- 필드는 한 열, 즉 각 레코드에 대한 하나의 정보 항목입니다. 공식 용어는 **속성(attribute)**입니다.

행은 레코드이고, 열은 필드이며, 한 열이 다른 테이블로 이어집니다
SELECT를 사용하여 관계형 테이블 읽기
관계형 테이블은 행(레코드)과 열(필드)로만 구성됩니다. WHERE는 조건에 맞는 행을 유지하고, SELECT는 요청한 열만 남깁니다.
용어: 키(key)
- **주 키(primary key)**는 각 레코드를 고유하게 식별하는 필드 또는 필드의 조합이며, 절대 빈 값(null)이 될 수 없고 중복될 수 없습니다. **복합 키(composite key)**는 두 개 이상의 필드로 구성된 주 키입니다.
- **후보 키(candidate key)**는 주 키로 사용될 수 있는 모든 필드 또는 조합입니다. **보조 키(secondary key)**는 빠른 검색을 위해 인덱싱된 비주 키 필드입니다. **인싱(indexing)**은 필드에 인덱스를 구축하여 조회 및 연결 연산을 빠르게 만듭니다.
- **외부 키(foreign key)**는 다른 테이블의 주 키 값과 일치하여 두 테이블을 연결하는 필드입니다. 약기법으로 주 키는 밑줄이 그어지고 외부 키는 명시됩니다:
CUSTOMER(CustomerID, Name, Phone)
ORDER(OrderID, CustomerID, OrderDate) -- CustomerID is a foreign key → CUSTOMER
주 키:
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
주 키는 각 행을 고유하게 식별합니다. 외래 키는 다른 테이블로 연결하는 키입니다.
각 키 유형을 그 정의로 매칭하십시오.
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
주 키는 행을 식별하고, 외래 키는 다른 테이블로 연결하며, 복합 키는 여러 필드의 조합이며, 후보 키는 가능한 주 키입니다.
다른 테이블의 주 키와 값이 일치하는 필드는 ______ 키입니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
외래 키가 두 테이블 간의 관계를 형성합니다.
풀이 예제: 도서관 데이터베이스의 구성 요소 명명
- 도서관은 자신의 도서, 회원, 그리고 각 대출 기록을 보관합니다. 엔티티를 식별하고 각각에 대한 주 키와 외부 키를 찾으십시오.
- 엔티티:
BOOK,MEMBER,LOAN. 주 키:BookID,MemberID,LoanID. 이는 각 레코드마다 고유하며 절대 공백이 아니므로 선택되었습니다. 제목이나 이름만으로는 부족합니다. 왜냐하면 여러 책이 동일한 제목을 공유할 수 있기 때문입니다. LOAN(LoanID, BookID, MemberID, DateOut, DateDue):BookID과MemberID은 외부 키이며, 각각 해당 테이블의 주 키와 일치합니다. 회원의 전화번호는MEMBER에 포함되어야 하며, 모든 대출 기록에 반복되어 있어서는 안 됩니다.
LOAN(LoanID, BookID, MemberID, DateOut)에서 BookID와 MemberID는 ____ 키입니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
각각 다른 테이블 BOOK과 MEMBER의 주 키와 일치하며 대출 기록을它們에 연결합니다.
관계 및 참조 무결성
- 관계는 두 엔티티를 연결합니다. 일대일: 각 회원은 하나의 도서관 카드를 가집니다. 일대다: 한 회원은 여러 대출 기록을 가지며, 각 대출 기록은 한 회원에게 속합니다. 다대다: 한 책은 여러 저자가 있고, 한 저자는 여러 책을 집필합니다.
- 참조 무결성 referential integrity이란 모든 외부 키 값이 해당 테이블의 기존 주 키와 일치해야 함을 의미합니다: 존재하지 않는 회원에 대한 대출은 없으며, 고아 레코드(orphan records)도 없습니다.
- DBMS가 이를 강제합니다: 알 수 없는 외부 키가 포함된 삽입 요청을 거절하고, 다른 레코드들이 여전히 인용하고 있는 레코드 삭제 요청도 거절합니다.
참조 무결성이 보장하는 것은:
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
고립된 레코드를 방지합니다 — 존재하지 않는 주 키를 참조할 수 없습니다.
각 관계를 그 유형으로 매칭하십시오.
난이도 2/5 · 140 코인 + 오늘 첫 완료 시 소액 보너스
하나의 엔티티가 다른 하나의 엔티티와 연결될 수 있는 개수를 세십시오. 다대다는 저장용 연결 테이블이 필요합니다.
풀이 예제: 참조 무결성이 막는 것
CUSTOMER테이블에서 미결제 주문이 세 건인 고객이 삭제되었습니다. 참조 무결성이 어떻게 적용되는지 설명하십시오.- 각 주문의
CustomerID은 기존 고객과 일치해야 하는 외부 키입니다. 고객을 삭제하면 세 건의 주문이 더 이상 존재하지 않는 레코드를 가리키게 되어 고아 레코드가 됩니다. - 따라서 DBMS는 주문이 삭제되거나 재할당되기 전까지 삭제를 거절합니다. 또는 캐스케이드 설정이 되어 있다면 주문도 함께 삭제합니다. 어느 경우든 주문은 항상 존재하는 고객을 가리킵니다.
- 규칙을 말하고, 이를 위반하는 것이 무엇인지, 그리고 DBMS가 무엇을 하는지 설명하십시오.
참조 무결성은 다른 테이블의 주문이 아직 해당 고객을 참조하고 있어도 고객을 삭제할 수 있게 합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
그那样会生成孤立的记录。DBMS는 삭제를 거부하거나 주문에도 적용하여 cascade 처리하므로 모든 외래 키는 여전히 유효한 레코드를 가리킵니다.
시험관이 인정하는 정의
| 용어 | 정의 |
|---|---|
| 엔티티 | 데이터가 저장되는 대상, 하나의 테이블로 표현됨 |
| 속성 | 엔티티에 대한 하나의 데이터 항목, 한 열 |
| 튜플 | 테이블의 한 행, 하나의 레코드 |
| 주 키 | 각 튜플을 고유하게 식별하는 속성 또는 속성의 조합 |
| 후보 키 | 주 키로 선택될 수 있는 속성 또는 조합 |
| 보조 키 | 테이블을 빠르게 검색하기 위해 인덱싱된 속성 |
| 외부 키 | 한 테이블에 있는 속성으로, 다른 테이블의 주 키가 되어 연결을 형성함 |
| 참조 무결성 | 모든 외부 키 값이 기존 주 키를 참조함 |
놓칠 수 있는 점
- 튜플은 행이며, 속성은 열입니다. 이 둘을 바꿀 경우 점수를 모두 잃습니다.
- '고유한(unique)'이라는 표현만으로는 주 키를 정의할 수 없습니다. 각 레코드를 식별해야 하며, 절대 빈 값이 되어서는 안 됩니다.
- 외부 키는 반복될 수 있습니다: 한 고객이, 여러 주문을 가질 수 있습니다. 반복될 수 없는 것은 주 키입니다.
- 보조 키는 빠른 검색을 위한 것이며 식별용이 아닙니다. 이를 '두 번째 주 키'라고 부르면 안 됩니다.
이해했습니다
- 파일 기반 방식은 중복, 일관성 부족, 데이터 종속성의 문제를 겪으며, 무결성, 공유, 검색, 보안 기능이 약합니다.
- 관계형 데이터베이스는 각 사실을 테이블에 한 번만 저장하며, 이는 하나의 DBMS가 관리하므로 프로그램은 저장 방식과 독립적이며 규칙은 중앙에서 강제됩니다.
- 엔티티 → 테이블 · 튜플 → 레코드, 행 · 속성 → 필드, 열 · 주 키는 식별하고, 외부 키는 연결하며, 후보 키는 식별 가능하고, 보조 키는 검색을 위해 인덱싱됨
- 참조 무결성: 모든 외부 키가 기존 주 키와 일치하므로 고아 레코드가 없음