티스토리 뷰
* 본 게시물은 HeadFirst 교재를 공부 목적으로 정리한 글 입니다.
스키마
데이터 베이스 내의 데이터(열들과 테이블들), 그리고 데이터들 사이의 연결 방식에 대한 표현을 스키마 라고 함.
참조키
참조키란?
참조키는 테이블의 한 열로 다른 테이블의 기본키를 가르킴.
테이블을 연결하는데는 유일한 열이 필요함. 즉, 기본키 값을 참조키로 사용.
참조키는 연결되는 기본키와 다른 이름 일 수 있다? > YES
참조키에서 참조하는 기본키는 부모키, 부모키가 있는 테이블은 부모 테이블.
참조키는 한 테이블의 열들이 다른 테이블의 열과 연결되도록 하는데 사용.
기본키는 null일 수 없지만 참조키 값은 null일수 있음.
참조키는 유일할 필요가 없음. - 실제로 유일하지 않은 경우가 많음.
참조키 제약조건
참조키의 값으로는 부모 테이블에 존재하는 키의 값만을 넣을 수 있음. 이를 참조 무결성 이라고 함. 규칙을 위반 하면 에러가 발생하여 실수로 위반하는 것을 막을 수 있음.
참조키를 사용하여 부모 테이블의 유일한 값을 참조할 수 있음.
참조키의 값이 부모 테이블의 기본키일 필요는 없지만 유일해야 함.
참조키가 있는 테이블 생성
CREATE TABLE interests(
int_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, > 기본키 지정
interest VARCHAR(50) NOT NULL,
contact_id INT NOT NULL, > 참조키를 일반열을 만들 듯이 만듬.
CONSTRAINT my_contacts_contact_id_fk
> <제약조건> 참조키가 어느 테이블을 참조하는지(my_contacts), 키의 이름(contact_id) 또한 제약 조건이 참조키 (fk)라고 명명.
FOREIGN KEY(contact_id) > 괄호 안의 열 이름이 참조키가 됨.
REFERENCES my_contacts(contact_id) > 참조키가 어느 테이블을 참조하는지 표시, 다른 테이블의 열 이름을 표시.
);
테이블 간의 관계
세 가지 패턴 : 일대일, 일대다, 다대다
패턴을 찾으면 다중 테이블 -스키마- 의 설계는 간단.
데이터 패턴: 일대일
부모테이블 A의 레코드가 자식테이블 B에 한 개의 테이블과 연결됨.
ex) 주민번호 - 사람
데이터 패턴: 일대다
테이블A의 한 레코드와 테이블 B의 여러 레코드와 연결되지만, 테이블 B의 한 레코드는 테이블 A의 한 레코드에만 연결될 수 있음.
데이터 패턴: 다대다
여러 레코드에 여러 레코드가 연결 됨.
다대다일때 서로 연결하니까 중복 데이터가 많이 나옴.
중간에 테이블 하나를 추가하여 일대다의 관계로 단순하게 할 필요가 있음.
연결하려는 두 테이블의 기본키들을 열로 가지는 연결 테이블이 필요함.
두 테이블이 다대다의 관계이면, 중복 데이터가 생겨 제 1 정규형을 위반 함.
위반하지 말아야 하는 가장 큰 이유는 중복된 데이터 때문에 쿼리의 시간이 길어진다는 점.
'공부 > MYSQL' 카테고리의 다른 글
[MySQL] SUBSTRING_INDEX / SUBSTR 함수 (0) | 2018.08.17 |
---|---|
[MySQL] 정규형 (0) | 2018.08.17 |
[MySQL] Workbench Can't connect to MySQL server on 'localhost' (10061) 오류 (2) | 2018.08.16 |
[MySQL] 고급 SELECT 문 (0) | 2018.08.07 |
[MySQL] 테이블 정규화 (0) | 2018.08.06 |
- Total
- Today
- Yesterday
- selenium error
- java
- 파이썬 파일 인식 안됨
- 프로그래밍
- Python 파일 인식 불가
- QA 이슈 해결
- WebDriverException error
- 초보 개발자
- appium error
- Spring
- Python 인식 오류
- mysql
- Python 파일 인식
- 오류
- appium
- Trouble Shooti
- oracle
- WebDriverException 오류
- SQA
- SW 문제 해결
- 앱피움
- appium session
- 프로젝트
- QA
- appium오류
- 소프트웨어지식
- QA 자동화
- Python 인식 안됨
- selenium오류
- jsp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |