|
[필독] 처음 오시는 분을 위한 안내 (737) |
정은준1 |
2014-05 |
5268212 |
0 |
2014-05
5268212
1 정은준1
|
|
(광고) 단통법 시대의 인터넷가입 가이드(ver2.0) (234) |
백메가 |
2015-12 |
1793236 |
25 |
2015-12
1793236
1 백메가
|
97915 |
HP Microserver Gen8 메인보드 교체문의 (2) |
박남규 |
2016-07 |
5859 |
0 |
2016-07
5859
1 박남규
|
97914 |
775 보드 개조 제온은 최신 윈도우10에서 문제 있너요? (9) |
늘파란 |
2018-09 |
5892 |
0 |
2018-09
5892
1 늘파란
|
97913 |
ESXi 과 workstation 에 대해서 질문 드립니다. (6) |
사랑이 |
2014-01 |
4265 |
0 |
2014-01
4265
1 사랑이
|
97912 |
혹시 HP ML110G7에 Windows 7 설치 하신분계신가요? (5) |
그리폰0 |
2015-05 |
4240 |
0 |
2015-05
4240
1 그리폰0
|
97911 |
레이드 성능 비교 부탁드립니다. (4) |
bigmaster |
2016-07 |
4086 |
0 |
2016-07
4086
1 bigmaster
|
97910 |
충전용 핸드드릴로 인조대리석 구멍을... (12) |
2cpumem |
2016-07 |
12696 |
0 |
2016-07
12696
1 2cpumem
|
97909 |
[ PMS(Plex Media Server) on Linux ] 에서 극장 폰트 어케 적용 해야 되는지요 ? (2) |
전설속의미… |
2015-05 |
4554 |
0 |
2015-05
4554
1 전설속의미…
|
97908 |
랙서버 M.2 Nvme 장착하는법 (5) |
코리아펨스 |
2018-10 |
8050 |
0 |
2018-10
8050
1 코리아펨스
|
97907 |
dell poweredge 1950 서버 하드베이 관련 (3) |
chotws |
2016-07 |
4926 |
0 |
2016-07
4926
1 chotws
|
97906 |
SSD RAID0에 간한 질문 (6) |
방o효o문 |
2011-11 |
6462 |
0 |
2011-11
6462
1 방o효o문
|
97905 |
955X 보드에 리눅스 설치가 잘 안 되네요... (1) |
윈도우10 |
2015-06 |
3643 |
0 |
2015-06
3643
1 윈도우10
|
97904 |
IPTV 끊김현상 질문드립니다. (5) |
Psychophysi… |
2021-03 |
4592 |
0 |
2021-03
4592
1 Psychophysi…
|
97903 |
중고거래를 했는데 반품해줘야 할까요? (8) |
범이님 |
2022-11 |
2035 |
0 |
2022-11
2035
1 범이님
|
97902 |
웹서버용 PC 무리 없을지 확인 부탁 드립니다. (11) |
햇살의기억 |
2014-02 |
5295 |
0 |
2014-02
5295
1 햇살의기억
|
97901 |
벤더 웍스 vs 조립 웍스 관련 질문입니다. (31) |
책갈량 |
2019-12 |
3889 |
0 |
2019-12
3889
1 책갈량
|
97900 |
Palo-Alto의 PAN-OS 업그레이드 파일 문의 (2) |
흥마 |
2022-11 |
1692 |
0 |
2022-11
1692
1 흥마
|
97899 |
ZEROtherm Atom 30H 사용해도 될까요? (11) |
테돌아이 |
2015-06 |
4603 |
0 |
2015-06
4603
1 테돌아이
|
97898 |
고수님들 구형 16년도 보드의 Aux_fan 4핀 꼽는곳 질문좀 드립니다. (6) |
핸즈 |
2022-11 |
1763 |
0 |
2022-11
1763
1 핸즈
|
97897 |
윈2012 가상 컴퓨터 이미지 esxi 5.0 or 5.5 에서 import 가능한가요? (2) |
이해하면오… |
2014-02 |
9333 |
0 |
2014-02
9333
1 이해하면오…
|
97896 |
이런 종류 케이블 써 보신분 계신가요? (5) |
허대웅 |
2011-12 |
5970 |
0 |
2011-12
5970
1 허대웅
|
- 네 일부는 맞습니다.
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은 없어도 크게 성능상이나 기타 문제가 되지는 않으나 관계형일때는 반드시 필수조건을 만족해야 됩니다.
흠 학교다닐때 잘 가르켜준거 같네요.