logo
작성일

CH2. COMPANY로 보는 ER · 스키마 · 테이블

Authors
  • avatar
    Name
    seren-wib
    Twitter
Contents

COMPANY 하나로 보는 ER · 스키마 · 테이블

같은 COMPANY를 세 층으로 그린 것. ① ER(ch2) → ② 변환한 스키마(ch3 3.4) → ③ 데이터 든 테이블(ch3 3.1). 아래 표는 개념마다 세 그림의 어디인지만 가리킴. 시험 "RDB 그리기" = ①을 보고 ② 그리기

1. ER 다이어그램

COMPANY ER: 개체 4, 관계 6, (min,max)까지
기호뜻
사각형 / 이중 사각형entity type / weak entity type
타원 / 밑줄 / 점선 밑줄attribute / key / partial key
이중 타원 / 점선 타원 / 가지 친 타원multivalued / derived / composite
마름모 / 이중 마름모relationship / identifying relationship. 이중 마름모는 약한 개체(이중 사각형)를 주인 개체에 묶어 주는 관계. 이게 있어야 약한 개체가 누구 건지 찍힘. COMPANY에선 DEPENDENTS_OF(직원–부양가족) 하나 (6절)
선 한 줄 / 두 줄partial / total participation
1, N, Mcardinality ratio (상대편 최대 몇 개)
보라 (min,max)이 개체 하나가 관계에 최소·최대 몇 번. min 0 = 한 줄, min ≥ 1 = 두 줄

2. 관계형 스키마

COMPANY 관계형 스키마: 테이블 6개, PK 밑줄, FK 화살표
  • 테이블 6개 = 사각형 4 + M:N 마름모 1(WORKS_ON) + 이중 타원 1(DEPT_LOCATIONS)
  • 화살표는 전부 FK → PK. 화살표 7개 = 1:N 마름모 2(Dno, Dnum) + 1:1 마름모 1(Mgr_ssn) + 재귀 1(Super_ssn) + M:N 2(Essn, Pno) + 이중 마름모 1(DEPENDENT.Essn) + 이중 타원 1(Dnumber)
  • 이중 마름모(DEPENDENTS_OF)는 테이블을 따로 안 만들고, 약한 개체 DEPENDENT에 주인 PK(Essn)를 붙이는 걸로 끝. 그 Essn이 FK이면서 DEPENDENT PK의 일부
  • 이름 바뀜 주의: Number → Dnumber/Pnumber, Name → Dname/Pname, EMPLOYEE.Ssn을 가져가면 Essn·Mgr_ssn·Super_ssn

3. 테이블 (relation state)

COMPANY 테이블 6개에 튜플 넣은 모습
  • 머리줄 = schema, 그 아래 행들 = state. 행 추가·삭제해도 머리줄은 그대로
  • FK 칸 값은 반드시 상대 테이블 PK에 있는 값이거나 NULL. 그림 오른쪽 아래 다섯 줄이 삽입·삭제 위반 판정

4. 개체와 속성

개념뜻① ER② 스키마③ 테이블
Entity type데이터로 남기고 싶은 "것"의 종류. 직원, 부서, 프로젝트처럼 같은 속성을 가진 개체들의 틀. ER에선 사각형 하나, 테이블로 가면 테이블 하나
Entity그 틀에 들어가는 실제 하나. 직원 John Smith 한 명. ER엔 안 그리고, 테이블에선 행 하나안 그림—
Entity set같은 틀의 개체 전부. 직원 전원. 사각형 하나가 이 전부를 대표하고, 테이블에선 행 전체—
Attribute개체가 갖는 값 하나. 직원의 급여. ER에선 사각형에 선으로 매단 타원, 테이블에선 열 하나
Key attribute값이 개체마다 달라서 그 값만 알면 누군지 찍히는 속성. Ssn 알면 직원 한 명. 밑줄 친 타원. 한 사각형에 둘 이상 있을 수 있고(DEPARTMENT의 Name, Number), 테이블로 가면 그중 하나가 PK
Composite attribute더 작은 속성으로 쪼개지는 속성. Name = Fname + Minit + Lname. 타원에서 가지 친 타원들. 테이블엔 끝 가지만 열로 들어가고 Name 열은 없음Fname, Minit, Lname 열 3개
Multivalued attribute개체 하나에 값이 여러 개 들어가는 속성. 부서 하나가 Bellaire, Sugarland 두 곳. 타원 두 겹. 테이블 한 칸엔 값 하나만 들어가서 테이블을 따로 뺌
Derived attribute저장 안 하고 다른 데서 계산하는 속성. 부서 직원 수는 EMPLOYEE 세면 나옴. 점선 타원. 테이블엔 열 없음

