PHP 프로그래밍

본문 바로가기
사이트 내 전체검색


Web Programming >> PHP Programming
[목차]
제17장 데이터베이스 기초 및 설계

    3. 데이타 모델링과 개체-관계 모델(Entity-Relationship Model)

 

데이터베이스를 설계하는 과정에서 가장 먼서 해야 할일은 사용자가 관심이 있는 데이타는 무엇이며 그 데이타로 부터 얻고자하는 정보는 무엇인지에 관해 조사하는 것입니다. 이러한 과정을 사용자의 요구분석이라고 하는데 이 단계에서는 사용자가 요구하는 실세계의 데이타를 분명하고 이해하기 쉽게 나타내어 다음 단계에서 사용자의 요구에 맞는 데이타베이스를 만들수 있도록 해야합니다.

이렇게 현실세계의 수 많은 데이타 중에서 관심의 대상이 되는 데이타만을 추려내어 추상적 형태로 나타내는 것을 데이타 모델링이라고 합니다. 언어가 가지고 있는 모호성때문에 보통의 언어보다 좀더 형식화 되고 다이어그램등을 사용하여 표현하게 되는데 이 장에서는 개체-관계 모델을 이용한 데이타 모델링에 대해서 알아보겠습니다.


4.3.1. 데이타의 분석과 개체-관계 모델

4.3.1.1. 사용자의 요구 분석

데이타베이스를 설계하는 과정에서 가장 먼저 해야할 일은 데이타베이스에 어떤 데이타를 저장할 것인지를 결정하는 일입니다. 그런데 데이타베이스에 저장된 데이타들은 서로 별개의 것이 아니라 관련되어 있으며 이런 데이타와 그들간의 관계를 명확한 형태로 표현하는 것이 데이타를 좀더 효율적이면서도 실제 세계를 잘 반영한 채로 저장할 수 있게 할 것입니다.

학사 관리 시스템을 예로 든다면, 학생, 교수, 강좌 등에 대해서 우리가 필요한 정보를 정보를 정리하면 다음과 같을 것입니다.

학생 : 이름, 학번, 학과, 출생년도, 지도교수, 수강과목, 학점  
교수 : 이름, 학과, 출생년도, 담당학생, 강의과목
학과 : 이름, 소속학생, 소속교수, 개설강좌
강좌 : 이름, 담당교수, 수강학생

이렇게 보통의 언어로 표현된 것은 한눈에 알아보기가 쉽지 않을 뿐만 아니라 서로 복잡한 관계를 가지고 있어서 이해하기가 더욱 쉽지가 않은 것을 알 수 있습니다. 학생의 데이타를 볼때, 그 학생의 지도교수가 누구인지에 대해서 알 필요가 있으며, 교수의 데이타를 볼 경우 그 교수가 지도하는 학생들의 정보가 필요하다는 것을 알 수 있습니다. 마찬가지로 교수는 강좌를 강의하고 학생은 강좌를 수강하며 강좌에는 담당교수와 수강학생이 있습니다..

위의 예에서 나타난 것처럼 데이타 베이스에 저장하고자 하는 데이타를 형식화 되지 않은 형태로 나타냈을 경우 의미가 모호할 뿐만 아니라 서로 중복되는 관계들 때문에 실제로 표현하고자 하는 데이타를 명확하게 나타내기가 어렵습니다. 이런 어려움을 해결하기 위해 좀더 형식화된 방법들이 고안되었는데 그중의 가장 많이 쓰이는 것이 개체-관계(Entity-Relationship) 모델입니다.

4.3.2. 개체-관계 모델에서의 개체

4.3.2.1. 개체의 정의

개체(Entity) 는 독립적으로 존재하는 기본적인 대상으로 학생,교수등과 같이 물리적으로 존재하는 대상일 수도 있으며 강좌,학과등과 같이 개념적으로 존재할 수도 있습니다.

물리적이든지 개념적이든지 간에 하나의 개체는 자신의 특성을 가지고 있게 되는데 이러한 특성을 개체의 속성(attribute)라고 합니다.예를 들어 학생이라는 개체는 이름, 학번, 학과, 출생년도 등의 속성을 가지고 있으며 강좌의 경우도 강좌이름, 시간, 장소등의 속성을 가지고 있습니다. 바로 이 개체의 속성의 값이 데이타베이스에 저장되는 중요한 부분을 이루게 됩니다.

