컴퓨터언어(271)
-
[정규화] 효율적인 데이터베이스 스키마 구축
"효율적"인 데이터베이스가 무엇일까? 개념적 설계를 통해 이라는 개체에 필요할 만한 속성을 이것저것 넣었다고 해보자. 학번, 이름, 주민번호, 성별, 주소, 학과, 동아리, 학점, ...... 너무도 완벽한 것 같다. 마치 나의 릴레이션이라면 학생들의 모든 정보를 다 담고 있는 것 같아 행복하다. 이를 가지고 나 릴레이션과 관계를 가지면 엄청난 빅데이터가 탄생할 것만 같다. 그러나 이 많은 정보를 이라는 단 하나의 릴레이션에 다 담고 있으면, 나중에 부피가 커졌을 때 관계가 복잡해지고 유지보수에 상당한 비용을 지출하게 된다. 만약 정보를 잘못 저장한 곳이 있다면 탐색하고 수정하는 데에도 꽤 많은 비용을 들여야 할 것이다. 그리고 정보가 많은 만큼 데이터베이스의 주 적인 "중복"을 만날 수 있으며, 데이터..
2020.06.16 -
[Key] 키와 무결성 제약조건
Key는 주어진 릴레이션에서 모든 인스턴스 가운데 유일함(Unique)을 보장해주는 하나 이상의 애트리뷰트의 집합이다. Edgar Codd 데이터베이스에서 각 인스턴스를 식별할 때는 중복을 피해야 하는데, 이런 유일함을 보장해주는 것이 Key이다. 중요한 것은 이 Key가 꼭 단 하나의 속성만으로 이루어질 필요는 없다는 것이다.(Key != 속성) 물론 단 하나의 속성만으로 Key를 구성하는 것이 가장 바람직하겠지만, 데이터 저장상태 상 그럴 수 없는 상황에서는 여러 속성을 합쳐서 유일성을 확보할 수 있다면, 그렇게 Key를 구성할 수 있다는 것이다. 이렇게 하나 이상의 속성으로 구성된 Key를 "복합Key"라고 한다. 유일성 : 단 하나의 인스턴스(튜플)를 골라낼 수 있는가의 여부 최소성 : 유일성을 ..
2020.06.16 -
[Relationship] "관계"가 들어간 다양한 용어 정리
관계(Relationship)는 두 개체(Entity Type) 간 논리적 연결을 뜻한다. ER 다이어그램에서는 마름모로 표시하며, 만약 A와 B의 관계가 1:n 이라면 A가 B를 바라볼 때 n이기 때문에, B 바로 옆에 n을 적고, B가 A를 바라볼 때 1이기 때문에, A 바로 옆에 1을 적는다. 다대다 관계는 매우 복잡하기 때문에, 각 개체가 가진 식별자(기본키)를 외래키로 사용하는 "교차 테이블"을 사용한다. 교차 테이블은 징검다리로서 각각 1:n인 두 테이블로 변형시켜 데이터의 가공을 용이하게 한다. 1. 종속관계 : 두 개체 사이의 주/종 관계를 나타냄 식별관계 : 상대방의 기본키가 나에게는 외래키로 되면서, 나에게도 기본키가 됨. 비식별관계 : 상대방의 기본키가 나에게는 외래키로 되면서, 나에..
2020.06.15 -
[Attributes] "속성"이 들어간 다양한 용어 정리
Entity Type을 가지는 각 Instance들은 모두 Attributes를 갖고 있다. 우리는 이 속성을 여러 기준으로 나눌 수 있다. 1. 단순속성 vs 복합속성 : 한 속성의 값이 여러 개념을 포괄하고 있는가? 단순속성 : 더 이상 분해할 수 없는 속성 복합속성 : 단순속성으로 분해할 수 있는 속성 즉 복합속성은 더 쪼개질 수 있다는 것이기 때문에, 좋지 않은 값이다. 대표적인 예로 "서울시 강남구" 같은 주소는 "서울시"와 "강남구"로 쪼갤 수 있는 것과 같다. 따라서 속성은 단순속성으로 구성되어야 하고, 이를 "원자 값으로 구성되어 있다"라고 한다. 2. 단일값 속성 vs 다중값 속성 : 한 속성에 값이 여러 개인가? 단일값 속성 : 한 속성에 값이 한 개만 들어있음 다중값 속성 : 한 속성..
2020.06.15 -
[Database] 데이터베이스 만드는 순서, 스키마의 종류
데이터베이스를 만들 때는 다음과 같은 순서를 따른다. 1. 사용자의 요구분석을 한다. - DA(Data Analyst)의 전문영역 고객이 "이러이러한 데이터베이스를 만들어주세요" 라고 의뢰한 것을 수락하고 분석하는 단계. 2. 개념적 설계를 한다. - DA(Data Analyst)의 전문영역 => 개념 스키마 도출 현실 속 정보를 컴퓨터에 데이터베이스화할 대상체(Entity)를 결정하는 단계(Data Modeling). 학생들의 정보를 데이터베이스화한다면, 학생들의 정보가 이라는 개체(Entity)가 되는 것이고, 그 이라는 현실 속 개념을 컴퓨터 내 개체로 표현하기 위해서 필요한 것이 속성(Attributes)이다. 만약 라는 개체도 동일한 방법으로 따로 데이터베이스화했다면, 과 개체의 관계(Relat..
2020.06.15 -
[Entity] 용어정리
개체라는 뜻의 Entity는 정확히 말하면 "개체타입" Entity Type이다. 개체타입은 한 릴레이션이 담고 있는 데이터들을 통칭하는 상위개념으로, 학생 테이블에서의 그 "학생"이라는 상위 개념을 의미한다. 그리고 그 학생이라는 개체타입을 구성하는 속성들의 집합을 Schema라고 한다. 이 개체타입을 기반으로 생성되는 실제 데이터, 즉 레코드는 개체 인스턴스 Entity Instance라고 한다. 개체 인스턴스들의 집합을 개체집합 Entity Set이라고 한다. class 개념과 비교해보면, Entity(Entity Type)는 정의한 클래스이고, 각 레코드는 클래스를 인스턴스화한 각 객체이다. Entity Instance는 보통 그냥 Instance라고 줄여서 말한다. Instance는 데이터를 보..
2020.06.15