2010-01-18 6 views
0

이 내용을 ServerFault에 게시하고 이것이 더 좋은 장소라고 말했습니다.간단한 SQL Server 2008 데이터베이스에 대한 데이터베이스 스키마 디자인

저는 개발자로서의 경험이 있지만 SQL 관리 및 데이터베이스 디자인에 관해서는 완전한 초보자입니다.

SQL 백엔드가있는 ASP.NET 응용 프로그램을 사용하여 회사의 주문 및 견적 과정을 엑셀 스프레드 시트에서 좀 더 강력하게 변환하고 있습니다.

현재 당사의 부품 데이터베이스는 Excel 스프레드 시트 일뿐입니다. 당사의 많은 제품은 라우터, 서버 등과 같은 OEM의 선반 하드웨어에 불과합니다. 우리는 주로 소프트웨어 상점이므로 장비에 응용 프로그램을 설치하고 네트워크 장비를 구성하며 우리가 설치 한 완벽한 솔루션을 선적합니다 기술자. 내 스키마에서

나는, 5 개 테이블

  • CompanyProducts
  • OEMProducts
  • SupplierProducts
  • 공급자
  • OEM 업체

OEMProdcuts 시스코 같은 장비 manufcaturer 정보가 포함되어 있습니다 네트워킹 용 장비 또는 Dell에 문의하십시오.

SupplierProducts 우리의 OEM 물건을 얻을 공급 업체에 대한 정보가 포함되어 있습니다 (OEM의 사용 리셀러를 많이하기 때문에)

companyProducts 우리 회사에 ID의 특정 제품을 포함한다.

여기에 SQL Server 관리 Studio에서 스냅 샷입니다 :

alt text http://i102.photobucket.com/albums/m108/ArkhamFreak/schema2.jpg

내 질문은 :

이 간단한 스키마에 대한 기본 키를 설정하는 가장 좋은 방법은 무엇입니까

? 다이어그램에 표시된대로 자동 증가 필드를 GUID로 사용하거나 모든 테이블에서 참조 할 기본 키의 OEMProductID를 사용해야합니까?

OEMProducts에 대한 Supplier Suppliers 제품 및 OEM 공급 업체는 분명하지만 나머지 관계는 확실하지 않습니다. OEMProducts를 참조하는 테이블에 데이터를 추가 할 때 모호한 자동 생성 ID로 OEMProducts를 참조해야한다면 조금 걱정됩니다. 같은 장비를 여러 대 공급하는 공급 업체가 여러 곳이기 때문에 그러한 관계를 모델링하는 방법을 잘 모릅니다.

감사합니다.

답변

1

글쎄, 몇 가지 생각 :

  • 는 확실히 하지는 공급자 테이블의 기본 키로 SupplierName을 사용합니다. 다른 항목 사용 - 특정 항목 (예 :당신이 사용할 수있는 "Supplier Number", 또는 그렇지 않은 경우, 단순한 INT (IDENTITY 포함 가능)를 사용하여 각 공급 업체를 유일하게 한정 할 수 있습니다.

  • 동일 함은 Product입니다 (ProductID, 그 고유하고 안정적인 경우) 및 OEM (다시 말하면 : 특정 일종의 고유 한 정보 항목을 사용하고 이름은 사용하지 않거나 자신의 "OEM ID"를 작성하십시오.)

  • 왜 당신은 SupplierProductID SupplierProducts 테이블의 OEMProductID? 그럴만한 이유가있을 수 있습니다. 처음에는 나에게 분명하지 않았습니다.

개인적으로 GUID의 남용을 좋아하지 않아요

- (int로 비교했을 때), 그들이 당신의 SQL 서버 인덱스에 불쾌한 결과의 모든 종류를 가지고 그들이, 그들은 큰 지방 성가신있어하고을 (인덱스 GUID에 대한 좋은 이유가 없다면 (일반적으로 여러 물리적 위치 사이에서의 복제와 같은), INT의 사용을 선호합니다. ID를 직접 생성하거나 처리 할 데이터베이스에 남겨 둘 수 있습니다. INT IDENTITY).

+0

공급 업체와 OEM 간의 제품 ID가 항상 일치하지 않기 때문에 supplierProductID와 OEMProductID가 모두 있습니다. 예를 들어 Cisco 7200 라우터는 Cisco에 따라 7204VXR 일 수 있으며 공급 업체에 따라 ROUT0001 일 수 있습니다. 팁 주셔서 감사합니다. CDW 또는 IngramMicro를 쉽게 기억할 수 있지만 Supplier23을 기억하기가 쉽지 않기 때문에 이름 (공급 업체 및 OEM 용)을 사용하고 싶었습니다. 이론적 인 세계에서 똑같은 이름을 가진 두 공급 업체가 있어야한다는 사실 외에도 소수의 공급 업체를 사용하기 때문에 문제가 발생합니까? – Ryan

관련 문제