걸음마부터 달리기
DB-SQL 1절 본문
TCL의 경우 DCL과 통합될 수 있음.
날것의 데이터를 테이블에 넣을 수 있게 가공하라. 관계형 데이터베이스의 기본 단위인 테이블형태로 데이터들은 저장이 되고 이 테이블에서 등록 및 꺼내온다. 또한 새로운 데이터를 입력할때는 새로운 테이블 만들 필요 없이 기존 테이블에 데이터만 추가한다.
칼럼이 아예 없는 테이블은 불가능하다.
칼럼은 1개 이상 있는데 데이터(행)은 없는 빈 테이블은 가능하다.
선수와 관련된 데이터를 저장할 때 모든 데이터를 하나의 테이블로 저장하지 않는다.
선수와 관련된 데이터를 선수 테이블과 구단 테이블이라는 복수의 테이블로 분할하여 저장하고 있는다.
이렇게 테이블을 분할하여 데이터의 불필요한 중복을 줄이는 것이 정규화라고 한다.
하나의 박지성에 대한 데이터를 추가할때 선수테이블에 다 때려박는게 아니라 정규화를 통해 테이블을 분할시켜서 만들어놓고, 이 관련 테이블들에 데이터를 추가하는것이다.
기본키와 외래키:
각 행을 한 가지 의미로 특정할 수 있는 한 개 이상의 칼럼을 기본키(Primary Key)라고 하며, 여기서는 <선수> 테이블의 ‘선수번호’와 <구단> 테이블의 ‘구단코 드’가 기본키가 된다. 또, <선수> 테이블의 ‘구단코드’와 같이 다른 테이블의 기본 키로 사용되면서 테이블과의 관계를 연결하는 역할을 하는 칼럼을 외부키(F oreign Key)라고 한다.
즉 부모테이블은 기본키가 외래키가 되지 않아도 되지만 자식테이블은 무조건 기본키가 외래키 역할을 해야한다. 또한 "외래키"라는 호칭을 받는 칼럼은 그 연관되는 부모,자식 테이블의 칼럼이다. 자식테이블의 연관 칼럼만 외래키라고 부르는게 아니다.
그러면 선수와 구단간의 관계를 어떻게 표현할까
어떤 관계인지 의미를 직관적으로 도식화하여 표현한 것이다.
개체, 관계, 속성으로 구성된 ERD는 이 3가지 요소로 현실세계를 모두 표현가능하다.
식별관계와 비식별 관계:
https://deveric.tistory.com/108
간단하 말하자면 부모테이블의 기본키 혹은 유니크 키를 외래키로 쓰면서, 그 외래키가 자식테이블에서 기본키로 쓰고있으면 식별관계
자식테이블에서 외래키를 기본키로 쓰고 있지 않으면 비식별관계
바커표기법에서는 이러한 식별관계를 수직바로 표현하지만 IE표기법에서는 실선이냐(식별) 점선이냐(비식별)로 표현한다.
현재 PK인 TEAM_ID가 자식테이블인 PLAYER 테이블에서 기본키로 안쓰고 있으니까 비식별관계이다.
STADIUM 테이블에서는 애초에 부모테이블의 STADIUM_ID는 TEAM 테이블의 PK가 아니기에 비식별관계이다.
STADIUM테이블는 자신의 PK인 STADIUM_ID를 자식테이블 SCHEDULE 테이블의 FK이자 PK로 쓰고있으니까 식별관계 실선이다.
https://lifreeblog.tistory.com/70