3. 제 1 정규화중복 데이터 또는 중복 컬럼(속성)을 별도의 테이블(엔티티)로 만들고, 기존 테이블과 관계를 맺어준다.여기부터 이제 평화로웠던 디비나라에 격변이 일어나기 시작함... 말로만 보면 당최 뭔 말인지 모르겠으니 직접 한번 해보겠다. 먼저 앞의 엔티티, 속성, PK까지 정하는 과정을 거쳐서.. 아래처럼 테이블들이 나왔다. 뭐 이건 어떤 시스템이냐에 따라(고객이 무엇을 원하냐에 따라) 달라질 수 있는 것들이다. 즉 노답임. '강의' 테이블을 기준으로 순서대로 해보면.1. 테이블에서 중복되는 데이터를 뽑아 별도의 테이블로 분리한다. 이 테이블에서 '중복되는 데이터'를 뽑아내야 하는데 얼핏 보면 모르겠지만 다양한 데이터가 여러개 쌓이는 경우를 생각해보면 그렇지가 않다.A라는 강의가 있을 때, 그 강..
2. PK(Primary Key, 주키) 선정하기각 엔티티(테이블)의 속성(컬럼)들 중에 바뀔 염려가 없으며, 해당 엔티티를 식별할 수 있는(중복되지 않는) 것을 주키(PK)로 선정한다.이 때, 주키로 사용할만한 속성이 없는 경우에는 임의의 인공 컬럼(속성)을 새로 만들어서 주키로 사용한다. 그렇다면 어떤 경우에 인공 컬럼을 만들어 주키로 선정하는 것이 좋을까?향후 변경 가능성이 있는 속성을 주키로 사용하는 것은 바람직하지 않다. 예를 들어, '학생' 테이블에서 '이메일' 속성은 향후 변경 가능성있다. 있으므로 주키로 선정하기에 바람직하지 않다. 주키로 사용할 속성에 들어갈 내용이 길어지는 것 또한 바람직하지 않다. 예를 들어, '과목' 테이블에서 '과목명' 컬럼은 문자열이 길어질 가능성이 있으므로 임의..
앞에서 정의한 내용을 바탕으로, 모델링을 순차적으로 진행해보겠다! 먼저 이 장에서 하게 될 엔티티와 속성을 정하는 과정은 가장 쉽지만 추상적이고 딱히 답이 없는..? 그런 과정이 되겠다. 하지만 여기서 정의하는게 개인적으로는 중요하고 또 중요하다고 생각한다.여기서 이름 하나를 잘못 지어 놓으면, 속성을 정하거나 이후에 관계맺기를 할 때마다 헷갈리기 때문이다.프로그래밍할 때 언제나 변수명 정하느라 멍 때리며 시간 보내는 나에겐 중요한 작업이당. 예제로 '수강관리 시스템'의 DB를 설계해보장! 1. 엔티티 식별하기우리가 다루는 정보들이 무엇인지 정의한다.시스템에서 다룰 데이터들의 집합을 정의하는거라고 한다.여기서 정해진 엔티티들은 DB에서 어떻게 사용되냐 하면, 각각 하나의 테이블을 이룬다. 그러니까 앞으로..