|
(광고) 단통법 시대의 인터넷가입 가이드(ver2.0) (234) |
백메가 |
2015-12 |
1763179 |
25 |
2015-12
1763179
1 백메가
|
|
[필독] 처음 오시는 분을 위한 안내 (737) |
정은준1 |
2014-05 |
5237478 |
0 |
2014-05
5237478
1 정은준1
|
97912 |
Z840 팬소리, 메모리 온도 관해서 아시는분 계신가요? (4) |
Nastran |
2021-02 |
2722 |
0 |
2021-02
2722
1 Nastran
|
97911 |
최근 농장에 장비?가 늘어서 허브가 고민되는 시점입니다. (8) |
푸치코 |
2021-02 |
2711 |
0 |
2021-02
2711
1 푸치코
|
97910 |
하드디스크 용량이 작게 인식되는건 무엇때문일까요? (4) |
니즛 |
2021-02 |
2872 |
0 |
2021-02
2872
1 니즛
|
97909 |
사무실에서 무선마우스를 여러개 쓰는데 혼선때문에 환장하겄습니다 -.- 대책 없을까… (14) |
수구초심 |
2021-02 |
19287 |
0 |
2021-02
19287
1 수구초심
|
97908 |
안녕하세요 팩스 통신(?)포트 자문 구합니다. (8) |
윤치열 |
2021-02 |
1972 |
0 |
2021-02
1972
1 윤치열
|
97907 |
디비 테이블 정규화 관련 질문입니다. (8) |
배고프고가… |
2021-02 |
3140 |
0 |
2021-02
3140
1 배고프고가…
|
97906 |
nas 듀얼랜 구성 질문드립니다 (9) |
lgw1397 |
2021-02 |
4412 |
0 |
2021-02
4412
1 lgw1397
|
97905 |
dp kvm 써보신 분이나 잘 아시는 분 있을까요?ㅠㅠ (2) |
lgw1397 |
2021-02 |
2493 |
0 |
2021-02
2493
1 lgw1397
|
97904 |
동영상 디코딩과 플루이드모션용 VGA를 나누어 동시 사용 (17) |
봉래 |
2021-02 |
5266 |
0 |
2021-02
5266
1 봉래
|
97903 |
시놀 서베일런스 cctv만을 위해 모니터만 연결이 가능한 방법이 있을까요? (3) |
김승현1 |
2021-02 |
3895 |
0 |
2021-02
3895
1 김승현1
|
97902 |
시놀 서베일런스 cctv만을 위해 모니터만 연결이 가능한 방법이 있을까요? (1) |
경박한시민 |
2021-02 |
3245 |
0 |
2021-02
3245
1 경박한시민
|
97901 |
HP 노트북 사설수리 업체 추천 부탁드립니다 (4) |
VSPress |
2021-02 |
3902 |
0 |
2021-02
3902
1 VSPress
|
97900 |
안녕하세요, Hyper-V instance 안에서 외부 NFS 서버와 NFS공유설정 관련 질문드립니… (6) |
Yune |
2021-02 |
3152 |
0 |
2021-02
3152
1 Yune
|
97899 |
채굴용도로 사용이 충분히 짐작되는 중고 1300w 파워 2~3만원대 구매해도 좋을까요? (14) |
겨울나무 |
2021-02 |
3424 |
0 |
2021-02
3424
1 겨울나무
|
97898 |
슈퍼마이크로 장비용어 (2) |
bangCH |
2021-02 |
3300 |
0 |
2021-02
3300
1 bangCH
|
97897 |
혹시 씨에라 em7345 에서 셀룰러 사용하시는 분 계신가요? |
2CPUI김세훈 |
2021-02 |
2109 |
0 |
2021-02
2109
1 2CPUI김세훈
|
97896 |
Colab에서 symbolic link에 대한 질문입니다. (6) |
영산회상 |
2021-02 |
2902 |
0 |
2021-02
2902
1 영산회상
|
97895 |
8개의 GPU 카드를 한번에 테스트 할 수 있는 프로그램 있을까요? (5) |
hitec1018 |
2021-02 |
2442 |
0 |
2021-02
2442
1 hitec1018
|
97894 |
워크스테이션 구입 관련 조언 좀 주세요 (델 T7920 ) (12) |
ljssmh1 |
2021-02 |
4744 |
0 |
2021-02
4744
1 ljssmh1
|
97893 |
ESXi OS 깔려있는 SSD를 교체하려고 합니다. (10) |
ExpBox |
2021-02 |
3986 |
0 |
2021-02
3986
1 ExpBox
|
- 네 일부는 맞습니다.
DBA가 없는 경우로 개발되는 경우도 많고, 개발, 개선이 계속 진행되면서 변경 사항이 많기 때문에
(도메인 분석이 잘못 되는 경우, 현업의 수준과 개발자가 아직 업무 파악에 미숙한 경우, 사업 및 업무가 계속 변경되는 경우 등등)
NULL 값을 포함하거나 필드값을 여유 있게 만들어 두고 사용합니다.
운영중에 DB 필드를 추가하는게 더 리스크 합니다.
저는 정규화 되면 많은 이점이 있다고 봅니다.
그런데 프로그램 하는 입장에서는 불편한 Join등을 해야해서 싫어 합니다.
조직에 DA가 있는 경우도 적고
프로젝트가 시일이 촉박하게 진행되어
표준이 무시되는 경우도 많아서 그렇습니다.
최초 개발시 정규화는 필수지만 유지보수중엔 왠만하면 추가로 정규화 하진 않네요.
NULL은 피해야 하지만 주로 소스에서 해결합니다.
이유는 NULL 과 문자열 조합과 연산이 불가능하고 문자를 다루는 함수에서 에러가 나는것이 주요 이유인데요.
그런데 DB에서 가져오는 모든 부분에 NULL을 블랭크로 변환해서 변수에 담는 함수를 사용하면 문제가 사라져서 자연스레 DB에선 피할 필요가 없게 되네요.
NULL이 많으면 DB 성능이 낮아진다지만 사실 가로 폭이 늘어날 수록 속도가 많이 느려집니다.
그래서 NULL을 제거하면서 가로 폭을 줄이려는 것인데 여러 소스에서 해당 컬럼을 호출하는 상황에 이를 일일이 변경하는 업무량이 너무나 많아서 컬럼을 늘리는 것으로 끝냅니다.
교집합과 합집합의 관계에서 반복을 제거하면서 공통값으로(키) 연결하는것이 필수지만 너무 빈번하게 Join 하면 그냥 1개 테이블로 합치는것도 자주 합니다.
결국 속도가 더 빠르기도 해서요.
개발자 PC에서 여러번 테스트하는 속도는 무의미합니다. 이미 DB캐시에 들어가 버려서요.
여러 유저들이 여러 레코드를 호출과 조인하는 상황에서 프로파일러로 지켜보며 튜닝하면 결국엔 1개 테이블이 빠를때도 종종 있습니다.
1-3차 정규화에 BCNF 까지 해도 궁극적으론 속도와 안정성을 위한 것인데 요즘엔 서드파티 라이블러리가 많이 도와줘서 DB는 단순화 하는게 유행이더라구요.
그래도 저는 꿋꿋이 조인과 그룹바이를 많이 사용합니다. 평상시엔 모르지만 사고 터지면 원인 찾는것과 복구가 훨씬 수월하니까요.
실무에서 DB는 대부분 PK와 FK 관계를 맺게됩니다. 즉 관계를 맺는 PK는 null이 존재하면 안되는건데(데이터 정합성위반) 아마 위 설명을 뒷받침 해주고 있습니다.
null은 없어도 크게 성능상이나 기타 문제가 되지는 않으나 관계형일때는 반드시 필수조건을 만족해야 됩니다.
흠 학교다닐때 잘 가르켜준거 같네요.