웹 응용 프로그램을위한 관계형 데이터베이스 스키마를 설계 할 때 종종 하나의 행과 하나의 행만 포함하는 테이블을 만드는 경우가 종종 있습니다. 그것이 그것을 설계하는 잘못된 방법 인 것 같은 느낌이 들지만, 나는 훨씬 더 나은 것을 생각 해낼 수 없거나, 분명히 "올바른 방법"입니다.
최근 예는 사용자가 홈 페이지의 컨텐츠를 수동으로 제어 할 수있는 사이트입니다. 홈 페이지는 하나뿐입니다. 설명 텍스트가 포함 된 영역의 텍스트 필드와 같이 홈페이지를 구축하는 데 필요한 모든 필드가있는 테이블을 만들었습니다. 큰 이미지 파일의 이름을 저장하는 필드입니다. 홈페이지에 소개 될 기사를 가리키는 일부 외래 키. 작동하지만 한 행만있는 테이블을 갖는 것은 잘못된 느낌입니다.
과거에는 홈페이지 테이블에 여러 행을 허용하고 무작위로 하나를 선택하는 것과 같은 다른 많은 디자인을 시도했습니다. "active"라는 부울 필드를 추가하고 활성 홈페이지 중 하나를 임의로 선택하려고했습니다. 주어진 시간에 응용 프로그램 논리에서 하나의 행만 활성화하려고했습니다. 홈페이지 테이블을 만들지 않고 기사와 같은 다른 모든 항목을 가져와 feature_on_homepage와 같은 이름을 가진 부울 필드를 갖도록 시도했습니다.
대부분의 경우 설정 파일에 상수가 많은 홈페이지를 만들 수있었습니다. 설정 파일의 주요 문제점은 개발자가 제어 할 수 있다는 것입니다. 홈페이지의 내용과 같은 내용은 사용자가 편집해야하는 내용이므로 데이터베이스로 이동해야합니다.
많은 사이트에서 5 개의 최신 기사를 선택하는 것과 같은 쿼리로 홈페이지와 같은 것을 만들 수 있기 때문에이 문제가 없습니다. 그러나 엄격한 요구 사항으로 수동으로 선별 된 페이지가 있으면 데이터베이스에서 모델링하기가 까다로워집니다. 그러나 사진 테이블과 기사 테이블이 있다고 가정하십시오. 요구 사항은 홈페이지가 정확히 5 장의 사진, 정확히 3 개의 기사 및 사용자가 수동으로 제어하는 2 개의 임의의 텍스트 블록을 표시해야한다는 것입니다. 데이터베이스에서 올바른 방법으로 모델링하는 방법은 무엇입니까?
또한 홈페이지 이외의 다른 많은 경우 에이 모델링 문제가 있습니다. 내가 생각해 낼 수있는 가장 쉽고 가장 일반적으로 적용 가능한 예입니다.