Page History
...
Code Block | ||||
---|---|---|---|---|
| ||||
class User{ int id; // 특별한 구현없이, 사용자의 객체만으로 자신을 포함하는 특정정보(클릭로그)만 추출할수가 없습니다. string name; string email; } class ClickLog{ int clickid; User user; // User객체 참조를 포함합니다. string clickurl; } TABLE User{ int id //자신의 키가키를 참조하는 전파된다른 테이블에 접근가능합니다. on u.id = c.clickid varchar name varchar email } TABLE ClickLog{ int clickid int userid //외래키를 통해서 접근가능합니다. on c.clickid = u.id varchar clickurl; } |
...
- 식별 관계는 부모 테이블의 기본 키를 자식 테이블로 전파하면서 자식 테이블의 기본 키 컬럼이 점점 늘어난다. 그러면 조인할 때 SQL이 복잡해지고 기본 키 인덱스가 불필요하게 커질 수 있다.
- 식별 관계는 2개 이상의 컬럼을 합해서 복합 기본 키를 만들어야 하는 경우가 많다.
- 식별 관계를 사용할 때 기본 키로 비지니스 의미가 있는 자연 키 컬럼을 조합하는 경우가 많다. 반면에 비식별관계의 기본 키는 비지니스와 전혀 관계없는 대리 키를 주로 사용한다. 언제든지 요구사항은 변한다. 식별 관걔의 관계의 자연 키 컬럼들이 자식에 손자까지 전파되면 변경하기 힘들다.
- 식별 관계는 부모 테이블의 기본 키를 자식 테이블의 기본 키로 사용하므로 비식별 관계보다 테이블 구조가 유연하지 못하다.
...
즉 사용자의 모델링에서만.., 다대일 설정을 그룹 정보와 맺어주면됩니다.
-부모의 키와 자식의 키가 다르며(전파되지 않았으며) , 자식의 테이블에서만 부모를 찾는 참조(외래)키만 있기때문에 비식별관계입니다.
SQL MODE
우리가 원하는 테이블 모델링은 위와같을 모습이며, user테이블에 group_id가 외래키로 설정이 되어있습니다.
...