5. 관계

개념뜻① ER② 스키마③ 테이블
Relationship type두 entity type이 어떻게 엮이는지. 직원이 부서에서 일함 = WORKS_FOR. 사각형 사이 마름모. 테이블로 가면 FK 열이거나 새 테이블
Relationship instance그 관계의 실제 사실 하나. Smith가 5번 부서에서 일함. ER엔 안 그림. 테이블에선 FK 칸 값 하나안 그림—
Degree관계 하나에 entity type이 몇 개 끼는지. 직원–부서면 2(binary), 공급자–프로젝트–부품처럼 셋이 한 번에 엮이면 3(ternary). 마름모에 선으로 붙은 사각형 수를 세면 됨행마다 FK 3개
Cardinality 1:N한쪽 개체 하나가 반대쪽 개체 여러 개와 묶이고, 반대쪽 하나는 이쪽 하나하고만 묶임. 부서 하나에 직원 여럿, 직원은 부서 하나. 선 위 1과 N. 테이블로 가면 N쪽에 FK
Cardinality 1:1양쪽 다 개체 하나가 반대쪽 개체 하나하고만 묶임. 부서 하나에 관리자 한 명, 그 직원은 부서 하나만 관리. 선 위 1과 1. FK는 두 줄 쪽에
Cardinality M:N양쪽 다 하나가 여럿과 묶임. 직원 하나가 프로젝트 여럿, 프로젝트 하나에 직원 여럿. 선 위 M과 N. FK 칸 하나론 못 담아서 새 테이블
Total participation그쪽 개체는 하나도 빠짐없이 관계에 들어감. 부서 없는 직원 없음. 사각형–마름모 선이 두 줄. 테이블에선 그 FK 칸이 안 빔
Partial participation관계에 안 들어가는 개체가 있어도 됨. 관리자 아닌 직원 있음. 선이 한 줄. 테이블에선 그 칸이 NULL일 수 있음
(min, max)개체 하나가 그 관계에 최소 몇 번, 최대 몇 번 들어가는지. 직원은 부서 관리를 0번 또는 1번 = (0,1), 부서는 관리자가 딱 1명 = (1,1). min 0이면 한 줄, min 1 이상이면 두 줄, max가 1이냐 N이냐가 위의 비율min ≥ 1 → NOT NULL / max 1 → FK 열 하나, max N → 새 테이블—
Relationship attribute개체가 아니라 관계에 붙는 값. 근무 시간은 직원 것도 프로젝트 것도 아니고 "직원이 그 프로젝트에서" 일한 시간. 마름모에 매단 타원. 테이블에선 FK가 간 테이블로 따라감
Recursive relationship한 entity type이 자기 자신과 맺는 관계. 직원이 직원을 감독. 마름모 양쪽 선이 같은 사각형으로 들어감. 테이블에선 자기 PK를 가리키는 FK
Role name한 관계에서 각 쪽이 맡는 역할 이름. 감독하는 쪽 supervisor, 받는 쪽 supervisee. 선 옆 글씨. 재귀는 양쪽 사각형이 같아서 이게 없으면 어느 선이 어느 쪽인지 모름FK 열 이름으로 남음 (Super_ssn)—

6. 약한 개체

개념뜻① ER② 스키마③ 테이블
Weak entity type자기 속성만으론 어느 개체인지 못 찍는 entity type. 부양가족 "Alice"는 여럿이라 누구 딸인지 알아야 함. 사각형 두 겹. 테이블로 가면 주인 PK 열이 붙음
Owner약한 개체가 기대는 entity type. Alice의 직원. 두 겹 마름모 건너편 사각형. 그 PK가 약한 개체 테이블로 들어감Essn이 가리키는 EMPLOYEE—
Identifying relationship약한 개체를 주인과 이어 주는 관계. 마름모 두 겹, 약한 쪽 선은 항상 두 줄(주인 없는 부양가족 없음). 테이블은 따로 안 만들고 FK 열이 그 역할—
Partial key같은 주인 밑에서만 구분되는 속성. 한 직원의 부양가족끼린 이름 안 겹침. 타원에 점선 밑줄. 테이블 PK = 주인 PK + 이것

