기술 및 교육 세부 정보를 모두 모아 놓을 것입니다. 나는 열을해야합니다 :합니다 (DB 또는 NULL) competency_level 및 priority_level이 포럼에서 비어있을 수 있습니다 교육, 유사DB 디자인 모범 사례 : 개별 항목이있는 여러 행 또는 여러 항목이있는 단일 행을 반환 하시겠습니까?
skills_mat_id | user_id | skill | competency_level | priority_level |
뭔가를.
문제는 내가 각 기술에 대한 별도의 라인 항목을 작성해야한다, 즉 :
1, user1, java, 7, 1
2, user1, php, 6, 2
3, user1, css, 4, 2
4, user1, python, 8, NULL
또는 내가 같은 열에서 모든 것을해야한다 : 내가 처음 같은 느낌
1|user1|java,php,css,python|7,6,4,8|1,2,2,NULL
을 옵션은 구현하기가 훨씬 쉽지만 (NULL/빈 필드로 인해 프론트 엔드에서 실수하는 경향이 적다) 두 번째 옵션이 더 "효율적"으로 보이고 많은 기술 목록이 될 수있는 단일 행을 반환합니다 . 두 옵션 모두 성능에 차이가 있습니까? 이 문제가 프론트 엔드 문제일까요? 또는 디자인 결정은 DB 성능에 상당한 영향을 미칩니다. 나는 이것을 위해 MySQL을 사용할 것이지만, 어느 데이터베이스 플랫폼에 대해서도 특별히 부분적인 것은 아니다.
두 번째 옵션으로 특정 스킬을 업데이트하거나 삭제하는 것과 관련이 있습니다. 우연히 레코드의 잘못된 부분을 실수로 삭제하거나 업데이트 할 가능성을 줄이는 방법으로이 작업을 수행하는 방법에 대해서는 확신하지 못합니다.
Google은 잠재적으로 "기술"또는 "교육"테이블을 크게 늘릴 수있는 수십만 명의 사용자를 찾고 있으며 따라서 이와 같은 데이터 세트에 대한 최선의 방법이 있는지 궁금해하고 있었습니까?
정규화가 잘못되었습니다. 그것이 무엇인지 모르는 경우, 필자는이 책에 대한 좋은 점을 들었습니다. Mereals를위한 데이터베이스 디자인. –