2012-02-07 35 views
1

我有兩個類(Book,Software)從Product類繼承。這兩個類有一些不同的領域。如果我要將這兩個類的數據保存到一個表中,則會導致某些列具有空值。我如何構建我的數據?

如果我將數據保存到不同的表(書籍表和軟件表),然後想要在單個gridview中查看這些數據,我是否需要加入數據然後將其加載到gridview?

我想再添加2個類(IndividualCustomer,W​​holesaleCustomer),後面的類將以上述方式繼承Customer類。

請指引我走向最好approach.thank你

+1

什麼是你的表/數據庫的結構是你有任何真正的關係設置? – MethodMan 2012-02-07 17:43:27

+0

不,我還沒有建立任何關係,我需要關於如何處理設計的建議。 – Xerxes 2012-02-07 17:45:23

回答

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 2012-02-07 18:06:56

+2

我不能給你一個C#答案,但SQL可能看起來像'SELECT * FROM products p 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 2012-02-07 18:10:10

+2

通過這種設計,您可以爲每本圖書產品製作多本圖書。爲了在關係數據庫中表示繼承,它應該比1:N關聯更好的1:1關聯。 – 2012-02-07 19:06:47

3

在這樣的情況下,我創建三個表:產品,圖書和軟件。

在產品我會把PK和所有常見的領域;在Book中具有相同的PK和書的特定領域;與Book for Software相同。

這些類型的表之間的關聯應該是1:1。

1

的書籍和軟件是不是不同的產品,他們只是不同的類別。

我會創建一些表: 產品 分類 屬性 PropertiesToCategories PropertiesToProducts

在這種形式下,你可以將某些屬性附加到每個類別,例如:書有作者,書名,出版社

當你想添加一個新的產品,你應該先選擇它的類別,然後你可以將可用的(書籍:作者,標題,出版商)屬性附加到你的新產品。

相關問題