2011-05-06 131 views
1

我有四個表:企業,產品,客戶和銷售。數據庫設計 - 我有冗餘嗎?

  • 一個公司可以有多個產品
  • 一個公司可以有多個客戶
  • 銷售是產品和客戶的孩子:他們的關係如下。每個銷售記錄都指向一個產品和一個客戶。

對於您可以通過兩種不同的途徑追溯銷售給公司,我感到不安。這就提出了數據完整性問題的可能性 - 如果產品路線說最終的母公司是A公司,並且客戶路線說它是公司B?

這聽起來像一個SQL-反模式給我,但我可能是錯的。我能做些什麼呢?

謝謝!

回答

2

這要看情況。你說:

一個公司可以有多個 客戶

這是否意味着每個Customer只在一個Company店?

如果不是,CustomerCompany之間的關係是不是應該由Products定義的關係?

這將意味着在Customer除去fk_Company字段(或等同物)。

然而,如果關係而不是在Customer註冊在Company,這是不同的。

在這種情況下,如果有買了ProductsCompanyCustomer「屬於」之間有衝突,它不是一個真正的衝突 - 衝突將是CompanyCustomer註冊之間,和CompanyCustomer具有剛剛逛過在,即,不是真正的衝突。

最終的問題是,什麼是CustomerCompany之間的關係 - 它是在Customer

  • 最近逛過(冗餘)
  • 一般商店(冗餘)
  • 首先逛過(多餘)
  • 註冊(也許不是冗餘的)
+0

謝謝s Graphain。我可以看到這一切都在上下文中! – 2011-05-06 22:24:58