2012-07-11 3 views
0

나는 인터넷 검색을 시도했지만, 데이터베이스를 잘 이해하지 못해서 Google 검색으로 작동하도록 내 질문을 말하고 있습니다.checkboxlist-like 데이터베이스 필드를 정의하는 방법

어딘가에 답변을 드렸지만 죄송하지만 찾으실 수 없습니다. 이것에 대답 할 수있는 링크는 크게 감사 할 것입니다.

데이터베이스에 테이블을 설정하려고합니다. "Compatible with"이라는 필드를 포함하여 많은 필드를 포함하는 Software 테이블이 있습니다.

"호환 가능"은이 소프트웨어가 호환되는 운영 체제 (예 : Windows XP, Windows 7 등)를 저장하는 데 사용됩니다. 충분히 간단합니다.

응답 수가 설정된 다른 필드 (예 : dropdownslists)와 별도로 데이터베이스를 별도의 테이블과 외래 키로 정규화했습니다. 내 생각 엔 "호환 가능"필드에서도이 작업을 수행하는 것이 "우수 사례"이지만 정상화 된 테이블을 어떻게 설정해야하는지 잘 모르겠습니다.

나는 오른쪽 방향이 될 수 여기서 뭔가 http://forums.asp.net/t/1675666.aspx/1을 발견, 그래서 이렇게 내 테이블을 만드는 생각 :

 
Column Name   Data Type 
CompatibleWithId  int 
Windows XP   bit 
Windows 7   bit 

...want to be able to add more later... 

내가 다 퉜다 문제는 미래에 내가 추가해야 할 것입니다 "Compatible with"필드의 옵션 목록에 추가하십시오. C# 코드에서 (위의 예제처럼 MVC 2와 Entity Framework 4.3.1을 사용하여) 테이블에 열을 추가하는 방법이 있습니까? 아니면 이것을 설정해야하는 완전히 다른 방법이 있습니까?

Software to compatibility --> one to Many 

그래서 호환성 테이블 : 소프트웨어 요구 사항에 대한 이해에 따르면

답변

1

(만약 내가 잘못 나 수정하시기 바랍니다)은, 여기에 내가 데이터베이스 스키마

table1: software (id, name, blah, blah) 
table2: operating_sys (id, os_name, version) 
table3: compatibility (software_id, os_id) 

관계를 가지고하는 방법입니다 각 소프트웨어에 대해 여러 행을 갖습니다. 이제 더 많은 운영 체제 또는 버전이 있으면 operating_sys 테이블에 추가 할 수 있고 호환성 테이블에 해당 항목을 추가 할 수 있습니다.

찾고 계신가요?

+0

예. 그것은 그것을하는 훨씬 더 좋은 방법처럼 보입니다. 고맙습니다! –

+0

빠른 질문입니다. 내가 그것을 똑바로하고 있는지 확인하고 싶다. 호환성 테이블의 경우, software_id와 os_id는 다른 두 개의 테이블에 대한 외래 키입니다. 맞습니까? 호환 테이블에 기본 키가 없습니까? –

+0

예 그들은 둘 다 외래 키입니다. 호환성 테이블에 'id'라는 기본 키가있을 수 있습니다 (데이터베이스에 포함되어있을 수 있습니다). 그러나 소프트웨어와 호환되는 OS를 찾는 것과 같은 사소한 목적을 위해 최소한 반드시 필요하지는 않습니다. 어쨌든 그것을 가질 좋은 생각입니다. 미래에는 더 복잡한 결과가 필요합니다. – Shaunak