나는 음식 데이터베이스에서 일하고 있으며, 모든 음식에는 지방질 (에너지, 비타민 등)의 목록이 있습니다.모든 데이터베이스 열에 대해 하나의 ID, 수행 방법?
단백질, 지방, 탄수화물, 비타민, 요소 등의 50 개의 다른 열로 구성됩니다. .. (많이 있습니다.)
극단적 인 경우 나중에 열 수가 증가 할 수 있지만 최대 값은 80이되지 않습니다.
각 열은 다른 테이블의 전체 목록 중 하나의 참고 문헌을 개별적으로 참조해야합니다 (값이 신뢰할 만한지 확인해야 함).
가 (다른 테이블을 가리 킵니다)
을 하나의 특정 예외 참조를 위해 번호, NULL 발, 또는 0을 포함해야 ID를 고려 I했습니다 몇 가지 솔루션을하지만,하지만 그들은 매우 다른 eachothers이며, 나는 db를 가진 신참이다. 그래서 나는 최선의 해결책에 대해 모른다.
단백질로 값 1을 고려, 개
등등 탄수화물, 같은 (I 희망) 생각이 개 대안은 최고 :
(1) 하나 VARCHAR (? ~ 255) 열을 생성, 이 같은 모든 50 개 IDS, 그래서 뭔가 :
column energy (7.00)
column carbohydrates (89.95)
column fats (63.12)
column value_bil_ids (165862,14861,816486) ## as a varchar
etc...
이 경우, 나는 배열에 ","로 분할하고, ID를 확인하지만, 난 여전히 praticity 코딩 걱정 수 있습니다 ... 너무 많은 열을 절약 할 수는 있지만 나는 확장 성을 위해서 얼마나 소작술이 될 수 있는지 모른다.
column energy (7.00)
column energy_bibl_id (165862)
column carbohydrates (89.95)
column carbohydrates_bibl_id (14861)
column fats (63.12)
column fats_bibl_id (816486)
etc...
weightful 것 같다 : 는 원칙적으로, 나는 쿼리 최적화를위한 보통이 옵션을 (! I 희망)
가 가(2) 간단히 때문에, 모든 값을 추가 id 컬럼을 사용하여 생각 열의 수는 분명하지만 그 다음에는 특히 값 열과 ID의 관계가 명확합니다.
(3)
다음은 최상의 솔루션이 있다면 그렇게table values
energy
carbohydrates
fats
value_id --> point to table values_and_bibliographies val_bib_id
table values_and_bibliographies
val_bib_id
energy_id --> point to table bibliographies biblio_id
carbohydrates_id --> point to table bibliographies biblio_id
fats_id --> point to table bibliographies biblio_id
table bibliographies
biblio_id
biblio_name
biblio_year
는 나도 몰라, 가치, 참고 문헌 뒤에 관계형 테이블을 만들고, 누군가가 가지고하는 데 도움이됩니다 경우에 나는 감사한다 그것에 빛!
MySQL에는 테이블 당 4,096 열의 하드 제한이 있지만 열의 데이터 유형 (http://dev.mysql.com/)에 따라 달라 지므로 그 수는 더 적을 수 있습니다. doc/refman/5.0/ko/column-count-limit.html –