2

데이터베이스에 작업 (작업) 테이블과 도구 테이블이 있습니다. 공구 테이블은 두 부분으로 나누어 져 있는데, 첫번째는 카테고리 (tool_category)이고 다른 하나는 도구 데이터 (common_tools)입니다.SQL Server의 데이터베이스 테이블 관계

이제 내가 물어보고 싶은 것은, 다른 카테고리 (tool_category)에 대한 도구 (common_tools)에서 나열된 드롭 다운 필드를 선택해야한다는 취업 형태입니다. 나는 아래 두 가지 접근법을 제시하고있다. 어느 것이 더 낫고 왜 그런지 제안하십시오.

접근 한

나는 세 개의 필드를 포함하는 테이블 "tools_in_jobs"을 만들었으며 우리는이에 알 수있는 작업 형태로하는 범주를 선택하는 도구 값이.

enter image description here

접근법 2

또 다른 방법 대신에 그림 아래 그림처럼 우리가 각 도구에 대해 별도의 테이블을 만들 수있는 모든 도구에 대한 공통의 테이블이다. 하지만 여기서 주목해야 할 것은 두 테이블 (job_faculty 및 job_expertise)이 예를 들어 다른 카테고리의 5 개에서 6 개 도구를 사용하는 것과 같은 5 개에서 6 개까지의 테이블이 될 수 있다는 것입니다. 다른 제안이있는 경우

enter image description here

또한 제안하십시오.

답변

2

나는 당신이 성취하고자하는 것을 정말로 이해하지 못한다. 그러나 내가 말할 수있는 것은 그 접근법 2가 전혀 좋지 않다는 것이다. 각 도구에 대한 테이블? 어느 것이 모두 같은 들판입니까? 나! 이것은 엄청난 오버 헤드이며 프로그램에서 "중복 코드"와 유사합니다. 유지 보수 성, 확장 성 등도 정말 나쁘다고 생각합니다.

다음 중 하나에 접근 - "tools_in_job"테이블이 도구와 범주에 관계가있는 이유는 무엇입니까? 도구로는 충분하지 않습니까? (쓸모없는 중복으로 보입니다) 또는 이 카테고리의 의미는 무엇입니까?

내가 말했듯이 당신이 성취하려는 것을 더 잘 설명해야합니다. 나는 그 때 편집 할 것이다.

+0

예, tools_category_id는 이미 common_tools와 관련되어 있으며 카테고리와 관련되어 있기 때문에 tools_in_job 테이블에서 제거 할 수 있습니다. 귀하의 회신을 보내 주셔서 감사합니다. 귀하의 회신에 감사드립니다. –

0

확실히 접근법 1이 가장 바람직하지만 작업에서 tool_category_id를 제거하고 디자인을 표준화하기 위해 tools_in_job과 tool_category 간의 관계도 제거하십시오.

접근법 2는 새로운 도구를 추가하고 더 많은 코드를 작성 및 유지 관리하며 더 많은 테이블과 색인을 유지 관리하고 더 많은 저장 공간을 사용할 때마다 새 테이블을 만드는 것을 의미합니다.

+0

. 나는 tenhouse의 제안 후에 이미 이러한 변경을했습니다. –