2010-08-18 4 views
0

나는 데이터베이스를 디자인하고 있으며 어떤 디자인이 좋은지 잘 모르겠습니다. 그래서 여기에 약간의 정보를 입력하기로했습니다.데이터베이스 디자인 : 많은 못생긴 열 또는 행으로 분리

aName, aSize, aColor 
bName, bSize, bColor 
cName, cSize, cColor 

페이지 2 :

aName, aSize, aColor 
bName, bSize, bColor 
cName, cSize, cColor 

문제는 내가

PAGE1의 라인을 따라, 컬럼 데이터의 몇 가지 반복 조각을 가지고있다 따라서 다음과 같은 디자인을 사용할 수 있습니다.

후자는 더 깨끗한 표시되는 동안
[pageId] [aName] [aSize] [aColor] [bName] [bSize] [bColor] etc. 

는 또는 행

[pageId] [letter] [name] [size] [color] 

전자는 성능을 위해 더 나은으로 분할. 이 두 가지 옵션보다 문제에 접근하는 더 좋은 방법이 있습니까? 저는 PHP와 MySQL을 사용하고 있지만 플랫폼에 관계없이 모든 솔루션에 관심이 있습니다.

+5

"더 깨끗하게 보입니다"? 아마도 정규화를 읽고 질문을 수정해야합니다. http://en.wikipedia.org/wiki/Database_normalization –

+0

정규화에 대해 알고 있습니다. 데이터를 복제하는 데 문제가 없습니다 (미안하지만 분명하지 않은 경우). 동일한 유형의 데이터 (이름, 크기, 색상)를 가진 모든 페이지에는 고정 된 수의 섹션 (a, b, c 등)이 있지만 한 행에 중복성없이 모두 저장할 수 있습니다. 여러 행의 경우 행을 섹션에서 식별 할 수 있으며 열 이름 앞에 반복적으로 접두사를 사용하지 않고도 개별 속성에 직접 액세스 할 수 있습니다. 그것이 내가 더 "깨끗한"것입니다. –

+1

반복 데이터는 첫 번째 정규형 위반입니다. ** 첫 번째 정규형이 무엇을 의미하는지 ** 알고 있음을 나타 내기 위해 질문을 업데이트하십시오. –

답변

0

이제 편지를 반복 할 수 있으므로 더 깨끗한 코드로 끝날 가능성이 있으므로 옵션 2를 사용합니다.

아마도 프로덕션 사이트에서는 유용하지 않지만 스크립트 나 관리 사이트에서는 유용 할 수 있습니다.

또한 서버로 왕복하는 것이 3 개의 작은 행을 가져 오는 것보다 중요하므로 성능이 그렇게 좋지는 않습니다.

3

표준화

당신은 A, B 및 C 섹션 오늘, 당신은 D와 E 섹션 내일있을 수있는 경우. 또는 C 섹션이 사라질 수 있습니다.

관련 문제