database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 29980 게시물 읽기
No. 29980
초보입니다. 질문 드립니다.
작성자
SL
작성일
2011-05-03 04:52
조회수
8,054

"DB (database)의 기본 설계가 지나치게 한 record에 종속적이어서, 사용자가 필요한 기능을 추가하거나 기존 기능을 변화시키기에 어렵다"란 문장을 책을 읽다가 보았습니다.

 DB의 기초적인 개념이나 record나 field가 무엇인지는 대강 알고 있는데, 초보여서 위 문장이 구체적으로 정확히 어떤 의미인지 잘 알 수가 없어서, 뇌입원 지식인에 질문한 적이 있었고 아래와 같은 답변을 얻었습니다.

===============

'고객정보' 테이블이 있는데, 이 테이블에는 '이름', '정보' 라는 이름의 2개 테이블이 존재한다고 가정하겠습니다.

그럼 고객의 정보를 입력할때..

 '홍길둥', '나이는 12살이고 학교는 서울에 있는데 원하는 상품의 종류는 무척이나 다양하고 돈은 많지 않은것 같다'

 라고 데이타를 입력했다고 가정하겠습니다.

 입력할때는 참 편하겠죠. 입력자 마음대로 그냥 써서 입력하기만 하면 되니까요..

 이렇게 1억명의 정보를 입력해 두었는데

 나중에 이 '정보' 필드를 좀 구분해서 분류를 할 필요성이 대두되면..

 그만큼 노가다를 해서 분리를 해야겠죠.. 이 기간과 비용은 참 많이 소요가 될 수 있습니다.

 이 예는 무척 간단하게 설명을 한 예입니다. 실제로 필요한 기능 추가나 기존 기능을 변화하는

 부분들은 무척 사례가 다양합니다. 이를 설명하고자 하면 RDBMS 의 relation 정도를 전제로

 설명을 할 필요가 있기 때문에 복잡해져서.. 이 정도로 만 설명을 마치겠습니다.

 대개의 경우.. 실제로 설계가 문제되는 부분은 대개의 경우 위와 비슷한 잘못된 초기 Database 설계 사례

 들로 발생되어지며 이를 개선을 목적으로 변경/변화 시키는 작업은 데이타 량이 많으면 많을수록,

 relation 이 복잡하면 복잡할수록 시간 및 비용은 많이 소모될 것입니다.

(추가 답변) 

       이 부분 대해 더 자세히 설명을 드리자면, 제가 설명드린 간단한 개념에서 한 걸음 더 나아가서 복잡한 부분으로 넘어가게 됩니다.

        먼저 종속성이란 무엇인가에 대해서 이해를 하셔야 위에서 예기하신 'DB가 한 record에 종속적 이다.' 란 말을 이해할 수 있습니다.

        RDBMS 란 관계형 데이타 베이스 입니다. 이 관계형 데이타베이스는 각각의 테이블들이 특정속성들에 의해서 서로간의 연결고리를 이음으로써

        유연하게 데이타베이스를 구성할 수 있는 것을 의미합니다. 이렇게 필요한 연결고리들은 테이블을 생성하는 단계에서 혹은 그 이후에 지정되어진

        Unique key, Primary key, Foreign key 등 특정 key값 혹은 그와 비슷한 것들이 될 수 있습니다. 이러한 관계형테이블 구조를 구성하게 된다면,

        초기 설계가 잘못된 경우 종속성 문제가 더 심화될 수 있습니다. 위에서 한 레코드에 종속적 이다 라는 표현은 그 부분까지 들어가지 않고,

        그저 간단히 가로줄(행) 에 종속적이다 라고 보시면 될 것 같습니다. '고객정보', '홍길동' 은 각각의 필드로 구성되어져 있으며, 이는 1개의 세로줄로 데이타가

        들어가게 됩니다. 제가 설명드린 바는 1개의 레코드에 1명의 고객에 대한 정보가 들어가 있는데, 이 1명의 고객에 대한 정보중 중요한 모든 부분은 전부

        '고객정보' 안에 들어가 있다는 것입니다. 원래의 경우는 '고객정보' 가 아니라 '나이', '학교', '선호상품', '등급' 등으로 분류가 되어야 하는것이 맞습니다.

        하지만 이렇게 1개의 '고객정보' 안에 모든데이타가 들어간 경우 이 1명의 고객에 대한 모든 정보는 이 '고객정보' 필드안에 종속적이기 때문에

        나중에 유연하게 Database 를 운영하기가 어렵다는 것입니다. 이 데이타가 수백억 건에 이를경우 특정고객에 대해서 데이타를 조회시 이 모든부분들을 일일이

        다 조회해야 하기때문에 극도의 성능저하가 나오게 되는것입니다.

============================

 

위 설명을 어느 정도 이해할 수는 있엇는데, 이 부분은 여전히 의문으로 남습니다. 뭔가 하면, 일단 위에서 다음과 같은 설명이 있습니다.

 

    원래의 경우는 '고객정보' 가 아니라 '나이', '학교', '선호상품', '등급' 등으로 분류가 되어야 하는것이 맞습니다.

    하지만 이렇게 1개의 '고객정보' 안에 모든데이타가 들어간 경우 이 1명의 고객에 대한 모든 정보는 이 '고객정보' 필드안에 종속적이기 때문에

    나중에 유연하게 Database 를 운영하기가 어렵다는 것입니다.

 

'고객정보' 필드를 좀더 세부적인 항목으로 쪼개어 나이, 학교, 선호상품 등의 여러가지 필드로 나누는 것이 좋다는 것은 잘 이해가 되고 어느 정도 알고 있었습니다.

그런데 이와 같이 필드를 제대로 나누어 구성해 놓지 못하여 (말씀해 주신 것처럼) "모든 정보가 고객정보 필드에 종속적"인 상황을 기술함에 있어서, 제가 본 원 책에서는 왜 "DB의 기본 설계가 지나치게 한 '레코드'에 종속적"이라고 적어 놓았을까요?

제 생각에는 제가 본 원 책이 DB에 대해서는 비전문가(medical laboratory information system에 대하여는 약간이나마 지식이 있지만)인 사람이 쓴 것이라, 원래는 "데이터베이스가 한 '필드'에 종속적이다"라고 해야 할 것을 "레코드에 종속적"이라고 잘못 기술한 것이 아닌가 싶은데...

어떻게 생각하시는지요?

그럼 고수님들의 답신을 기대하며... 초보의 뜬금 없는 질문이지만 잘 부탁 드립니다.

감사합니다.

이 글에 대한 댓글이 총 1건 있습니다.

저도 초보인데요 ^^; 그냥 글을 읽고 느낀 제 생각을 적어봅니다...^^;

자나가는 행인이 흘려 말한다고 생각하시고 읽어보세요 ^^;

제가 생각하기엔 "모든 정보가 고객정보 필드에 종속적" 이 말은 정보를 하나의 속성으로 관리 했을때 즉 하나의 필드로 여러 정보를 관리했을때의 이야기이고, "DB의 기본 설계가 지나치게 한'레코드'에 종속적" 이 말은 정규화와 관련된 이야기 인듯 합니다.

JaCkalRedi님이 2011-05-03 19:34에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
29983MYISAMCHK와 OPTIMIZE TABLE 여러분의 선택은? [2]
박성원
2011-05-05
8372
29982groonga에러 [1]
Mr.Lee
2011-05-03
11049
29981mysql_slow_log_filter 도구 질문
손님
2011-05-03
8749
29980초보입니다. 질문 드립니다. [1]
SL
2011-05-03
8054
29978재고집계 출력하기 [1]
김양훈
2011-04-29
7823
29977*와 all의 차이점
완전초보
2011-04-28
7928
29976테이블 관련 질문 입니다.. 조언 부탁 드립니다. [2]
조영석
2011-04-26
8105
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.030초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다