2010-08-26 180 views
0

我試圖制定出一個關係數據庫的概念,我遇到了一些概念性的問題:關係數據庫概念

  1. 如果我有「嵌套」的多個分立的實體相互/有層次例如:

老闆可以有多個員工。這些員工有不同的項目,一個項目又有多個部分。

所以

B1-Bn: 

     E1-En 

      P1-Pn 

       Section1 -SectionN 

怎麼會是這樣最好在數據庫映射?

換句話說,這個層次結構如何在關係數據庫中最好地映射?

  1. 現在我有Costumers與這些員工進行交互。

他們遇到老闆 然後他們決定哪個員工會爲他們工作。 然後他們被分配了一個或多個部分的項目。

這將如何最好地映射。

  • 關係1-n中,M-N,1-1:可以它們可用於例如爲:
  • 這是因爲,1-n的關係的一個ForeignKey。 由於m-n關係,這是一個ManytoManyField。

    1. 是否有一個優秀的在線工具來更好地理解/可視化。

    非常感謝您的時間!

    回答

    1

    您可能想要關注關係數據庫設計課程;這個題目需要幾天時間才能解釋或掌握。但你在正確的軌道上。

    你可能會看到的第一件事是一個層次結構,但在你知道它之前會有不分層的關係,所以形成了一個網絡。 這就是爲什麼關係數據庫不能使用層次結構。

    您可以確定不同類型的實體並且每種類型都有一個表。

    對於每個實體類型,您可以確定這些實體的屬性 - 每個屬性都是該表的一列。 如果一個屬性沒有原子值,而是一個結構化值,那麼這些結構化值必須被視爲一個實體,並且必須給它自己的表,並且該屬性將是引用該表的外鍵。

    通過這種方式,您將形成由外鍵鏈接的表格網絡。這被稱爲實體關係圖。許多設計人員主張首先創建這樣的圖表,而不直接將實體類型映射到表格。它們允許圖中實體類型之間的多對多關係。另一方面,表之間的外鍵始終是多對一或1對1。所以這些設計師有一個「實施」步驟,在這個步驟中,他們爲每個多對多關係引入一個附加表格。就我個人而言,我不會在我的圖表中使用多對多的關係。

    +0

    好答案!非常感謝!讓它更清晰! – MacPython 2010-08-31 15:34:26

    +0

    謝謝...還有很多棘手的問題,例如如何識別實體(有些人對所有事物都使用ID列,其他人避免像鼠疫一樣),規範化(在維基百科上解釋不佳)等。 – reinierpost 2010-08-31 20:06:13