7. 관계형 모델 · 키 · 무결성

개념뜻① ER② 스키마③ 테이블
Relation테이블 하나. ER 사각형(이중 사각형 포함) 하나, M:N 마름모 하나, 이중 타원 하나가 각각 테이블 하나가 됨. 1:1·1:N 마름모, 이중 마름모, 재귀 마름모는 테이블 안 만들고 FK 열로 끝. relationship(마름모)이랑 이름 비슷한데 다른 말
Relation schema테이블의 틀. 이름 + 열 이름. EMPLOYEE(Fname, …, Dno). ER에선 사각형 + 거기 매단 타원들, 스키마 그림이 이거, 테이블 그림에선 머리줄
Relation state그 틀에 지금 들어 있는 행들. 행 넣고 빼면 바뀌지만 schema는 그대로. ER에선 사각형이 대표하는 entity set, 테이블 그림의 머리줄 아래 전부—
Tuple행 하나. 직원 한 명 = entity 하나, 또는 WORKS_ON 한 줄 = 관계 사실 하나안 그림 (entity 하나 / relationship instance 하나)—
Domain그 열에 올 수 있는 값의 범위. Salary는 양의 정수. 범위 밖 값은 못 넣음. ER에선 속성의 value setDDL에서 타입으로
NULL칸에 값이 없음. 모르거나, 해당 안 되거나. 0이나 빈 문자열이 아님. 상사 없는 Borg의 Super_ssn. ER에서 min 0(한 줄)인 쪽이 NULL을 만듦—
Degree관계형에선 테이블 열 개수. 머리줄 상자 세면 됨. ER에선 가지 끝 타원 수 + 받아온 FK 수. ER의 degree(마름모에 붙은 사각형 수)랑 이름만 같고 다른 것
Superkey그 열들 값이 같은 행이 둘 있을 수 없는 열 묶음. {Dnumber}도 되고 {Dnumber, Dname}처럼 군더더기 붙여도 됨안 그림—
Keysuperkey 중 한 열이라도 빼면 superkey가 안 되는 것. {Dname}, {Dnumber} 각각. 여러 개면 전부 후보. ER에선 밑줄 타원 하나하나가 key—
Primary key후보 중 테이블 대표로 고른 하나. Dnumber. 밑줄. 테이블에서 중복도 NULL도 없는 열안 그림 (ER은 밑줄만 치고, 그중 하나를 스키마에서 고름)
Foreign key다른 테이블(또는 자기 테이블) PK 값을 담아서 그 행을 가리키는 열. EMPLOYEE.Dno = 5는 DEPARTMENT의 5번 행. 스키마에선 화살표. ER에선 1:N·1:1 마름모, 이중 마름모, 이중 타원, 재귀 마름모가 전부 FK가 됨
PK이면서 FK남의 PK를 가져왔는데 그게 자기 PK의 일부이기도 한 열. WORKS_ON의 Essn, Pno는 M:N 마름모에서, DEPENDENT의 Essn은 이중 마름모에서 옴. 노랑+파랑 반반
Key constraintPK 값이 같은 행 두 개 금지. Ssn 123456789 직원 둘 못 넣음. ER에선 key 속성(밑줄 타원)이 개체마다 다르다는 뜻밑줄
Entity integrityPK 칸은 NULL 금지. Ssn 빈 직원은 누군지 모르니까. ER에선 key 속성 없는 개체는 못 찍음밑줄 열
Referential integrityFK 칸 값은 상대 테이블 PK에 실제 있는 값이거나 NULL. Dno = 7인데 7번 부서 없으면 위반. ER에선 마름모 건너편에 그 개체가 실제로 있어야 한다는 뜻화살표 끝에 그 값 있어야
위반 검사삽입은 Key·Entity·Referential 셋 다 봄. 삭제는 지우는 행을 남이 FK로 가리키는지만. 갱신은 삭제 + 삽입으로 보면 됨안 그림—그림 ③ 오른쪽 아래