인프런 커뮤니티 질문&답변

J.G Rhee님의 프로필 이미지
J.G Rhee

작성한 질문수

데이터베이스 중급(Modeling)

DB에 데이터가 존재하는 경우에도 SQL Server Management Studio 에서 테이블을 수정해도 괜찮습니까?

작성

·

300

0

안녕하세요 선생님. 강의 아주 잘 듣고있습니다 감사합니다.

질문이 있습니다만,

SSMS에서 테이블을 생성한 후, 데이터가 있는 상태에서

컬럼이름, 데이터타입 등을 변경하거나 추가삭제 및 관계설정등을 변경 하시던데

실전에서도 이렇게 해도 문제가 없는지 궁금합니다.

실제 운영중인 DB의 테이블을 그렇게 변경하면 문제가 생길 수 있다는 이야기를 들은적이 있습니다만

정확한 정보를 알고 싶습니다. 감사합니다.

답변 4

1

이교준님의 프로필 이미지
이교준
지식공유자

1. 테이블 설계는 한번에 성공하는 경우가 드뭅니다.  조금씩 수정하고 컬럼을 추가 또는 삭제하고 인덱스도 잡아주고 IDENTITY를 설정해주기도 하고 등등.. 이렇게 완성된 테이블은 충분한 테스트를 거쳐서 프로그램과 연동하게 되는데 그 뒤로는 수정하면 안되겠지요. 그래서 수정을 더 이상 못하도록 막아놓는 기능을 제공하는 것입니다.

2. 운영중인 DB라도 옵션을 끈다고 어떤 변화가 오는 것은 아닙니다. 다만 책임자가 개발이 완료되면 막아놓고 운영하는 것이 좋겠지요. 왜냐면 운영중인 테이블은 프로그램과 연동되서 돌아가는 상황이기 때문에 수정하게 되면 90% 이상은 프로그램 수정도 동반될 확률이 있습니다. 

1

이교준님의 프로필 이미지
이교준
지식공유자

경우에 따라서 다르죠. 컬럼 이름은 실전에서는 고칠 경우가 거의 없어요. 왜냐면 해당 컬럼을 사용하는 모든 프로그램 소스를 다 고치는 일이 발생하기 때문이죠. 

데이터타입은 가능한 경우와 불가능한 경우가 있습니다. 예를 들어 varchar(50)을 int로 바꿀 때도 있어요. 다만  해당 컬럼이 모두 숫자 데이터를 가지고 있다는 가정이 필요하죠. 컬럼의 추가는 크게 문제가 되지 않습니다. 관계 설정은 언제 해도 무방합니다. 다만 데이터베이스를 이해하고 있지 않는 개발자가 있는데 관계설정을 "슥~" 해놓으면 화냅니다.  테이블 레코드가 삭제가 안된다고요.

0

J.G Rhee님의 프로필 이미지
J.G Rhee
질문자

아. 말씀 이해하였습니다. 변경을 막아두는 의미 이상은 아닌 것이군요?

프로그램 수정 문제를 제외하고 DB자체만을 놓고 봤을때, 

운영중인 DB에 저 옵션을 끄고 일부테이블의 변경을 하면 (컬럼삭제가 아닌 컬럼 순서변경, 컬럼추가 등)

DB자체에 어떠한 문제가 발생하는 것이 아닌가 우려를 하였었습니다.

프로그램 수정이 동반된다면 운영중인 테이블의 수정(컬럼 추가, 순서변경등) 은 문제가 없는 것으로 이해하였습니다.

답변 감사합니다.

0

J.G Rhee님의 프로필 이미지
J.G Rhee
질문자

말씀 이해했습니다. 답변 감사합니다. ^^

그런데, 테이블을 수정하고 나서 저장하려고 할때 어떤 경우에는

'테이블을 다시 만들어야 하는 경우'라고 하면서 수정사항을 저장할 수 없다고 나옵니다.

이때 설정을 변경(도구>옵션>디자이너>테이블을 다시 만들어야 하는 변경내용 저장 안함을 체크해제)하고 저장을 하면 테이블의 변경내용이 저장은 되는데요. 

위에 "컬럼의 추가"도 크게 문제가 없다고 하셨지만, 저 옵션을 켜두면 컬럼을 추가해도 테이블을 다시 만들어야 하는 경우라고 나오고 저장이 안됩니다. 분명 뭐가 문제가 있으니까 이를 방지하기 위해서 저런 옵션을 둔 것 같다고 생각은 듭니다만... 컬럼추가만 해도 저장을 못하니 저 옵션은 꺼둘수밖에 없습니다.

질문은...

1) "테이블을 다시 만들어야 하는 변경내용 저장 안함" 옵션이 왜 있는 것인지 궁금하고,

2) 운영중인 DB를 저 옵션을 끄고 테이블의 수정을 해도 문제없는지 궁금합니다.

관련해서 한번만 더 답변을 부탁드려도 될까요?

감사합니다.

J.G Rhee님의 프로필 이미지
J.G Rhee

작성한 질문수

질문하기