개체-관계 다이어그램에서 개체를 직사각형으로 표시하고, 그 개체의 속성을 타원으로 표시하여 개체에 선으로 연결합니다.

앞의 학교의 예에서 개체가 될 수 있는 것은 학생, 교수, 강좌, 학과이며 이들은 다이어그램으로 표시하면 다음과 같습니다.


4.3.2.2. 개체의 키

개체의 속성들 중 하나 또는 그 이상의 속성들은 그 개체를 다른 개체와 구별할 수 있게 되는 것들이 있는데 이것을 개체의 키(key)라고합니다. 학생의 경우 학번은 모든 학생들 사이에 다른 값을 가지므로 키라고 할 수 있습니다. 그런데 이름의 경우는 같은 이름이 있을 수 있기 때문에 키가 될 수 없을 것입니다.

하지만 만약 한 과에 같은 이름들을 가진 학생이 없다고 한다면 이름과 학과를 합쳐서 키로 사용할 수 있을 것입니다. 이렇게 하나의 개체들의 속성들 중에는 여러개의 키가 존재하고 이중의 하나를 주된 키로써 사용하여 그 개체를 구별할 수 있습니다.


4.3.3. 개체-관계 모델에서의 관계

4.3.3.1. 관계의 정의

앞에의 정의한 개체를 살펴보면 서로 연관되는 개체들이 있음을 쉽게 알 수 있습니다. 즉 학생의 개체와 교수의 개체는 교수가 학생의 지도교수가 된다는 관계를 가지고 있는 것을 알 수 있습니다. 이와 같이 우리가 데이타베이스를 구축하려고 하는 데이타들은 서로 관련되어 있으며 이러한 대상들은 개체라고 했을 때 이들 개체들같에 관계를 정의할 수가 있습니다.

앞에서든 학교의 예를 자세히 살펴보면 학생은 강좌에 대해 수강한다라는 관계를 가지고 있으며 교수는 강좌에 대해 강의한다는 관계를 가지고 있습니다. 이러한 개체들간의 관계를 나열하면 다음과 같습니다.

교수는 학생의 지도교수가 된다
학생은 강좌를 수강한다.
학생은 학과에 속한다.
교수는 학과에 속한다.

이러한 개체들간의 관계를 E-R Diagram으로 나타낼때는 마름모를 사용하여 관계되는 개체들을 이으면 됩니다.

 



학생과 교수의 관계는 다음과 같이 표현됩니다.


4.3.3.2. 여러가지 형태의 관계

개체들간의 관계들은 좀더 자세히 살펴보면 약간의 차이가 있음을 알 수가 있습니다. 첫번째로 학생과 교수의 관계를 본다면, 한명의 교수는 여러명의 학생과 지도교수라는 관계를 가질 것입니다. 즉 1:N의 관계를 가지는 것으로 이것을 표현하면 다음과 같습니다.


그런데 학생과 강좌의 예를 보면 약간 틀려짐을 알 수가 있습니다. 한명의 학생은 여러 강좌를 듣고 있으며, 또한 강좌는 여러명의 수강생을 가지고 있습니다. 이 경우에 학생과 강좌는 M:N의 관계를 가진 것으로 다음과 같이 나타낼 수가 있습니다.


보통의 경우과는 다르지만 만약 한 교수가 하나의 강좌만을 강의할 수 있다고 한다면 한 교수는 한 강조와 한 강의라는 관계를 가지게 될 것입니다. 이러한 1:1대응을 다이어그램으로 나타내면 다음과 같습니다.


4.3.3.3. 관계의 속성

개체의 경우와 마찬가지로 개체들간의 관계에 대해서도 특성을 부여할 수가 있는데 이것이 이러한 관계들에 대한 속성입니다. 앞의 예에서 학생의 강좌와 수강이라는 관계를 가지고 있다고 할 때, 수강은 그 학생의 학점을 속성으로 가질 것입니다. 이 학점이라는 속성은 학생이 어떤 강좌를 수강하는 데서만 정의할 수 있으므로 수강 관계의 속성이 될 수가 있습니다.

개체간의 관계에 대한 속성도 개체의 속성과 마찬가지로 타원을 써서 표현 하게 됩니다.



 

[목차]

개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.