ER모델

            : Entity Relationship Attribute

            를 가지고 이 세상을 모델링 함. 

            모든 언어에는 표현력이 있다.(강한 표현력)

            인간에 가깝다(고도의추상화)           



            

엔티티

             : 이단어는 이거야!라고 머릿속에 떠오르는 것

            대부분의 경우 구체적 명사 

            독립적으로 존재하면서 고유하게 식별가능한 객체

            ex) 사람, 인간, 토끼, 의자



관계 

         : 두개 이상의 엔티티들을 연관짓는 것 

          

         ex) 결혼, 수강, 소속

            



애트리뷰트 

                 : 엔터티를 구성하는 속성 

                 ex) 이름, 학번, 위치, 강사

         = 데이터베이스의 스키마 정보에 해당





동일한 엔티티 타입에

학생이라는 엔티티타입에 30개의 엔티티

교수라는 엔티티타입에 1개의 엔티티

동일한 에트리 뷰트를 갖는 엔티티들의 모임


ex) 자동차를 예로 들어보자

자동차 = 엔티티 타입


car1  엔티티 1  

car2  엔티티 2

car3  엔티티 3


애트리뷰트 = 차 넘버, 차종 등등


Car = {엔티티1, 2, 3} = 엔티티 집합.








애트리뷰트의 종류


: 단일값 <=> 다치

  저장된 <=> 유도된

  단   순 <=> 복   합





1. 단순 애트리뷰트 :


우리가 만드는 에트리뷰트의 90%이상이 단순 

더이상 다른 애트리뷰트로 나눌 수 없는 애트리뷰트

실선 타원으로 표시

실선 사각형 = 엔티티 타입

ex) Customer[엔티티타입] -

ID, Name, address[단순 애트리뷰트]


2. 복합 애트리뷰트 :

     

두개 이상의 애트리뷰트로 이루어진 애트리뷰트 

실선 타원으로 표시하지만 

단순애트리뷰트에 선으로 연결되어있음

Address[단순애트리뷰트] - 

       City, Ku, Dong, Zipcode[복합 애트리뷰트] 


Address는 단순일까 복합일까?

: 그때그때 다르다.


그럼 언제 단순이고 언제 복합일까?

: 단순일때는 회원가입할때 단순히 주소만 입력할때

  복합일때는 주소라는 필드가 있고 입력박스로

   경기도, 서울 막 나눠서 시군구를 선택하는방식. 

   각각을 나눴기 때문에 복합.

세부적으로 검색의 조건을 나누는 경우 = 복합

그런거 필요없고 입력된거 통째로 쓴다 = 단순


3. 단일값 애트리뷰트


: 각 엔티티마다 하나의 값을 갖는 애트리뷰트

  회원가입시 학과, 생년월일   

  실선 타원으로 표시  


4. 다치 애트리뷰트


: 각 엔티티마다 여러개의 값을 갖는 애트리뷰트

  특기, 취미

  실선 이중타원으로 표시


이름은 단일값일까 다치일까?

예를들어 개명을 한 친구들이 있다.

또는 가명. 연예인 하하(하동훈) 이름 적는 란에

조금 망설일 것 이다. 본명은 사람들이 잘모름.

이 사람은 하동훈(하하) 이렇게 쓰려고 할 수도 있다.

단일로 모델링한 경우 이름 칸에 이름 하나만 써라!

-> 강제의 의미

다치로 모델링한 경우 여러개를 넣어도 괜찮아요!


국가기관 주민등록 등본상의 등록 이름의 경우 : 단일

네이버-> 연예인이름 하하(하동훈) : 다치

결과적으로 필요에 따라 모델링 방법이 다르다


데이터 모델링은 처음 모델링을 할 경우

현실상황을 그대로 반영한다고 생각하지만

모델링을 해놓고 보면 우리의 삶은 그것에 종속 된다.

ex) 버스 카드 찍는 단말기에 우리가 버스카드를 찍는다.


5. 저장된 애트리뷰트

: 말그대로 실제 값을 하드디스크에 저장해놓는 애트리뷰트

  90% 이상의 애트리뷰트가 저장된 애트리뷰트

  실선 타원으로 표기됨. 


6. 유도된 애트리뷰트

: 다른 값으로 부터 유도해 내어 얻는 애트리뷰트 

  점선 타원형

  ex) 나이라는 필드가 있다. 1년이지나면.

        모든 레코드들의 나이를 업데이트 해주어야 함.

        현재 날짜와 계산해서 얻을 수 있다.

        어디서 부터 유도가 될 수 있는지도 생각해봐야함

        

        평점, 학생수, 재학생수





