본문 바로가기

Data Modeling21

FK를 어느쪽에 둘지 결정하기 모델링을 하다보면 어느쪽 테이블에 FK를 둘 지 하는 것이 고민이 될 때가 있습니다. 오늘은 그런 상황에 대해서 살펴보도록 할께요. 먼저 가장 단순하게, 다음과 같은 상황이라면 어떨까요? 1:M 관계 그림과 같이 1:M 관계라면 당연히 M쪽에서 FK를 가지게 됩니다. 아니 가져야 합니다. 1 쪽에서 M 개의 데이터를 수용할 수는 없으니까요. 팀장 쪽에서 팀원 이라는 속성을 팀원1~팀원100 정도로 가지고 있지 않는 한, 팀원의 정보를 가지는 것은 불가능합니다. 한 팀장 밑에 팀원은 여러명 일 테니까요. 데이터는 이렇게 들어가게 되겠지요. ( 아래그림처럼, 테이블에 들어갈 데이터를 예를들어 써보시면 확실하게 이해가 갑니다. 저도 평소에 뭔가 헷갈린다 싶을 때는 꼭 데이터를 예를 들어 적어보는데요, 생각이 .. 2013. 8. 29.
메타 모델 이란? 흠... 글을 쓰기 전에 조금 주저했더랬습니다. '내가 메타 모델이라는걸 다룰 수 있는 수준인가?' 하구요. 여러분들은 "메타"라는 단어를 들으면 어떤 느낌이 드시나요? 저는 뭔가 고대 이집트 상형문자 분위기가 떠오르면서 알수없는 ^^; 그런 막연하고 어려운 느낌이 들었답니다. 그래서 쓸까말까 망설였지요. 제 블로그 제목은 보시다시피 "아는만큼" 입니다. 아는만큼 보이고 들리고 읽히더라!는 무릎을 치는 경험 때문인데요. 메타라는게 어려운 개념이기는 하지만 제가 아는만큼이라도 읽고 이해하신다면 내 주변을 스쳐가는 메타의 개념들을 언젠가는 모두 꿰뚫게 되는 첫걸음이 되지 않을까 생각하고 감히 적어봅니다. 위키피디아에서는 메타를 이렇게 정의하고 있네요. 메타(영어: meta-, 그리스어: μετά→ 뒤, 넘어.. 2013. 8. 23.
공통코드 테이블 (Code Table) 설계하기 아무리 소규모의 시스템이라도, 데이터 모델에 코드 테이블은 존재합니다. 오늘은 이 코드들이 모여서 어떻게 공통코드 테이블로 만들어 지게되며, 이 공통코드 테이블은 어떤 특징을 가지는지 차분히 살펴보도록 하겠습니다. 지금까지 자주 살펴본 초간단 쇼핑몰 시스템에도 여기저기 코드가 필요합니다. 모델에 나타나는 코드 성격의 컬럼 고객 테이블의 고객등급은 대표적인 코드 대상입니다. 코드는 'VIP 등급' 대신에 'V'라는 한 글자를 쓰는것처럼, 매번 한글 또는 영문으로 쓰면 자리를 많이 차지하고 그 코드에 해당하는 데이터를 조회하는 SQL을 작성할때도 귀찮아지기 때문에 만들기 시작하는데요. 만들고 나면 코드로 정하지 않은 값들은 아예 들어가지 않도록 막아줄 수 있다는 꽤 괜찮은 장점이 추가 됩니다. 위 모델에 나.. 2013. 8. 15.
FK가 양쪽에서 상속된다면? 갑자기 이런 질문을 받았더랬습니다. "이렇게 양쪽에서 FK를 상속 받는거 괜찮은건가요?" 라구요. ( 상속이라는 용어를 쓰려니, 불현듯, 이것이 객체지향에서 나온 용어이지 데이터 모델링에서 쓰던 용어는 아닌것 같아 맘에 걸리네요. 데이터 모델에서는 FK가 전달된다 라고 해야하나요? 하지만 어짜피 FK의 전달도 방향성이 있고, 양쪽 엔터티를 부모-자식간이라고 부르기는 하니 상속이라는 표현이 틀리진 않을것 같다는 생각을 잠시 뭉게뭉게~ 해봤습니다. ;-) ) 양쪽에서 상속받는 FK - 프로그램사용컬럼.프로그램ID 위 모델에서 프로그램사용컬럼 테이블의 테이블ID는 프로그램사용테이블과 테이블컬럼의 양쪽에서 전달됩니다. 그런대, 동일한 속성명이기 때문에 하나의 컬럼으로 나타나 있구요. 이것이 괜찮은 것인지? 가능.. 2013. 8. 8.