coding base/DataBase 13

[DB] 관계

관계(Relationship)의 정의 두 엔티티 사이의 관련성을 나타내는 용어 현실세계에서는 여러 사물들이 상호 관련성을 가지고 움직이기 때문에 이를 모델링하면 엔티티와 엔티티 사이의 관계로 표현 ERD에서는 두 엔티티가 관계있다는 사실을 나타내기 위해 두 엔티티를 선으로 연결하고 학생 입장에서 수강과목이 어떤 관계에 잇는지, 과목 입장에서 학생이 어떤 관계에 있는지를 연결선 위, 아래에 표현해준다 실무적인 관점에서 보았을 때 두 엔티티가 관계가 있다는 의미는 상호 공유하는 속성이 있다는 의미 누가 어떤 과목을 수강하는지를 알기 위해서는 데이터가 저장되어야 함 데이터가 저장되어 있다면 우리는 어떤 학생이 어떤 과목을 수강하는지 쉽게 알 수 있으며, 이것이 가능한 이유는 두 테이블이 학번이라는 공유 속성을..

[DB] 속성

속성 (Attribute) 속성이란 엔티티에서 관리해야 할 최소 단위의 정보 항목을 말하면 엔티티는 하나 이상의 속성을 포함한다 현실세계에서 하나의 엔티티는 많은 정보를 포함할 수 있음 모델링 과정에서는 포함하고 있는 모든 정보 항목을 속성으로 표현하지 않음 엔티티의 경우와 마찬가지로 엄무에서 관심이 있는 정보 항목만을 속성으로 취함 속성은 ERD에서 박스 하단에 세로 방향으로 표시 엔티티의 속성은 테이블의 컬럼과 대응 테이블에서는 컬럼이 세로 방향으로 배치되는데, 엔티티의 속성은 세로로 배치되기 때문에 처음에는 엔티티와 테이블을 일치시켜 생각하기 어려움 데이터 모델링에서 연습해야 할 것 중 하나는 엔티티를 테이블과 연관지어 생각하는 것 엔티티를 보면서 대응되는 테이블을 상상할 수 있어야 하며, 반대로 ..

[DB] 엔티티

엔티티 (entity) 현실세계를 데이터 관점에서 모델링할 때 사용되는 핵심적인 개념 엔티티란 - 업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 관리할 필요가 있는 유형, 무형의 사물을 말함 예를 들어 회원제 인터넷 쇼핑 사이트에서 정보를 관리해야 할 필요가 있는 회원, 상품, 쇼핑카드와 같은 사물을 엔티티라고 함 회원이나 상품은 실제로 존재하는 유형의 사물이지만 쇼핑카트는 인터넷상에만 존재하는 무형의 사물 눈에 보이지 않는 무형의 사물도 정보를 관리해야 할 필요가 있다면 엔티티 객체지향의 개념에 익숙한 독자라면 엔티티가 클래스에 해당하고 엔티티의 인스턴스는 객체에 해당한다는 것을 알 수 있다 모델링 단계에서는 인스턴스는 크게 중요하지 않음 물리적 설계 단계에서 엔티티와 인스턴스는 각각 ..

[DB] 데이터 모델링

논리적 데이터베이스 설계 - 현실세계의 업무를 분석하여 이를 약속된 표기법을 사용하여 개념적 모델로 표현하는 과정 - 전체 데이터베이스 설계에서 핵심적인 부분 논리적 데이터베이스 설계 과정 = 데이터 모델링 데이터 모델링 약속된 개념들을 사용하여 현실세계를 표현하는데 엔티티, 속성, 관계 등 효율적인 모델링을 위해 지원 도구를 사용하는 경우 많음 모델링 도구의 사용법을 익히는 것이 필요 현실세계를 분석하는 방법을 배우게 됨 분석한 내용을 모델로 표현하는 방법을 단계적으로 배움 학습된 내용을 가지고 데이터 모델링을 수행하게 되면 최종적인 산출물(output)은 ERD ERD를 그릴 줄 알아야 하지만 다른 사람이 그려놓은 ERD를 보고 역으로 현실세계의 업무를 추론하여야 함 데이터베이스와 모델링 용어의 대비..

[DB] 정보시스템 구축 & 데이터베이스 설계

데이터베이스 설계는 독립적인 분야로 간주 될 수 있지만 정보시스템을 구축하는 과정의 일부 데이터베이스 설계의 특성을 이해하기 위해서는 정보시스템 구축을 위한 전체적인 절차 가운데서 데이터베이스 설계가 어떤 위치를 차지하는가를 살펴보는 것이 중요 정보시스템이 S/W이므로 기본적으로 개발 절차를 따름 다른 S/W와 달리 대부분의 정보시스템은 데이터베이스를 기반으로 개발이 이루어진다는 특징이 있음 1. 정보전략 계획 수립(Information Strategic Planning) 정보시스템 구축의 선행 단계로서 정보시스템을 구축하고자 하는 기업의 경영전략 및 장단점 분석하고 현행 업무 절차를 평가하여 개선사항 도출하여, 새로운 전략 및 업무 절차에 기초하여 정보 시스템 구축 계획을 수립하는 단계 정보시스템 구축..

