2012-02-07 4 views
1

Product 클래스에서 상속받은 두 개의 클래스 (Book, Software)가 있습니다. 이 두 클래스에는 서로 다른 필드가 있습니다. 이 두 클래스의 데이터를 단일 테이블에 저장하면 일부 열에는 null 값이 생깁니다.데이터를 어떻게 구조화 할 수 있습니까?

다른 테이블 (Books 테이블 및 Software Table)에 데이터를 저장 한 다음 단일 Gridview에서이 데이터를 보려면 데이터를 조인 한 다음 Gridview에로드해야합니까?

나중에 Customer 클래스를 상속하는 2 개의 클래스 (IndividualCustomer, WholesaleCustomer)를 위에서 추가 한 것과 같은 방식으로 추가하고 싶습니다. 제품, 도서 및 소프트웨어 :

나에게 최고의 approach.thank으로 안내하시기 바랍니다이 같은 상황에서

+1

귀하의 테이블/데이터베이스의 구조는 무엇입니까 이것은 어떤 진정한 관계를 설정합니까 ?? – MethodMan

+0

아니요, 저는 아직 어떤 관계도 설정하지 않았기 때문에 디자인에 접근하는 방법에 대한 조언이 필요합니다. – Xerxes

답변

3

나는 더 C#을 프로그래머는 아니지만, 나는 책과 소프트웨어 그들은 단지 서로 다른 카테고리 서로 다른 제품하지

`products` table 
- product_id (pk) 
- title 
- price 
- etc 

`products_software` table 
- software_id (pk) 
- product_id (foreign key, relates to a product_id) 
- serial_number 
- storage_media 

`products_books` table 
- book_id (pk) 
- product_id (foreign key, relates to a product_id) 
- pages 
- author 
+0

그리고 결합 된 데이터를 단일 gridview에서보고 싶다면 데이터베이스를 어떻게 쿼리합니까? – Xerxes

+2

C# 응답을 줄 수는 없지만 SQL은 SELECT * FROM 제품과 유사합니다. INNER JOIN products_software ps on p.product_id = ps.product_id UNION SELECT * FROM products p INNER JOIN products_books pb ON p.product_id = pb.product_id' – Joe

+2

이 디자인을 사용하면 모든 도서 제품마다 많은 책을 보유 할 수 있습니다. 관계형 DB에서 상속을 나타 내기 위해서는 1 : N 연관보다 1 : 1 연관성이 높아야합니다. –

3

나는 세 개의 테이블을 만들 수 있습니다.

제품에서는 PK와 모든 공통 필드를 입력합니다. 도서에서 동일한 PK 및 도서 특정 필드; Book for Software와 동일합니다.

이러한 종류의 테이블 간의 연결은 1 : 1이어야합니다.

1

같은 것을 함께 갈 것입니다.

나는 여러 테이블을 만들 것입니다 : 제품 카테고리 속성 PropertiesToCategories PropertiesToProducts

이 양식에서

각 범주에 몇 가지 속성을 첨부 할 수 있습니다, 예를 들어 : 책은 저자, 제목, 제작사

있다 당신은 새로운 제품을 추가하기를 원합니다. 카테고리를 먼저 선택해야합니다. 그런 다음 사용 가능한 (Books : Author, Title, Publisher) 속성을 새 제품에 연결할 수 있습니다.

관련 문제