나는 구식 학교를 열었습니다. 응용 프로그램의 비즈니스 계층 이전에 데이터베이스 스키마를 설계하는 법을 배웠습니다 (또는 다른 모든 것에 OOAD 사용). 나는 스키마 (IMHO :)를 디자인하는 데 꽤 능숙했으며 불필요한 중복성을 제거하기 위해 정규화되었지만 속도에 영향을 미치는 곳은 아닙니다. 그러나 대부분 그렇지 않았습니다.
Ruby의 ActiveRecord 또는 ActiveJDBC와 같은 일부 ORM 프레임 워크의 출현으로 (기억할 수는 없지만 몇 가지가 있습니다.) 일부 키가있는 경우에도 모든 테이블에 대리 키를 선호하는 것 같습니다 '이메일'-2NF를 완전히 깨뜨 렸습니다. 좋아, 나는 너무 많이 이해하지는 않지만, 이러한 ORM (또는 프로그래머) 중 일부가 1-1 또는 1-0 | 1 (즉, 1에서 0 또는 1)을 인정하지 않으면 내 신경에 거의 도달합니다. 그들은 nulls
"오늘날 시스템이 처리 할 수 있는 " 톤이 많은 경우에 상관없이 모든 것을 하나의 큰 테이블로 갖는 것이 더 좋다고 규정하고 있습니다 .
나는 메모리 제약이 정규화와 직접적인 상관 관계가 있음에 동의하지만 (다른 이점도 있습니다 :) 오늘날 저렴한 메모리와 쿼드 코어 머신을 사용하는 시대에는 DB 정규화의 개념이 텍스트에 그대로 남아 있습니까? DBA로서 여전히 3NF (BCNF가 아닌 경우)로 정규화를 수행합니까? 상관이 있나? "더티 스키마"디자인은 프로덕션 시스템에 적합합니까? 만약 그것이 여전히 관련이 있다면 어떻게 "for"정규화를해야 하는가.
( 참고 : 디자인의 일부 / 필요로 중복성을 갖는 데이터웨어 하우스의 스타 / 스노 플레이크 스키마가 아니라 StackExchange와 같은 백엔드 데이터베이스가있는 상용 시스템에 대해 이야기하고 있지 않습니다)