[DB] 데이터베이스 설계

정보시스템을 구축하거나 웹사이트 개발할 때 데이터베이스를 제외하고 생각하기 어려움 정보시스템이나 웹 사이트에서 필요로 하는 데이터를 데이터베이스에 저장하고나중에 다시 불러오는 형태로 개발 시스템 개발자들은 기본적으로 데이터베이스 연동 프로그래밍이 기본적인 지식으로 되어 있음 데이터베이스를 기반으로 시스템을 개발하기 위해서 먼저 데이터베이스가 구축되어야 함 데이터베이스 설계란 데이터베이스 안에 어떤 테이블들이 있어야 하고 각 테이블들은 어떤 컬럼이 있어야 하며, 기본키와 외래키는 어떤 것인지를 정하고, 응용프로그램에서 필요로 하는 뷰와 인덱스를 생성하는 일련의 과정 현실세계에 대한 분석이 있어야 함 데이터베이스 안에 테이블을 생성하는 과정뿐만 아니라 현실세계에 대한 분석, 논리적 설계, 물리적 설계, 데이..

[DB] 추상화(abstraction) & 모델링(modeling)

데이터베이스 설계 과정은 소프트웨어(정보 시스템) 개발 과정의 일부이며. 소프트웨어의 개발 과정은 곧 현실세계에 대한 추상화 과정으로 설명 데이터베이스 설계 능력은 현실세계를 추상화할 수 있는 능력과 일치 추상화의 개념을 이해하는 것은 소프트웨어의 개발이나 데이터베이스 설계를 이해하는 데 많은 도움이 됨 추상화 모델(model)이라는 수단을 통해 이루어지기 때문에 추상화를 모델링이라고 표현하기도 함 우리는 모델이라고 지칭하지는 않지만 생활에서 많이 이용 모델, 모델링, 추상화 모델 - 사람들이 복잡한 현실세계를 쉽게 이해하기 위해 현실세계를 개념화, 단순화시켜 표현한 것 모델링 - 모델을 만드는 과정 추상화 - 이러한 과정을 다른 말로 현실세계에 대한 추상화 과정 추상화 과정은 소프트웨어 개발과 밀접한 ..

[DB] SQL 언어

관계형 데이터베이스의 장점 중 하나는 사용자들이 쉽게 사용할 수 있는 SQL (Structured Query Language) 언어를 제공한다는 것 사용자는 간단한 SQL문을 사용하여 DBMS에게 작업 요청 가능 기본적인 SQL문들은 표준화되어 있기 때문에 거의 DBMS 제품에 동일하게 적용 SQL 언어는 비절차적 언어 (non_procedural language) 사용자는 자신이 원하는 것만을 명시하며, 원하는 것을 DBMS가 어떻게 처리할지는 명시할 필요가 없음 SQL 언어는 자연어와 비슷한 문법체계를 가지고 있기 때문에 처음 보는 사람도 SQL문의 의미를 이해하는 것이 어렵지 않음 사용자들은 SQL이 다른 언어에 비해 배우기 쉬운 것으로 느낀다 사용자/개발자는 두가지 방식으로 SQL 이용할 수 있음..

[DB] 뷰 (View)

관계형 데이터베이스를 이해하는 데 뻬놓을 수 없는 것이 바로 뷰 (view)임 뷰는 단어의 뜻 그대로 하나의 테이블, 혹은 여러 테이블에 대해서 특징 사용자나 조직의 관점에서 데이터를 바라볼 수 있도록 해주는 수단으로서 가상 테이블이라고도 부름 같은 사원에 대한 정보이지만 이렇게 부서별로 필요로 하는 세부항목은 다를 수 있음 과거의 파일 시스템 환경에서는 이런 경우 세 걔의 부서에서 필요한 사원 파일을 각각 생성하여 사용함 그 결과 데이터의 중복성, 불일치와 같은 문제가 발생 관계형 데이터베이스에서는 데이터를 개인이나 개별 부서 단위의 관점에서 보는 것이 아니라 조직 전체의 차원에서 보기 때문에 세 개의 사원 정보를 관리하지 않고 하나의 사원 정보 테이블에 모아서 관리함 사원 테이블이 인사팀, 기획실, ..

[DB] 기본키와 외래키

데이터베이스 설계를 위해 반드시 이해해야 할 개념 중의 하나가 기본키(primary key)와 외래키(foreign key)이다. DBMS를 구현해야 하는 입장에서 보면 중복된 튜플이 삽입되는지를 확인하는 것은 쉬운 일이 아님 1번 튜플이 삽입되는 경우는 이미 존재하는 모든 튜플에 대해 모든 컬럼이 같은지를 일일이 검사해보면 중복 여부를 알 수 있지만, 튜플 수가 수십만 개에 달하는 경우는 비교 시간이 매우 오래 걸리기 때문에 현실적인 방법이 아님 2번 튜플의 경우는 의미적 중복이지만 데이터의 의미를 이해할 수 없는 DBMS로서는 2번 튜플이 의미적으로 중복인지를 알아낼 방법이 없음 후보키 (candidate key)란 테이블에서 각 튜플을 구별하는 데 기준이 되는 하나 혹은 그 이상의 컬럼들의 집합 <..