https://youtu.be/8LECQNBJ5Uc?si=stoeAlsPxuX3Qksg
1. 개체와 객체 타입 이해
1-1. 개체와 객체 타입의 기본 이해
- 개체는 디지털화된 현실 세계의 식별 가능한 대상임
- 객체 타입은 개체를 구성하는 속성의 유일한 타입을 의미함
- 객체 타입은 개체 인스턴스 생성 시 중요한 정보로 작용함
- 개체 인스턴스는 특정 개체 타입에 의해 생성되며, 이들을 개체라고 함
- (중요) 객체 타입은 다른 개체 타입과 관계를 형성하며, 이를 통해 다양한 정보를 식별하고 활용할 수 있음
1-2. 객체 타입의 정의와 고려 사항
- 객체 타입은 개체명과 개체 속성을 정의하며, 명세화해야 함
- 객체 타입 정의 시, 약어 사용을 최소화하고, 명확하게 표현해야 함
- 속성은 개체의 정보를 나타내는 고유의 특성으로, 가장 작은 단위인 원자값을 가짐
- 속성은 기본 속성, 설계 속성, 파생 속성으로 나눠짐
- (중요) 설계 속성은 추가적인 속성의 영향을 받아 정의되며, 파생 속성은 다른 속성의 영향을 받음
1-3. 객체 타입의 구성 방식과 식별자 이해
- 객체 타입의 구성 방식에 따라 기본키와 외래키로 나뉨
- 식별자는 각 개체를 유일하게 구분할 수 있는 결정자를 의미함
- 식별자는 주식별자와 보조 식별자로 나뉨
- (중요) 단일 식별자는 자신의 속성 복합 식별자를 하나의 속성으로 묶음
- 복합 식별자는 여러 개체 타입이 서로 관련된 경우를 의미함
2. 데이터 모델링과 시스템 개발
2-1. 데이터 모델링의 개념과 중요성
- 데이터 모델링은 현실의 정보 구조를 기반으로 개체와 관계를 표현하는 과정
- (중요) 개체들의 논리적 구조, 연산, 데이터 처리 방법, 제약 조건 등을 모델링에 표시
- 데이터 모델의 구성 요소는 개체 속성 관계를 포함
- 데이터 모델링의 목표는 의사소통의 수단을 제공하여 효율적인 개발 가능
2-2. 시스템 개발 절차와 데이터 모델링
- 비즈니스 요구 사항을 기반으로 전략 수립, 분석, 설계, 개발 단계를 진행
- 시스템 개발은 데이터 관점과 프로세스 관점으로 진행되며, 비즈니스 요구 사항에 따라 달라짐
- (중요) 데이터 모델링의 특징은 독립적인 표현이 가능하며, 상호 이해와 독립적 시스템이 가능
- 데이터 모델링은 개념, 논리, 물리 모델링으로 나눠지며, 각각 다른 방식으로 데이터를 표현
2-3. 논리 데이터 모델링과 관계의 의미
- 상위 개념 데이터 모델을 기반으로 업무 데이터와 규칙을 구체적으로 표현
- 논리 데이터 모델링 기법은 특정 시스템의 성능과 제약 사항에 종속
- 관계는 개체 간의 존재나 행위에 있어서 의미 있게 연결된 상태로 참조 무결성을 보장
- (중요) 모든 관계는 1대1로 시작되며, 이를 통해 참조 무결성을 보장
3. 다대다 관계
3-1. 다대다 관계 이해
- 개체 간 관계에서 다대다 관계는 연관된 속성에 대해 다루지 못함
- 연관 관계 파악해도 다수의 개체를 연결하기 어려움
- (중요) 개체에 보안과 빈도 등을 고려해 복수의 개체로 분할 가능
- 1대1로 연결되기도 하고, 1대 다 관계로 변경되어도 됨
- 관계의 표현에 따라 다대다 관계 구현이 불가능하다는 결론 도출
3-2. 속성 관계와 개체 관계
- 학생이라는 개체와 이름, 학번, 성별 등 속성 관계로 연결
- 개체 간 관계를 개체 관계라고 함
- (중요) 속성과 개체의 관계를 속성 관계라고 표현
- 외래키와 기본키를 통해 식별 관계와 비식별 관계 구분
- 개인정보와 학생정보, 대여 정보의 관계를 통해 식별 관계 이해
3-3. 종속 관계와 정규화
- 종속 관계는 독립적 요거의 주인과 종 관계를 의미
- (중요) 개체의 기본키를 외래키로 사용해 식별 관계와 비식별 관계 구분
- (중요) 정규화를 통해 다대다 관계를 1대 다 관계로 변경 가능
- 개체의 속성과 관계를 실선으로 연결해 정규화된 형태 표현
- 다대다 관계를 통해 1대 다 관계로 변경한 후, 보안 강화와 데이터 효율성 증대 가능
00:01
두 번째 섹션은 논리 개체 상세화에 대해서 같이 한번 보겠습니다. 개체를 중심으로 공부할 수 있겠죠. 첫번째로, 개체정의 현실 세계의 식별 가능한 대상을 디지털화한 걸 개체라고 표현을 합니다. 보통은 객체라고도 표현을 하죠. 하나의 개체 타입에 의해서 여러 개체가 생성이 되고요. 각 개체는 서로 독립적이다. 별도라는 얘기죠 다음에 각 객체들은 파인 시스템의 각 레코드와 대응되는 의미가 된다. 앞에서 이야기했던 부분을 복습한다는 느낌으로 보면 될 것 같고요. 객체 타입 다시 한번 봅니다. 정리를 하는 거예요. 개체명과 개체 속성을 정의해서 명세한 거 모든 개체는 개체 타입을 통해서 생성됩니다. 그래서 이 생성된 애들을 개체 인스턴스라고 이야기를 해요.
00:58
특정 개체 타입에 의해 생성된 개체만을 호칭할 때 개체 인스턴스라는 표현을 씁니다. 그러니까 개체라는 이름이 들어가겠죠. 예를 들어서 학생이라는 개체 타입을 통해서 홍길동이라는 학생이 나왔다고 생각을 해보세요. 그러면 홍길동은 학생 개체 인스턴스예요. 어떤 느낌인지 아시겠죠. 이렇게 보시면 되겠습니다. 개체 타입은 업무 프로세스에 반드시 필요한 정보로 구성되며 다른 개체 타입과 관계를 형성한다 라고 되어 있습니다. 아래쪽에 대략 설명이 나와 있는 겁니다. 자 붕어빵 틀은 개체 타입이에요. 우리가 먹는 건 붕어빵 틀이 아니죠. 붕어빵 틀을 통해서 나온 이 개체들 인스턴스들을 우리가 요리를 하고 먹고 사용하고 하는 겁니다.
01:57
이 정도로 보시면 될 것 같고요. 그다음에 개체 타입이 이런 건데 이제 개체 타입을 정의할 때 고려 사항에 나와 있어요. 뭐 약어 사용 너무 줄이지 말라는 얘기죠 실제 업무에서 사용하는 언어를 사용하는 게 좋고 그다음에 정의되는 이름들은 당연히 중복이 되면 안 되구요. 단수명사 끝에 s 붙이지 말라는 얘기입니다. 이런 식으로 간단하게 표현할 수가 있다. 정도 보고 넘어갈게요 속성이죠. 마찬가지 정리하는 겁니다. 속성의 정의 개체의 정보를 나타내는 고유의 특성 개체 성격을 구체적으로 나타낼 수 있다. 개체를 구성하는 가장 작은 단위고 가장 작은 단위라는 것은 더 이상 쪼개질 수 없는 단위죠 앞에서 잠깐 언급했던 거죠. 원자값을 가진다는 뜻이에요.
02:48
속성의 특성에 따라 기본 속성 설계 속성 파생 속성으로 나뉜다고 되어 있는데, 기본 속성은 업무 분석을 통해서 정의한 속성이 기본 속성이고요. 설계 속성은 설계 중에 개체 타입을 설계하고 있는 도중에 새로 만들어진 속성들을 설계 속성이라고 이야기를 해요. 파생 속성은 다른 속성의 영향을 받아서 정의되는 속성입니다. 예를들면, 점수라는 속성이 있다고 가정을 했을 때 점수가 예를 들어서 100점 90점 87점 이렇게 있다고 하면 등급이라는 속성을 정할 수 있어요. 점수는 이미 우리가 기본 속성에 의해서 나온 애들이고요. 이 오른쪽에 있는 등급은 새로 만든 겁니다. 그러면 얘는 설계 속성 아니면 파생 속성이죠. 자 그런데 얘는 파생 속성이에요.
03:45
왜 그러냐면 점수에 의해서 데이터가 정해집니다. 예를 들어서 100은 뭐 예를 들어 에이 등급 90도 에이 등급 87은 비 등급 이렇게 이 점수에 의해서 생성이 되는 데이터들이죠. 이럴 때는 파생 속성이라고 이야기를 해요. 그러면 설계 속성은 뭐냐면 이런 식으로 되어 있는데, 왼쪽에 번호라는 속성을 새로 만드는 겁니다. 이 번호는 오른쪽에 있는 데이터에 의해서 만들어지는 게 아니라 임의로 부여를 하는 거죠. 이런 것들은 설계 속성이라고 할 수 있어요. 이렇게 구분을 하실 수 있으시면 됩니다. 문제 나올 확률은 희박한데 어쨌든 이해를 하시는 게 좋기 때문에 뭐 이 정도 보시면 될 것 같고요. 그다음에 구성 방식에 따라서 기본키 속성과 외르키 속성 일반 속성으로 나뉜다고 되어 있어요.
04:41
기본키 외래키 우리가 앞에서 배운 내용이기 때문에 복습한다는 느낌으로 다시 보시면 되구요. 자 근데 뒤쪽이랑 앞쪽이랑 설명이 뉘앙스가 살짝 비슷하지만 조금씩 다른 느낌이 있어요. 문맥을 파악하셔야 돼요. 어떤 느낌으로 설명을 하고 있다라는 개념이죠. 어떤 특정 포인트 키워드 빼고는 나머지는 바뀌어서 설명이 될 수 있기 때문에 잘 체크를 하셔야 됩니다. 여기서 외래키 같은 경우도 다른 개체와 관계를 가지는 이라고 말이 좀 어렵게 나왔잖아요. 원래 다른 예를 들어서 기본키를 참조하는 요 정도에서 우리가 기본키를 가져다 쓰는 이런 식으로 쉽게 표현을 했었는데 요게 조금 더 어렵게 나와 있는 겁니다. 요런 거 잘 보셔야 돼요. 자 그리고 속성 정의할 때 고려사항 도출 같은 말이죠. 다른 속성에 의해 생성되지 않는 원시 속성은 이걸 제거할 경우에 다시 만들 수가 없어요.
05:41
그렇기 때문에 절대 제거를 하면 안 된다라고 되어 있는 거고요. 적절하게 분류하고 분류된 애들을 이제 그룹해서 객체 타입으로 지정을 하면 됩니다라고 되어 있는 거고요. 아래쪽도 똑같은 얘기죠 야구 사용 시 이용하고 어쩌고 저쩌고 읽어보시면 됩니다. 그다음 관계 스키마 현실 개체를 디지털 세계에 표현하기 위해서 도출된 속성들의 논리적 구조 이건 그냥 표예요. 관계 스키마는 표라고 보시면 됩니다. 위에 보시면 릴레이션 스키마라고 되어 있죠. 릴레이션은 표예요. 읽어보시면 되고요. 스키마 변환은 아래 원칙을 준수해야 된다고 써 있는데, 읽어보시면 상식적으로 이렇게 해야 되겠네 라고 생각이 들어요. 분리 서로 독립적인 관계성을 가지게끔 서로 분리를 한다. 중복이 되면 안 되겠죠. 그다음에 그렇다고 해서 너무 나눠서 정보가 손실이 되면 안 되겠죠. 적절한 선을 지켜야 된다. 이렇게 보시면 되겠네요.
06:40
넘어가서 식별자입니다. 식별자도 앞에서 이야기를 했던 부분이죠. 각각의 개체를 유일하게 구분할 수 있는 결정자를 이야기하는 건데 키랑 같은 의미예요. 그러니까 얘도 최소성 유일성 이런 것들이 존재하죠. 식별자로 지정이 되면 그 식별자는 변하지 않아야 되고요. 주 식별자는 반드시 값이 존재해야 된다. 이거는 너를 허용하지 않는단 소리죠 자 여러 가지 형태로 식별자가 여러 가지로 나눌 수 있다라고 되어 있습니다. 하나씩 보도록 할게요 설명 쭉 보면서 서로 구분만 할 수 있으시면 돼요. 자 일단 주와 보조입니다. 주는 기본키와 같은 개념이에요. 주식별자는 기본키와 같은 개념인데 이거를 대신해서 개체를 식별할 수 있는 식별자로 고유 인덱스라는 개념이 보조식별자입니다. 보조 식별자는 null은 가능한데 중복 값을 인정하지 않는 형태 요걸 고유 인덱스라고 표현해요.
07:36
요걸 보조 식별자와 같은 의미다. 이렇게 보면 된단 얘기죠 자 그다음에 내부와 외부가 있는데, 내부 식별자는 자신의 개체 타입으로부터 생성되는 식별자 그리고 외부 식별자는 다른 개체 타입에서 주 식별자를 상속받아라고 되어 있어요. 상속은 참조 라는 개념과 같은 의미로 사용됩니다. 여기서는 그래서 이 조식별자가 기본키니까 기본키를 참조하는 가져다 쓰는 애가 뭐였어요. 외래키였죠 그래서 외래키와 같은 의미를 가진다 이렇게 보시면 되겠고요. 다음으로, 단일 식별자와 복합 식별자라고 있습니다. 단일 식별자는 하나의 속성 복합 식별자는 둘 이상의 속성이니까. 얘는 슈퍼키에 해당이 되겠죠. 원조와 대리 있습니다. 원조는 가공되지 않은 원래 식별자고요.
08:35
대리 식별자는 복합식별자들을 하나의 속성으로 묶어서 하나의 식별자로 만들어서 활용하는 인조 식별자라고 되어 있습니다. 이거를 이렇게 만들어 낸다는 얘기죠 그래서 코드 일련번호 이런 식으로 새로 생성을 하는 거예요. 이런 식으로 구분을 할 수가 있다. 정도로 공부를 하시면 되겠습니다. 넘어가 볼까요? 개체의 정의서 이거는 뭐 우리가 개체를 정의했으니까 당연히 또 산출물이 나와야겠죠. 그러니까 이 정의에 대한 내용들이 포함이 되어 있어야 된다. 정도 보고 읽어보시면 될 것 같아요. 넘어갈게요 데이터 모델링 여기서 문제가 인제 조금씩 나오기 시작을 합니다. 데이터 모델링이라는 거는 정보 구조를 꼭 기업이 아니더라도요 정보 구조를 디지털의 논리적인 데이터 모델로 명확하고 체계적으로 변환을 하는 거예요. 그리고 또 문서화를 당연히 하겠죠. 요거를 데이터 모델링이라고 한다라는 거구요. 현실의 정보 구조를 기반으로 실체와 관계를 통해서 정보 구조를 표현한다.
09:34
요 실체가 나중에 개체가 되는 거예요. 모델링을 통해서 이 정도 보면 될 것 같고, 자 그래서 이렇게 데이터 모델링이라는 거는 데이터 모델을 만드는 거니까 데이터 모델에 대한 부분을 공부를 하는 거겠죠. 지금은 데이터 모델에서 표시해야 하는 요소는 이 개체들의 논리적인 구조나 연산이라든지. 데이터 처리하는 방법 그다음에 제약 조건 이런 것들을 표시를 해줘야 되는 거고요. 그다음에 데이터 모델 자체의 구성 요소는 개체 속성 관계예요. 이 2가지를 잘 체크해 주셔야 돼요. 문제에 나옵니다. 데이터 모델에서 표시해야 되는 요소는 논리적 구조 연산 제약 조건이고요. 데이터 모델이 구성되는 요소들은 개체 속성 관계다 이렇게 보시면 되겠습니다. 다음으로, 일반적인 시스템 개발 절차 나와 있습니다.
10:30
시스템 개발은 데이터 관점과 프로세스 관점으로 진행이 됩니다. 비즈니스 요구 사항을 기반으로 전략 수립 분석 설계 개발 단계로 진행이 되는데 아래쪽에 글이 쭉 나와 있죠. 이거 여러분들 읽어봤을 테니까. 요 내용을 아래에 제가 여러분들한테 다음 페이지죠 그림으로 그려놨어요. 글과 그림을 비교해 가면서 공부를 하시면 돼요. 자 그래서 어느 관점으로 이제 보냐에 따라서 이런 식으로 진행이 된다는 거죠. 그래서 보통 우리가 애플리케이션과 데이터베이스를 이제 따로 개발하고 구축하고 할 때 이런 형태로 구분이 된다는 거예요. 요 이미지를 이해하시면 되겠습니다. 여기 글이고요. 자 내려와서 이러한 데이터 모델링의 특징이 나와 있습니다. 읽어보면 당연한 얘기고 하나만 정확하게 보셔도 돼요. 이 두 번째 요게 핵심이죠. 우리가 모델링을 하는 이유가 뭐냐라는 거죠.
11:21
나 혼자 쓰는 게 아니라 나 혼자 개발하는 게 아니라 모두가 개발을 해야 되기 때문에 모두가 서로 오해 없이 의사소통을 해야 정확한 개발을 할 수가 있겠죠. 그래서 항상 종이로 남겨두고 의사소통을 해야 되는 거예요. 자 그래서 의사소통의 수단을 제공하기 때문에 정확한 이해가 가능하고요. 그렇기 때문에 비용의 감소 개발의 기초 제공 가능하고요. 그다음에 업무 흐름 파악도 용이해지고, 데이터 무결성도 보장할 수 있다. 왜냐면, 의사소통 수단이 효율적이고 정확하게 이해를 돕기 때문에 이런 것들이 가능하다는 거죠. 데이터 모델링을 하는 이유입니다. 자 그래서 데이터 모델링은 위에 그림에서 봤듯이 개념과 논리와 물리 모델링으로 나뉘는데 이 개념 논리 물리를 서로 구분하고 특징을 파악할 수 있어야 됩니다. 이 부분이 문제에 굉장히 자주 나오는 편이에요. 일단 개념 데이터 모델링입니다.
12:15
상위 수준 맨 위쪽이라는 얘기죠 상위 수준 모델로 데이터 모델의 골격을 설계하는 단계입니다. 주요 업무 영역에 포함되는 개체 타입 간의 관계를 파악해서 규칙을 정의하는 파트예요. 위쪽에 밑줄 보시면은 주요 엔티티 타입 개체 타입이에요. 속성 관계 주요 업무 기능 등 이런 것들 큰 골격을 세우는 단계라고 보시면 됩니다. 개념 데이터 모델링의 특징 나와 있죠. 독립적인 표현이 가능한 er 모델 등을 이용해서 구현한다라고 되어 있어요. 꼭 er 모델은 아니지만, 포인트는 독립적인 표현이 가능하다는 뜻이에요. 이건 무슨 소리냐면 er 모델로 표현한 이 데이터 모델이 어떤 특정 dbms에서는 적용이 불가능하다 이런 부분이 없단 얘기예요. 그걸 특정 dbms로부터 독립적이다. 이렇게 이야기를 하는 겁니다. 다음으로, 개념 모델링의 주요 작업들은 순서보다는 필수 요소로 이해하는 게 골격이니까요? 좋다라고 되어 있습니다.
13:12
아래쪽에 여러 가지 작업들이 나와 있는데, 크게 어려운 개념은 아니구요. 다음으로, 논리 데이터로 넘어가겠습니다. 상위 개념 데이터 모델을 기초로 해서 업무 영역의 업무 데이터나 규칙을 구체적으로 표현하는 단계입니다. 모든 주요가 아니죠. 모든 업무 영역에 대한 업무용 개체 속성 관계의 프로세스 등을 포함을 하는 단계가 되는 거고요. 일반적으로 논리 데이터 모델과 데이터 모델은 같은 의미를 가진다 관계 표현 방법에 따라서 관계형 계층적 네트워크형 계층적 계층형 똑같은 말이죠. 이런 모델들이 있다라는 거고요. 그 다음에 논리 데이터 모델링 기법 나와 있습니다.
13:59
개념 데이터 모델의 개념적인 구조를 컴퓨터가 이해할 수 있는 논리적인 구조로 변화를 한다라고 되어 있습니다. 여기서부터는 목표하는 데이터베이스 매니지먼트 시스템에 적용할 수 있는 스키마라든지 인터페이스를 설계해야 돼요. 여기서부터는 어떤 특정 dbms를 목표로 하는 거기 때문에 거기에 종속되겠죠. 개념 데이터는 원래는 독립적이었는데. 어떤 특정 dbms 이걸로 하자 라고 하면 이제 그걸로 변환하는 거예요. 아시겠죠. 그리고 논리 데이터 모델링의 특징 나와있습니다. 읽어보시면 마찬가지인데 요구사항을 충분히 수집하지 않으면 반영이 덜 될 테니까요? 요구사항 변경에 따른 많은 비용이 발생한다라고 되어 있어요. 그래서 앞에서 계속 계획하고 문서 남기고 하는 게 이것 때문에 그렇죠.
14:56
특정 시스템의 성능 및 제약 사항으로부터 독립적이다. dbms가 아니에요. 시스템이에요. er 모델을 활용해서 소통할 수 있다. 모든 업무 데이터를 정규화해서 오해가 없도록 정규화해서 표현을 해야 된다. 이렇게 보면 되겠습니다. 이 정규화에 대해서도 나중에 자세하게 배워요 내려가죠 이번에는 논리 개체의 관계정의라고 되어 있습니다. 관계가 이게 참 약간 애매하게 어렵습니다. 천천히 한번 보도록 할게요 관계라는 거는 둘 이상의 개체 간의 존재나 행위에 있어서 의미 있게 연결되어 있는 상태예요. 2가지 존재에 의한 관계와 행위에 의한 관계가 있는데, 정보의 흐름이 정적인 상태에는 존재 학교와 학생처럼 그냥 학교라는 개체와 학생이라는 개체만 가지고도 관계 설정이 되죠. 이게 존재구요. 행위는 동적인 거예요.
15:51
고객과 주문인데 예를 들어서 고객이 있고 주문이 있다고 하면 이 둘 사이에는 주문을 요청한 상호작용이 반드시 있었던 거예요. 그러니까 이 사람이 고객이 된 거죠. 주문을 하지 않았으면 고객이 아닌 거잖아요. 학교와 학생은 이제 뭐 입학했다. 이런 개념은 아니고요. 학교와 학생은 학생이 공부를 하지 않아도 학교가 가르치지 않아도 요 관계가 유지가 돼요. 당장 어떤 행위를 하지 않아도 하지만 고객과 주문 개체는 주문하다라는 그런 상호작용이라든지. 행위가 필요하다라는 거죠. 이렇게 구분을 해주시면, 될 것 같고요. 개체 간의 관계는 1과 0 또는 다수를 활용해서 표현이 되고요. 적절한 관계는 개체 간 참조 무결성을 보장한다라고 되어 있어요. 무결성이 또 나왔는데 무결성은 이제 없을 무자라고 생각하시면 돼요. 결함이 없는 특성 어떤 부분에 있어서 결함이 없어야 된다.
16:51
뭐 그런 얘기인데요. 참조 무결성이라는 거는 내가 어떤 데이터를 가져다 쓸 때 이게 가져다 쓸 때 아무런 문제가 없어야 된다는 소리예요. 내가 만약에 값을 가져다 쓸려고 하는데 거기에 값이 없거나 또는 값을 가져다 쓸려고 했더니, 거기에 값이 두 개가 있거나 이런 식으로 인제 문제가 생기는 경우 이거를 참조 무결성을 해친다 이렇게 표현을 합니다. 자 그래서 이걸 보장한다라는 거죠. 그래서 여기 보면은 모든 관계가 다 1로 시작하고 있어요. 1대1 1대0 뭐 1대4 뭐 이런 식으로 되어 있는데, 모든 대형이 1로 시작되는 이유는 참조 무결성을 보장해야 되기 때문이에요. 무조건 하나만 있어야 되는 거예요. 그래야 참조 무결성 보장이 가능하죠. 이런 것들이 있다라는 거고, 나머지는 뭐 어려운 개념은 아니니까 읽어보시면 될 것 같고요. 관계 표현의 의미 자 여기서부터는 개념적인 부분이에요. 그냥 본인이 이해를 하셔야 되는 거 암기가 아닙니다. 같이 한번 보죠.
17:50
개체가 어떻게 관리되느냐에 따라서 관계의 표현이 달라질 수 있다. 관계 표현은 고정적인 게 아니라는 거죠. 개체를 관계 명칭의 파악이 아닌 업무의 연관 관계를 파악해서 결정을 하는 거고, 예를 들면 학생의 시험 성적 관리는 학생 개체와 성적 개체를 1대 다로 연결해야 학생별로 다수의 성적 관리가 가능하다고 돼 있어요. 이건 어떤 느낌이냐면 학생이라는 개체가 있을 때 성적이라는 개체를 1대1로 연결을 해버리면 a라는 학생의 성적을 하나밖에 못 적어요. 위 오른쪽에 하나 이상 적을 수가 없습니다. 그러면 예를 들어서 중간고사 기말고사 다음 학기 중간고사 기말고사 쭉 다 적고 싶은데 그럴려면 여기에 a라는 학생이 여러 번 적혀야 되죠. 그러면 여기는 학생은 한 명인데 성적 데이터에는 a가 여러 명 보이죠.
18:50
이러니까 1대 단 거예요. 이러면 다수의 성적 관리가 가능해진 거죠. 이렇게 연관 관계를 파악해서 관계를 설정해 준다라는 거죠. 그런데 학생의 기본 정보를 사용 빈도나 보안 등을 위해서 복수의 개체로 분할해서 1대1로 연결할 수도 있다고 돼 있습니다. 무슨 얘기냐 자 학생이라는 테이블이 있다고 개체가 있다고 생각을 해보죠. 그러면 학번이 있을 거고, 그다음에 이름이 있을 수 있죠. 그다음에 반 이 정도 있을 수 있고요. 그다음에 연락처 있을 수 있잖아요. 그리고 하나만 더 해볼까요? 중요한 정보 연락처 주소 이런 게 있다고 생각을 해 볼게요 자 요렇게가 하나의 개체를 형성하고 있다고 가정을 해보겠습니다.
19:38
자 이렇게 된다고 하면 학생 테이블 우리가 테이블이라고 보는 게 더 편하니까 테이블로 볼게요 학생 테이블을 조회하는 사람들은 학번 이름판 연락처 주소를 전부 볼 수 있어요. 나는 이 학생의 이름만 또는 이 학번을 가진 학생의 이름이나 반까지만 알면 되는데 연락처 주소도 조회가 가능한 거예요. 그렇기 때문에 이거를 어떻게 하냐면 2개로 나누는 겁니다. 이렇게 알려드릴게요. 학생 정보 이렇게 해볼까요? 자 이렇게 테이블을 두 개를 만드는 거예요. 이런 식으로 이제 네모칸을 잘 못 치네요. 이렇게 테이블을 두 개 만드는 겁니다. 그래 놓고 요거 두 개의 관계를 1대1로 만드는 거예요. 예를 들어서 01 학번이 있다고 치면 여기도 01 학번이 한 명 있는 겁니다. 그래서 이 학생 이름이 에이고 3반이고 연락처가 뭐 4321이에요. 그리고 서울에 살아요.
20:35
그러면 이 학생 정보는 누구나 볼 수 있게끔 권한을 열어두고 그다음에 여기 있는 학생 정보는 예를 들어서 선생님만 볼 수 있다든지 그런 식으로 해놓는 거죠. 그러면 보안이 우수해지는 거고요. 그다음에 요 학생 정보에 해당하는 데이터는 매번 보는 게 아니기 때문에 사용 빈도가 전체로 나와 있을 때보다 줄어들죠 그러니까 조금 더 데이터베이스 관리가 효율적으로 바뀌어요. 이런 식으로 해서 1대1로 연결할 수도 있다는 뜻이에요. 그러니까 어떤 특성 개체가 무조건 뭐 나뉜다 무조건 1대4로 연결된다가 아니라 업무의 연관 관계를 따라서 이렇게도 될 수 있고 저렇게도 될 수 있다. 이렇게 보시면 되겠습니다. 자 넘어갈게요 다데다 관계 해소 관계의 표현에서 알 수 있듯이 다대다 관계는 어떤 방법으로도 구현이 불가능하다고 되어 있습니다. 여기엔 뒤쪽에 나올 거예요.
21:26
조금 더 자세한 설명이 데이터 종속성에 대한 결정이 불가능해서 논리적 불안정이 계속 유지가 돼 이걸 해소를 해야 되는데 그렇기 때문에 논리적인 표현이 불가능하다는 거죠. 불안정 상태로 인해서 정규화나 문서화가 불가능합니다. 표현이 안 되니까. 이거를 누구한테 설명을 할 수가 없는 거죠. 그래서 다대다 관계는 새로운 관계 개체와 업무 규칙 등을 통해서 1대 다 관계로 변경할 수 있어야 됩니다. 이걸 정규화라고 해요. 정규화의 한 단계입니다. 이런 것들이 있다라는 거 결론적으로 다대다는 표현을 못한다. 이렇게 보시면 돼요. 다음으로, 관계의 종류입니다. 속성 관계와 개체 관계가 있는데요. 아래쪽 그림으로 해석을 하면 됩니다. 여기 보면은 학생이라는 개체가 있어요. 그리고 이 학생과 연결되어 있는 이름 학번 성별에 해당하는 속성이 있죠.
22:21
이 학생과 이름 학번 성별 서로 다른 도형이죠. 서로 다른 도형들이 연결되어 있는 이 관계가 속성 관계예요. 객체를 위한 관계입니다. 객체를 기술하기 위한 객체를 설명하기 위한 그다음에 객체 관계는 같은 도형끼리 사각형과 사각형끼리의 관계를 나타내는 거예요. 그럴 때는 이 실선으로 표현을 하고 있죠. 이게 꼭 실선 점선이 절대적인 게 아니라 제가 설명을 하기 위해서 그려놓은 겁니다. 이렇게 대체간의 관계를 개체 관계라고 하고요. 속성과 개체의 관계를 속성 관계라고 한다. 이렇게 보면 되겠습니다. 다음은 종속 관계입니다. 종속 독립적 요거 두 단어 꽤 많이 나왔었죠. 주종 관계를 나타내는 거예요. 주인님 종 뭐 이렇게 생각하는 건데 종속이 되어 있냐 안 되어 있냐를 구분하는 건데요. 식별 관계와 비식별 관계가 있어요.
23:18
이거 조금 어려워요 제가 천천히 좀 이야기를 해볼게요 식별관계는 개체의 외래키가 그 개체의 기본키가 되는 거예요. 다른 테이블에 있는 값을 기본키를 가져다가 썼는데 이 가져다 쓴 그 외래키 역시 기본키가 되어 있는 상태인 거예요. 아래쪽에서 볼게요 일단은 식별과 비식별 빼고 일단 자체가 이해가 되어있어야 돼요. 보세요. 개인정보와 학생정보와 대여정보라는 개체가 있는 거예요. 지금 그리고 각각 개인정보는 학번과 주소 연락처 속성을 가지고 있고요. 학생정보는 학번과 이름 성별을 가지고 있어요. 속성을 그다음에 대여 정보는 대여 번호와 학번 도서명을 가지고 있습니다. 여기서 핵심은 학생 정보가 메인 개체예요. 요놈이 메인이에요.
24:18
이렇게 자 그런데 이 학생 정보에 추가적인 정보 조금 민감할 수 있는 누구나 볼 수 있는 정보가 아닌 개인정보들은 별도로 분리를 해 놓은 거예요. 아까 이야기한 것처럼 그래서 이쪽으로 분리를 해놨어요. 그리고서 학번으로 연결을 해 놓은 거예요. 그럼 이 관계가 어떻게 될까요? 1대1이 되겠죠. 학번으로 연결해서 이 학번의 개인정보와 이 학번의 기본적인 정보 이렇게 해서 두 개를 나눠놓은 상태입니다. 그러면 개인정보 입장에서 보세요. 개인정보 입장에서 이 학번은 직접 쓴 게 아니라 학생정보의 학번을 가지고 온 거예요. 그럼 얘는 뭐예요? 외래키죠 자 그런데 여기 지금 밑줄 쳐져 있죠. 이 주소와 연락처는 이 학번의 데이터를 중심으로 쭉 나열이 되어 있는 애들이에요. 해당 학번의 주소와 연락처이기 때문에 1대1이죠. 그래서 얘는 기본키이기도 하단 얘기예요.
25:18
왜래키와 기본키를 둘 다 가지고 있기 때문에 얘는 뭐다 식별 관계라는 거예요. 이해되시죠. 그다음 넘어가서 이번에는 대여 정보를 보겠습니다. 대여 정보는 어떤 학번의 학생이 어떤 책을 빌려 갔는지를 기록하는데 근데 특정 학번의 학생이 책을 많이 빌릴 수 있잖아요. 예를 들어서 3번 학생이라고 생각을 해봅시다 학번이 3이에요. 3번 학생이 a라는 책을 빌려가고 3번 학생이 또 b라는 책을 빌려가고 또 3번 학생이 k라는 책을 빌려갈 수 있죠. 그러면 얘는 많잖아요. 데이터가 그러니까 다구요. 그런데 이 학번은 당연히 이 학생 정보에 있는 학번을 갖다 썼을 거란 말이죠. 여기서는 학번은 기본키기 때문에 1이죠. 그래서 1대 다 관계가 만들어져요 그러면 이 학번은 어때요 기본키가 아니죠. 그러니까 이거는 비식별 관계라는 거예요.
26:14
이해되시죠. 그래서 기본키에 포함이 되냐 안 되냐의 개념이다. 이렇게 보시면 되겠습니다. 여러분들이 이해를 좀 쉽게 하는데 제가 너무 이렇게 풀어서 설명을 하는 게 아닌가 싶긴 한데 뭐 그러면 다행이긴 하죠. 넘어가 볼게요 다음으로, 중복 관계입니다. 특정 두 개체들 사이에 2번 이상의 종속 관계 앞에서 봤던 거 2번 이상의 종속 관계가 발생하는 관계입니다. 최적화 작업이 굉장히 어려워지기 때문에 꼭 필요한 경우가 아니라면 실제 업무에서 사용하지 않는 것이 좋다라고 되어 있고 제가 굳이 예시를 들지 않은 것도 예시 들기 자체도 힘들어요. 이해 자체가 어려워요 왜 굳이 이렇게 하지라는 개념이 먼저 떠오르기 때문에 이런 것들을 예시를 보는 것보다 그냥 중복 관계가 뭔지 정도만 파악하고 넘어가는 게 제일 좋습니다. 넘어갈게요 재귀 관계 특정 개체가 자기 자신을 다시 참조하는 관계 자기 자신을 다시 참조한다. 그래서 재귀예요. 데이터베이스 성능에 영향을 줄 수 있기 때문에 굉장히 주의를 해야 된다.
27:14
그리고 이제 아래쪽에 예시가 나와 있죠. 이거는 예시 들기가 편해요. 실제로 이렇게 사용을 하거든요. 사원 정보가 있는데, 여기 사원 번호 이름 연락처 그다음에 선임사원이라는 데이터가 있어요. 속성이죠. 선임사원이라는 거는 이 사원한테 이것저것 알려줄 수 있는 맞선임이라는 표현도 쓰는데 어쨌든 선배죠 선배 선배를 나타내는 거예요. 이 사원 정보에 들어가면 특정 사원의 선배가 누군지를 파악할 수 있게끔 만들어둔거죠. 그러면 이 선임사원도 마찬가지 보통은 이름으로 쓰지 않습니다. 이름은 동명이인이 있을 수 있기 때문에 이 선임사원도 속성은 선임사원이지만 사원 번호를 적어놓는 경우가 많아요. 예를 들어서 37번 사원이라고 치면은 이 37번 사원의 선임사원은 24번인 거예요.
28:00
예를 들면 그러면 얘도 사원 번호고 얘도 사원 번호죠 이렇게 자기 자신을 다시 참조하는 관계가 재귀 관계다 이렇게 보시면 됩니다. 넘어갈게요 마지막으로, 상호배타적 관계라는 게 나와 있는데요. 상호배타적이라는 거는 말 그대로 배타적 서로 뭐라고 표현해야 될까요? 밀어낸다고 보시면 되죠. 너랑은 같이 뭔가를 하지 않을 거야. 라는 게 이제 상호배타죠 조건이나 구분자를 통해서 개체 특성을 분할하는 일반화 관계를 나타낸 것으로 배타적 or 관계라고도 한다 라고 되어 있어요. xor이라고도 표현해요. 하위 구성 개체들 중 하나의 개체와 통합되는 관계 특성을 가진다라고 되어 있어요. 이게 무슨 얘기냐면 교통비와 사원이 연결되든가 아니면 주차구역하고 사원이 연결되든가 둘 중에 하나만 선택할 수 있다는 뜻이에요. 그래서 상호 배타적이라고 이야기를 하는 거죠.
28:59
그림 자체가 어렵지 않죠 이 정도까지 보도록 하겠습니다.
'이기적영진닷컴 정보처리기사 필기강의 > 데이터베이스 구축' 카테고리의 다른 글
[정보처리기사 올인원] 3-2-2.SQL 활용 (0) | 2025.06.27 |
---|---|
[정보처리기사 올인원] 3-2-1.구조적 질의어 (0) | 2025.06.27 |
[정보처리기사 올인원] 3-1-4.데이터베이스 정규화 (0) | 2025.06.27 |
[정보처리기사 올인원] 3-1-3.논리 E-R 다이어그램 (0) | 2025.06.27 |
[정보처리기사 올인원] 3-1-1.데이터베이스 기본 (0) | 2025.06.27 |