P粉9482589582023-08-28 11:49:53
"이유 중 하나는 게으름입니다".
모닝콜입니다. 이와 같은 일을 해야 하는 유일한 이유는 "올바른 방법"을 수행하는 방법을 알고 있지만 그렇게 하지 말아야 할 확실한 이유가 있다고 결론을 내리기 때문입니다.
즉, 이 방식으로 저장하기로 선택한 데이터가 쿼리할 필요가 전혀 없는 데이터라면 선택한 방식으로 저장하는 경우가 있을 수 있습니다.
(일부 사용자는 "미래에 어떤 요구 사항이 추가될지 전혀 알 수 없습니다"라고 말하면서 이전 단락의 내 진술에 문제를 제기할 것입니다. 이러한 사용자는 잘못된 정보를 얻었거나 종교적 신념을 진술한 것입니다. 때로는 요구사항이 앞에 있습니다 )
P粉5459565972023-08-28 09:02:45
1차 정규형을 위반하는 것 외에도, 반복되는 그룹 값의 열이 쉼표로 구분된 단일 목록에 저장되는 데에는 더 많은 실질적인 문제가 있습니다.
idlist REGEXP '[[:<:]]2[[:>:]]'
或在 MySQL 8.0 中:idlist REGEXP '\b2\b'
李>목록의 요소 개수를 계산하거나 다른 집계 쿼리를 수행하는 것은 어렵습니다. 쉼표로 구분된 목록이 잘못되어 이를 내 책의 첫 번째 장으로 만들었습니다:
SQL 안티 패턴, 볼륨 1: 데이터베이스 프로그래밍의 함정 피하기.
비정규화가 필요한 경우가 있지만@OMG Ponies가 언급한 것처럼 이는 예외입니다. 비관계형 "최적화"는 데이터의 다른 사용을 희생하면서 한 유형의 쿼리에 도움이 되므로, 비정규화할 가치가 있도록 특별한 처리가 필요한 쿼리가 무엇인지 확인해야 합니다.