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
운영게시판
최근게시물
DBMS Q&A 276 게시물 읽기
No. 276
[질문]추가적인 애트리뷰트가 필요할떄, 그것을 어떻게?
작성자
서준원(linuxqna)
작성일
2002-01-08 14:54
조회수
7,652

너무 많이 여쭤봐서 이제는 미안할 지경입니다.

너그러히 봐주세요

 

예를 들어서 아래와 같은 사용자에 대한 기본적인

정보를 가진 user 테이블이 있다고 가정을 합니다.

 

user

--------------

|PK name |

--------------

| passwd |

| uid |

| gid |

| dir |

| shell |

--------------

 

그리고 이 유저에 대한 기타 프로파일을 추가해야 되기 때문에

profile 이라는 테이블을 부가적으로 만들었습니다.

 

user 테이블이 부모 테이블이 되고,

profile의 name을 user 테이블에 대한 FK 로 됩니다.(1:1 대응관계)

 

profile

--------------

|PK,FK name |

--------------

| passwd |

| uid |

| gid |

| dir |

| shell |

--------------

 

후에 각각의 유저에 대한 인증서 정보(DN, usercert, userprivate) 가

부가적으로 필요하게 되었습니다.

 

여기서 고민이 생깁니다.

제가 생각해볼 수 있는 방법이 2가지가 있었습니다.

 

방법 1. profile 테이블에 DN, usercert, userprivate 필드를 추가한다.

 

방법 2. 아래와 같이 certificate 테이블을 추가한다

 

certificate

-----------------

|PK,FK name |

-----------------

| dn |

| usercert |

| userprivate|

-----------------

 

어떤 방법을 쓰건 문제될건 없다고 생각이 되는데.

어떤 방법이 DB 모델링 관점에서 볼때 추천할만한 모델인지 궁금합니다.

 

그럼 고수님들의 한수지도 부탁드립니다.

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

일단 user table 에서 name 이 PK 로 설정하는데 대해서 문제가 없는가요. name 필드는 혹시 동명 이인이 들아갈 가능성은 전혀 없는가요? 그리고 unique 하다는 것이 항상 보장되는가요? 만약 그렇다면 현재의 테이블 구조는 전반적으로 문제가 없습니다.

 

하지만 name 필드가 unique 하지 않을 가능성이 조금이라도 있다면 name 이 PK 로 될수 없습니다. 아마도 성격상 uid 가 unique 한 PK 가 될 가능성이 커 지겠지요. 잘 생각해 보시기 바랍니다.

 

그리고 1:1 대응이라면 그리고 항상 user table의 한 항목에 대해서 profile 테이블의 한 항목이 한개 반드시 대응이 되어 생긴다면 하나의 테이블로 합치는게 나을수도 있습니다. 굳이 테이블을 분리해야 하는지 아니면 합치는게 좋은지도 잘 생각해 보시기 바랍니다. 물론 모델링 적인 측면에서 볼때는 적은 애트리뷰트를 가지는 여러개의 테이블로 나뉘는 것이 유리할 경우가 많지만 반드시 그렇다고 할수는 없습니다.

 

다음으로 profile 테이블에 user 테이블과 같은 항목이 FK 를 제외하고도 있는데 이것은 고려해 봐야 할 사항입니다. 중복되는 정보를 넣을 필요는 없겠지요.

 

다음으로 certificate 테이블은 말씀하신 것 처럼 추가하는 것이 나을 것으로 판단됩니다.

 

디비 모델링을 고려 할때는 자료의 무결성을 보장 할 수 있어야 하고, 프로그램의 알고리듬을 간편화 할수 있어야 하며, 디비 및 프로그램의 수정시 유지 보수가 편해야 한다는 것입니다. 그리고 추가적으로 자료로의 접근, 추출, 갱신 등이 빨라야 하며, 디비를 차지 하는 공간을 줄여야 할 필요성도 있습니다. 하지만 항상 그렇지만 모든 것을 만족 할수는 없습니다. 적당한 선에서 타협을 잘해야 겠지요. 이럴 땐 보면 정치인이 디비 모델링을 잘 할수 있는 소지가 있다고 생각해 봅니다. :-)

정재익(advance)님이 2002-01-09 01:13에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
292데이터타입... [1]
김명수
2002-01-13
7117
291한번에 찾는 like 는 없나요..?
이효택
2002-01-13
7685
287버클리 DB에 관한 질문
백민준
2002-01-11
7641
289┕>Re: 못찾으신 것 같군요. [1]
정재익
2002-01-13 08:44:32
7884
276[질문]추가적인 애트리뷰트가 필요할떄, 그것을 어떻게? [1]
서준원
2002-01-08
7652
277┕>답변 감사하고 수정된 질문 내용입니다.(죄송)-_- [1]
서준원
2002-01-09 08:26:08
8061
273[질문]FK 의 설정에 대해서. [2]
서준원
2002-01-08
8130
275┕>Re: [질문]FK 의 설정에 대해서. [1]
서준원
2002-01-08 13:25:36
8913
278 ┕>[질문]죄송.. 약간의 풀리지 않는 궁금점이 남아서
서준원
2002-01-09 09:02:06
8129
284  ┕>Re: [질문]죄송.. 약간의 풀리지 않는 궁금점이 남아서 [1]
김대성
2002-01-09 23:48:18
9096
267[질문]PK가 너무 많아서.. 설계가 잘못된 것인가요? [1]
서준원
2002-01-07
7841
268┕>Re: [질문]PK가 너무 많아서.. 설계가 잘못된 것인가요?
서준원
2002-01-07 16:23:14
8238
266[질문]주소록 스키마좀 봐주세요 [1]
서준원
2002-01-07
8552
271┕>Re: [질문]주소록 스키마좀 봐주세요
김대성
2002-01-08 00:56:59
8584
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다