2011-09-22 67 views
0

自從我設計了一個數據庫並且只是想確保我正確地設計它之後已經很長時間了。如何設計一個有很多2個關係的數據庫

我有一個具有名稱和說明的實體。

該實體可以有許多實體類型的子實體。

所以它就像一個遞歸關係。現在確定如何正確設計數據庫。

我是否創建第二個表或什麼?

更新:一個實體只能有一個父實體或沒有父母。

+0

這個問題應該使用核心數據標記嗎?問題涉及表格,答案都與關係數據庫(如SQL)有關。 – morningstar

+0

不是真的,因爲核心數據分貝設計是不同的 – TheLearner

回答

0

編輯:基於更新的問題,我建議的解決方案是大膽的,如下所示:

首先,我們要明確這是否是一個真正的多對許多情況,因爲它不明朗你的描述是否屬實。

您描述了一個樹結構,其中一個實體可以具有「嵌套」實體,據推測,這些嵌套實體可以各自具有自己的嵌套實體。但這只是一個多對多的問題,如果一個實體可以同時屬於多個父母。

無論哪種情況,您都會將所有實體存儲在一個表中。 如果您想要表示一個沒有多個家族的嵌套實體的「簡單」樹,那麼您可以將parent_entity_id列添加到entities表中,該表指向父級的entity_id。頂級實體在此列中將具有標誌值(例如-1)或NULL在這種情況下,您只需要一個列並且不需要新表來表示關係。

如果它真的與多個親子關係是多對多的關係,那麼您將創建一個新表entity_links,其列parent_entity_idchild_entity_id。您可以通過在此表中插入和刪除行來管理關係。

+0

已更新我的問題 – TheLearner

0

在關係數據庫中,您將使用join table結尾。

entity 
====== 
id 
name 
description 

xref_entity_subentities 
======================= 
parent_entity_id (FK references entity) 
child_entity_id (FK references entity) 

我不能到核心數據說話。

0

對於許多到很多,你會希望有一個交集表委託

對於實例本身之間的關係關係,

Entities  OtherEntities 
--------  ------------- 
ID  ----> EntityID1 
Name  <---- EntityID2 
Descrip 
+0

標題徹底說,這是一個多對多。 –

+0

是的,但文本描述了一個樹形結構。 –

0

對於關係數據庫: 你的實體應該不會有子實體是另一個實體(或者db不會是正常形式),它可以包含一個關係(根據您的需要,一對一,一對多,多對多)到同一個表/實體。

相關問題