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
운영게시판
최근게시물
Oracle Q&A 34038 게시물 읽기
No. 34038
성시현님께 여쭤봅니다.
작성자
김흥수(protokhs)
작성일
2008-07-05 23:49
조회수
1,980

음...

이렇게 직접적으로 성함을 거명해서 죄송합니다.


그런데... 좀 궁금해서요...

FK 관련해서 여쭤봤던 김흥수입니다.


성시현님의 말씀을 들어보면 FK가 없어야 되는 상황이 있다는 것은 알겠는데요...

일일히 따지기는 껄끄럽구요... 어쨋든 그런 상황이 존재한다는 것은 납득이 되거든요...


그런데...

요점은

그런 정책을 세우는가? 입니다.


정말 그렇게 정책을 세우나요?

예를 들면 PK는 인정하지만 FK는 인정하지 않는다. 이런식의...


만약 그렇다면...


그런 정책이 과거 자료 뿐 아니라 신규로 작성되는 완전 새로운 App에도 적용되나요?


이 글에 대한 댓글이 총 5건 있습니다.
김흥수님 안녕하세요...제가 쓴 글에 오해의 소지가 있었나요?
저는 단순히 먼저 달린 댓글의 "대용량DB 프로젝트에서 단지 구성원들의 기술부족으로 FK를 안쓴다"는 내용의 다른 분의 글을 보고 울컥해서 그부분에만 집중해서 쓴 글이었습니다...;

저 또한 작지않은 규모의 건설회계 프로젝트로 시작하여 현재 대형 프로젝트까지 16년짜리(?) 개발/설계/튜너/PL/PM등 입니다...^^;

FK만 놓고보면 프로젝트 초기에 실제 그러한 정책을 세우지요.
물론 100% 전부 그렇단 말은 아닙니다. 개념없이 간과하는 PM분들도 더러는 분명히 계십니다.

하지만 저같은 경우는 많은 설계 시 PK없는 모델은 한 군데도 못 봤습니다. 
물론 제 경우는 PK 없어도 된다는 그런 말 조차 들어 보지도 못했습니다.
(누군가가 PK없어도 된다고 했을 때 이런 문제로 그분들과 싸웠던가? 솔직히 기억이 안납니다만.^^)

프로젝트 초기에 FK를 유지할꺼냐 Cleansing하고 갈꺼냐에 대한 선택을 고객사에 맡기면 거의 100% 이전 데이터를 원본 그대로 유지하려 합니다.
특히 고객의 정보나 이력데이터인 경우는 과거에서부터 틀려왔던 데이터인 것은 누구나 인정합니다.
하지만 법적인 성격의 문제가 포함되어있는 데이터들이라 현실적으로는 일방적인 프로젝트내에서의 가공이 쉽지만은 않습니다.

그리고 대형프로젝트인 경우 데이터품질검사 전문 파트에서 여러 시나리오 Case Step들에 대해 데이터 검수를 꾸준히 진행합니다.
이때 FK 관리정도의 수준이 아닌 더 심오한 데이터의 품질검증이 가능하다는 것이었습니다.

물론 신규프로젝트인 경우 저도 완벽한 DA 관리를 적극 찬성합니다.
그러나 과거 R-DB개념을 몰랐던 때부터 진행해온 업무들에 대한 차세대성격의 프로젝트인 경우 현실에서 부딪히는 벽이 생각보다 높고 두터운 경우가 많이 있을겁니다...^^;
성시현(finecomp)님이 2008-07-07 10:25에 작성한 댓글입니다.

상세한 답변 감사합니다...


제가 논지를 정확히 이해했는지 확인을 부탁 드립니다.


1. PK 안가져가는 곳은 못 봤다.

2. FK가 없는 경우는 많은 경우 과거자료 때문이며 정책적으로 그러는(FK 가져가지 말라는 정책)

  경우는 잘 보지 못했다.

3. 데이타의 정합성의 문제는 단순히 FK 만의 문제는 아니며 그 보다 더 심오한 품질검사를 거친다.

4. 가능한 신규 프로젝트는 DA 관점을 준수하는 것이 합당하다.


대략 이런 의미신것 같은데...


맞으신가요?


그리고 전 성시현님께서 FK 없는 상황을 옹호하신다고 생각하 적은 없습니다...


단지 경험이 풍부하신 것 같아서 여쭤본것입니다.


많은 도움이 되었습니다.

제가 오해한 부분이 있다면 지적을 해주시기 바랍니다.

^^

김흥수(protokhs)님이 2008-07-07 19:07에 작성한 댓글입니다.
오해한 부분은 없으신 듯 합니다...제가 글주변이 별로라서 송구하군요...^^;

