1. 데이터는 행이 추가되어야지 컬럼이 추가되면 안된다..
insert할 때마다 컬럼을 추가해야 한다면 곤란~!!
2. NULL값이 많으면 좋지않음 ( 용량의 낭비) .
3. 서로 다른 주제를 한 테이블에 넣으면 안된다. 그러나 유저에게 보여줄 때에는 하나로 보여주어야 한다!!( 조인을 하든)
4. 애초에 테이블에 자료를 넣을 때부터 신경쓰는것이닷.
5. 테이블을 분리하기 -
6. NOSQL의 경우: 구조가 없다. 워드 문서에 쓰듯이..
7. RDB 의 경우 : 데이터의 구조화가 필요함. 중복의 최소화 및 성능최적화!! 데이터베이스의 목표는 이상이 있는 관계를 재구성하여 - 작고 잘 조직된 관계를 생성하는 것. (정규화)- 깨끗한 데이터를 만든다.
8. 이론적으로는 제5 정규화까지 있지만.. 실무에서는 일반적으로 제2정규화까지만 한다구함
9.
1) 제1 정규화 : 원자값을 가져야 한다
2) 제 2 정규화 : 모든 속성은 반드시 기본키에 종속되어야 함 .
10. PK를 한글로 주는 경우 거의 없음 . 그냥 ID부여하는게 나음. 사용자는 몰라도 되지만 프로그램상으로 필요하다고 여겨지는 경우 - 를 생각해보기
ex) 상품의 구분코드 만들기 : 일반적으로 영문자+숫자를 조합해서 생성. 그래서 어떤 카테고리의 상품인지도 코드를 보고 알수있게.. ( 아 카테고리를 이런식으로 할 수도 있군... )
ex) 과목 코드 만들기 : 자바- p(프로그래밍)001, 포토샵 - d(디자인)001,.. 과목코드를 보고도 의미파악을 조금씩 할 수있다..!!
11. 테이블과 테이블을 연결하기 : 교차테이블 !!! = 제2정규화 과정.
FK와 PK의 관계 맺어주기
EX) 학생----수강----과목
회원 -----예매----영화
회원------주문-----상품
명사 - 명사 테이블일 경우 관계를 생각해서 가운데 동사테이블을 끼워넣어주는 것이 바람직데이터는 행이 추가되어야지 컬럼이 추가되면 안된다..
12.
1) 개체무결성: PK는 null이 되면 안됨
2) 참조무결성: 부모테이블의 레코드가 delete, update될경우를 생각 ( cascade, null, 등등) no change( 함부로 못바꾸게 제약조건할수있다) ...
연계 참조 무결성
연계 참조 무결성 제약 조건을 사용하면 기존 외래 키가 가리키는 키를 사용자가 삭제 또는 업데이트하려 할 때 데이터베이스 엔진 에서 수행할 동작을 정의할 수 있습니다. 다음과 같은 연계 동작을 정의할 수 있습니다.
NO ACTION
데이터베이스 엔진 에서는 오류가 발생하며 부모 테이블의 행에 대한 삭제 또는 업데이트 동작이 롤백됩니다.
CASCADE
부모 테이블에서 해당 행이 업데이트되거나 삭제될 때 참조 테이블에서도 해당 행이 업데이트 또는 삭제됩니다. timestamp 열이 외래 키 또는 참조되는 키의 일부인 경우에는 CASCADE를 지정할 수 없습니다. INSTEAD OF DELETE 트리거가 있는 테이블에는 ON DELETE CASCADE를 지정할 수 없습니다. INSTEAD OF UPDATE 트리거가 있는 테이블에 대해서는 ON UPDATE CASCADE를 지정할 수 없습니다.
SET NULL
부모 테이블에서 행을 업데이트하거나 삭제하면 해당 외래 키를 구성하는 모든 값이 NULL로 설정됩니다. 이 제약 조건을 실행하려면 외래 키 열이 Null을 허용해야 합니다. INSTEAD OF UPDATE 트리거가 있는 테이블에 대해서는 지정할 수 없습니다.
SET DEFAULT
부모 테이블에서 해당 행을 업데이트하거나 삭제하면 외래 키를 구성하는 모든 값이 기본값으로 설정됩니다. 이 제약 조건을 실행하려면 모든 외래 키 열에 기본 정의가 있어야 합니다. 열이 Null을 허용하고 명시적 기본값이 설정되어 있지 않은 경우 NULL은 해당 열의 암시적 기본값이 됩니다. INSTEAD OF UPDATE 트리거가 있는 테이블에 대해서는 지정할 수 없습니다.
13. 테이블설계할때 보통 날짜데이터 넣는 편. 언제 insert했는지 알수있도록.. 추후 문제가 생겼을때 확인할 수도 있고... 거의필수사항!! 근거자료로서 중요.
14. JOIN해서 가져올때
: 겹치는 컬럼명 -> 알아서 _1같은 시리얼넘버 붙여서 가져와줌.
중복되는 컬럼이므로 - SELECT할때 제외하고 깔끔하게 가져와주기
15. 2개이상의 JOIN도 가능.
A랑 B테이블을 조인해서 A+B의 새로운 논리적 테이블을 형성하고 -> 거기에 C라는 테이블을 또 붙이고 하는 식으로. 다른 테이블의 컬럼 자유롭게 쓸수있게 된다
FROM A
JOIN B ON A.X = B.X
JOIN C ON B.Y = C.Y;
조인할때 INNER는 생략가능. 기본값. LEFT / RIGHT 하면 주인공 기준으로 NULL값도 가져와줌
댓글 없음:
댓글 쓰기