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 1097 게시물 읽기
No. 1097
[초보 허접질문] 결국항상 seq를 써야만 하는것인가요?
작성자
박기원
작성일
2005-04-06 17:03
조회수
11,081

안녕하세요?

저는 디비설계를 전문적으로 하는사람은 아닙니다.

조금만회사에서 혼자 뒤적뒤적하는 개발자입니다.

궁금한것이 있는데요

학사 관리 시스템 등에서

다음과 같은 테이블이 있습니다.

과목 코드 | 과목명

AAAA | 국어

BBBB | 영어

 

그리고 수강 현황 테이블은

학생 아이디 | 수강과목 코드

student1 | AAAA

student2 | BBBB

 

이럴 경우 수강 과목코드를 나중에 보니 잘못해서 코드명을 변경해야 한다면 '수강현황' 테이블도 변경을 해줘야합니다.

이럴 경우를 대비하고자 한다면 모든 테이블에

sequence등을 하나 더 달아서 이 sequnce를 이용해서 관계를 물면 다른 연결된 테이블의 수정은 안해줘도 될것같습니다.

 

모델러의 성향에 따라 다르기는 하지만... 초보의 입장에서는 결국 모든 테이블에는 이런식으로 해줘야 할거는 같은데.....

 

수정이 일어나느냐 안일어나느냐에 따라 디자인의 스타일이 바뀔것은 같으나 수정이 안일어난다는 보장이 없다면... 전부 sequece를 달아서 설계를 해줘야하나요?

 

아니면 수정이 있을때 마다 관계된 테이블의 컬럼 값도 변경을 해줘야하나요??

 

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

관계의 제약조건에 관련해서..

외부키(foreign key)와 캐스캐이딩(cascading) 을 검토해 보시길..

더불어 안정적인 성능과 효과를 위해서...

트랜잭션(transaction) 과 트리거(trigger) 도 검토해 보시길...

이경환(babocom)님이 2005-04-07 01:26에 작성한 댓글입니다.

무슨 말씀인지..

코드명을 변경한다는게 과목코드 "AAAA","BBBB"의 값을 변경한다는건 아니겠죠?

코드테이블에서 변경되어야할것은 단지 코드명(여기서는 과목명)이지

과목코드는 될수없습니다. 따라서, 과목명을 바꾼다고해도 수강현황테이블은 변경할 필요도 없겠지요

일반적으로 코드테이블을 관리할때 필요하면 추가해서 쓰는 방식으로 하겠죠

 

샘플) code_table

과목코드       int                   default 1

과목코드명    varchar    50

사용여부       char(1)     ( Y / N )

정렬순서       int

나도IN님이 2005-04-13 15:50에 작성한 댓글입니다.
이 댓글은 2005-04-13 15:56에 마지막으로 수정되었습니다. Edit

delete 의 경우는 어떻게 하실건지요? 과목이 없어졌을때...

수강신청 시스템은 동시접속 수가 엄청나지요...

이경환(babocom)님이 2005-04-13 16:18에 작성한 댓글입니다.
이 댓글은 2005-04-13 16:23에 마지막으로 수정되었습니다.

실무에서는 안정적인 데이터 관리를 위해

코드테이블의 코드와 같은 PK는 수정하지 않습니다.

어쩔수 없이 다른 코드를 써야한다면 별도 코드를 Insert하여 사용하지요. 그리고 삭제했을때는 걱정을 안하셔도 되는게

Join Query시 코드테이블과 마스터 테이블간의 Outer Join으로 해결하지요. 왠 Outer Join 하시겠지만 요즘은 Plan을 떠보면 Outer Join도 성능이 문제가 되지는 않습니다.

Join Query결과 과목명이 없으면 해당 코드테이블의 관리 오류를 발견할테고, 관리자가 즉시 복구를 하겠지요.

그리고 코드테이블의 코드는 Delete를 하지 않습니다.

상태코드를 별도로 가지고 관리하지요.

그럼...

겨울(cyssjh02)님이 2005-04-14 11:30에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
1100[sqlite] AUTOINCREMENT field 처리 팁 [2]
Coral
2005-04-10
16711
1099여러분들께 도움좀 부탁드립니다.
김유니온
2005-04-08
10408
1098여러분들께 질문이 있습니다!
욱사마
2005-04-07
10624
1097[초보 허접질문] 결국항상 seq를 써야만 하는것인가요? [4]
박기원
2005-04-06
11081
1096ACCESS(MDB)공유가 안되는데..어찌....ㅠㅠ; [2]
강나은
2005-04-04
11828
1094Er-diagram의 tool들의 특징...고수님들 부탁...
초보맨
2005-03-29
10417
1092sqlite에서 정규표현식을 사용하고 싶습니다.
강혜원
2005-03-24
11238
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다