키 애트리뷰트 


:  중복이 없다.

   어떠한 두개이상의 필드에 해당 앤티티에 대해서

   동일한 값을 갖지 않는다.

   ex) 학번, 지문, 홍채인식

   아닌 ex) 이름(동명이인), 

   주소를 키 애트리뷰트로 만들면 큰일남. 

   -> 너네형이 작년에 입학해서 너는 못들어와!

   중복 값이 있어선 안된다. 라는 금지의 의미를 갖는다.

   많은 엔티티 중에서 특정 엔티티를 식별해내는 의미

   2012182037 나와 -> 한명이있던가 아무도 없던가

   여러개의 애트리뷰트가 모이면 식별해 낼 수 있음

   -> 경기도 부천에사는 25살 정OO씨!

   밑줄로 표기함-> ID에 밑줄이 그어져있다면 ID=식별자

   키 애트리뷰트가 여러개 있을 수 있다.

   ID도 학번도 될 수 있음

   하지만 둘다 밑줄을 긋는다면 둘중에 하나를 정해

   밑줄을 그어야한다. 둘다 긋는 경우 둘을 합친게

   식별자가 된다는 의미이기 때문에








파일 시스템의 부족한 기능들


- 데이터 모델링 개념 : 데이터들 사이의 연관성을 표현해 줄 수 있어야 함. 

- 질의어 : 데이터들을 액세스 할 때 질의어 개념이 없음.

- 동시성제어 : 데이터가 있음. 이 데이터를 내가 혼자서 액세스할때는 문제X

  그러

- 파손, 회복

- 보안 : 이 데이터에 대한 액세스를 권한을 가진자만이 액세스 할 수 있도록

  가장 완벽한 보안은 그 데이터에 대한 존재 자체를 숨기는 것.

 


파일시스템은 이렇게 부족한 기능을 갖고있지만, 데이터베이스에선 이 모든 것을 지원해준다.




DBMS를 사용한 데이터베이스 관리



동시성 제어가능

질의어 기능 있음

여러 사용자에 적합한 다양한 인터페이스 제공

데이터 간의 복잡한 관계를 표현 -> 데이터 모델링기능

무결성 제약조건을 DBMS가 자동적으로 유지



데이터 베이스의 특징


1. 자기기술성 : 자기 자신을 표현하는 방법이 있다. 

2. 프로그램과 데이터의 분리 : 자기기술성을 통하여 

       독립적으로 존재 하도록 만든다.

3. 데이터 추상화

4. 데이터에 대한 다양한 뷰 



데이터베이스 시스템의 자기기술성 


데이터베이스에 대한 데이터(메타 데이터)를 통하여 데이터의 구조를

직접 알고 있지 않아도 데이터를 액세스 할 수 있음.


데이터와 프로그램이 독립성이 있으면 시스템의 성능은 느려진다.

계속 프로그램이 데이터를 물어봐야 하므로.


성능을 얻고싶다면, 데이터와 프로그램 사이의 의존성을 부여해준다.


데이터베이스 내의 데이터 저장구조가 변경되어도 데이터베이스 응용프로그램은 아무영향

받지 않음.


데이터의 추상화

데이터 모델을 사용함으로서 저장구조와는 별도로 데이터의 의미를

표현하는 방법을 제공함.

사람들이 인식하는 방식으로 데이터를 다룰수 있게 해줌.


데이터에 대한 다양한 뷰 


사용자는 전체 데이터베이스 보다는 관심이 있는 데이터베이스의

일부를 뷰로 정의 할 수 있음.

학생정보 DB를 보면 개략적인 내용만 나와있어.

실제 액세스는 학생들의 성격 까지 나와있음. 이게 뷰기능.

뷰라고 하는 것은 실제 데이터와 다르게 데이터를 표현. 

있는 데이터를 숨길수도, 없는 데이터를 만들수도 있음.

사용자들에게 내부구조를 숨기려고 하는 것.

기본적인 컨셉은 너네는 보여지는 데이터를 이용해 우리는 그 데이터를

활용할게



용어 정의 


ex )  

       직급 | 연봉

       대리 | 100


- 데이터베이스 스키마 : 

우리가 과목에 대한 정보를 모으고 싶어. 

그러면 학수번호, 과목이름, 교수이름, 강의시간, 학점수 등을 모아야함

이것이 스키마이다.

스키마는 변화를 자주 하지 않는다. 변화한다는 것은 필드를 수정, 삽입, 삭제

하는 것임. 

ex) 직급, 연봉

- 데이터베이스 상태 :

스키마 내의 데이터의 현재 상태 

상태의 변화는 자주 일어난다.

ex) 대리, 100


ex )  

       직급 | 연봉

       대리 | 100



데이터베이스에 변화가 일어났을때 스키마가 더 자주변화가 있을까

상태의 변화가 더 자주있을까.

-> 상태가 변환다는 이야기는 김창섭님이 대리->사장으로 바뀐다는 것.

-> 월급이 올랐어 100 -> 200 상태가 올랐음.

-> 스키마가 변화는 것은 필드가 추가 되는 것임.

-> 따라서 상태가 더 자주 변한다.



데이터 베이스 전문가들에게 있어서 

데이터베이스 구축, 설계, 모델링을 한다 -> 스키마를 정의 한다라는 의미





데이터베이스 기술의 발전은 중복을 없애는 것과의 싸움이다.

중복을 없앤다 = 데이터를 일원화 한다. 


DBMS의 사용효과


-> 표준화된 데이터 관리 : 조직 내 모든 부서에서 표준화된 문서 관리로 업무 효율증대

    

    데이터베이스 기술의 발전은 중복을 없애는 것과의 싸움이다.

    중복을 없앤다 -> 데이터를 일원화 한다.


-> 데이터 구조 변경에 융통성 부여 : 데이터베이스 내의 자료 구조가 변경되어도 

   사용자에 대한 영향은 거의 없음


-> 응용프로그램의 개발시간 단축 : 응용 프로그램이 상당한 부분을 DBMS가 처리


-> 항상 최신의 정보를 제공 : 


-> 규모의 경제성 : 부서마다 다른 방식으로 자료를 관리하는 것보다    

   통합 DB로 관리하는 것이 전체적으로 저 비용임





DBMS의 단점은 무엇일까?


1. 비용증가 - 비싸다

2. 성능감소 - 거의 모든 분야에 쓸수 있기 때문에 장착한 기능이 많음. 무거움

3. 고장의 영향 확대 - 중복된 데이터를 중복 없애면 통합됨.

   그러다 보면 데이터가 한가운데 모이게 됨.

   이렇게 되면 한곳이 고장나면 다 고장나게 됨.



데이터베이스 사용자



- DBMS 개발자 ( 핵심 코어 오라클, mySQL 을 만든 사람들 )

- DB관리자

- DBMS 설계자 ( 데이터 베이스 스키마를 만드는 사람 )

- 시스템 분석가 

- 도구 개발자

- 운영자

- 최종 사용자 ( 가장 바깥쪽에 있는 사람들, 응용프로그램 개발자, 사용자 ) 






데이터베이스를 공부하기 전에 관련 용어와 개념에 대해서 알아보자!!



데이터 


의미를 가지면서 기록 될 수 있는 알려진 사실

의미 =  객관적인 사실이 아닌 주관적인. 

(즉, 어떤사람에겐 의미가 있고,반대로 어떤 사람에겐 의미가 없을 수 있음) 누군가 에겐 데이터 일지라도, 다른 누군가에게는 데이터가 아닐 수 있다.

  


데이터베이스 


관련있는 데이터의 모임



데이터베이스 관리시스템 


데이터베이스의 생성과 관리를 담당하는 소프트웨어 패키지



데이터베이스 시스템 


Database와 그를 관리하는 소프트웨어(DBMS, 응용프로그램)

모두를 칭하는 용어



작은 세계  


데이터베이스 구축의 대상이 되는 실세계의 일부분




데이터베이스 프로그램은

적절한 시간내에 활용 할 수 있게 하는 것도 중요



파일이란?


물리적인 비트의 연속, 순차적인 레코드들로 구성

레코드는 연관된 필드들의 모임

레코드는 서로 연관된 필드들로 구성되어있다.



파일시스템의 가장 큰 문제는 


1. 데이터에 대한 프로그램의 의존도가 높다. -> 데이터 구조가 바뀌면

프로그램도 바뀌어야 한다.

2. 데이터의 중복성 -> 각각 2파일에 동일한 정보임에도 불구하고

중복되어 저장이 되면 데이터의 수정이 일어날때 

한쪽에만 수정이되고 다른 쪽에 수정이

되지 않는 경우가 발생 할 수 있음. 이 경우 데이터의 불일치 발생



+ Recent posts