2021-03-26

0326 테이블설계하기

 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값도 가져와줌

댓글 없음:

댓글 쓰기

0328 fdisk, mkfs, mount, fstab

 1. 하드디스크를 붙인다. 2. fdisk -l로 하드디스크를 확인한다.  - interactiive한 커맨드모드 사용하여 (m) 붙인 하드디스크의 파티셔닝을 한다.  - 마지막에 w를 해야 실제로 반영이 된다.  3. mkfs를 하여 어떤 파일시스...