다만 2번의 내용을 보충하자면 FK생성이 어려운 경우는 많은 경우 과거자료 때문이며,
이런 경우 정책적으로 데이터를 가공할 지 FK를 포기할 지 고객사와 함께 결정한다는 말이구요.

3번을 부연하면 더 심오하다고 표현한 것들 중 대표적인 한두가지는 
영역무결성에 대한 검증 및 코드도메인과 인스턴스에 대한 검증입니다.
특히 코드 인스턴스의 검증과정 중 FK의 참조무결성과 연관되는 Case들이 상당부분 도출됩니다.
왜냐하면 PK가 코드성을 포함하는 경우 같은 인스턴스들을 Master에서도 써야하니 이런 경우는 자연스럽게 코드 도메인에 인스턴스가 등록되지 않은 값들은 애초에 Master의 데이터도 생길 수 없고 따라서 Child도 생길 수 없는 Case가 만들어지니까요...;

튜너의 입장으로 또 한가지 첨언하자면,
피치 못할 대량데이터의 작업(주로 배치작업이겠죠)인 경우 인덱스나 제약조건이 많으면 많을수록 성능저하 및 서버부하도 많아지겠지요.

다른질문의 처음글에서도 비췄지만 선택의 문제라는 것이죠.
데이터면에선 오류나 누락으로 애초에 막느냐 / 과거 데이터의 원본 보존에 더 큰 중점을 두고 신규 데이터부분은 수시로 검증단계를 수행하느냐에서 부터 
성능과 전체적인 효율 및 시스템밸런스를 위해서 어떠한 개발방법론이 더 합당하냐...등등

골치는 아프시겠지만 적당히 할 수는 없는 부분이라 이런 고민을 하시는 것 같습니다.
갑자기 광고문구가 생각나는군요...당신이 머리아픈건 남보다 더 열정적이기 때문이겠죠?...^^;

건승하시길...수고하세요~~
성시현(finecomp)님이 2008-07-08 14:05에 작성한 댓글입니다.

김흥수님이 재미있는 주제를 던지셨네요.


저의 얄팍한 경험을 말씀드리자면, 관성이라고 봅니다. 해당 업계에서 통상적으로 사용되던 정책이 있으면 그걸 쉽게 바꾸고 싶어하지 않고 실상 바꾸기 쉽지도 않습니다.


FK같은 경우에는 정말 여러가지 이유로 적용이 쉽지 않은 사이트를 많이 만나게 되더군요, 수많은 히스토리와 의례히 FK를 사용하지 않아온 해당 업계 개발자들의 관성들도 만나게 되지만, 성시현님도 말씀하신 내용과 겹치기도 하는데 고객사와 고객사를 둘러싼 무수한 협업관계의 조직들간의 정치적 관계도 무시할 수가 없더군요. 


예를 들자면 데이터를 주시는것만으로도 감지덕지 해야 하는 상황이 닥치구요.


앞서 게시하신 게시물에도 재미있는 경험, 의견이 많이 있던데 길지 않은 글을 정리해보자면 요렇습니다.


1. 해당 업계에서 통상적으로 사용되던 정책이 있으면 쉽게 바꾸려고 하지 않는다.

2. 고객사의 이해와 고객사를 둘러싼 협업관계 조직들과의 정치적 관계가 시스템의 정상적 규칙을 위배하는 경우가 발생한다.

3. 시스템의 유연성이란 개발 편의성으로 해석되는 경우가 많다.

백민호(Meteo)님이 2008-07-08 17:31에 작성한 댓글입니다.

시스템의 유연성이란 개발편의성으로 해석되는 경우가 많다.!!!


이 말씀이 가슴을 후벼파는군요....



ㅋㅋ


저 오늘 테스트 데이타 만들다가 실수했습니다....


FK 없는 환경에서 일한지 얼마 되지 않아 바로 실수하는군요....

김흥수(protokhs)님이 2008-07-08 20:55에 작성한 댓글입니다.
이 댓글은 2008-07-08 20:57에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
34042테이블이 필드 순서 변경 가능한가요? [1]
짜집기
2008-07-07
1955
34041총계 구하기... [4]
차이
2008-07-07
2745
34040수불테이블 관련해서 조언좀 부탁드립니다. [2]
초보자
2008-07-07
3122
34038성시현님께 여쭤봅니다. [5]
김흥수
2008-07-05
1980
34037조인시 중복 제거요.. [1]
fell
2008-07-05
3294
34036select 쿼리문 질문 입니다. 부탁드려요. [7]
산호세달밤
2008-07-04
2773
34033하나만 알려주세요 [3]
system
2008-07-04
1903
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다