2013-06-26 41 views
0

具有不同類型的資產,某些基於技術的資產應具有IP列,並且此IP應該是唯一的。但非技術資產甚至沒有知識產權專欄。目前我儲存的數據如下: - enter image description here在父表或父表中添加一個表格類型(TPT)繼承

但我不知道在哪裏存儲的IP地址,我有以下方法: -

  1. 商店它在「資產」父表,所以我可以將其設置爲一個唯一的密鑰,並保證不會有基於技術的資產具有相同的IP。但缺點是對於所有非技術資產,IP列將始終爲空。
  2. 第二種方法;是爲每個基於技術的表添加一個IP列。這將防止空值,但需要定製工作以保證唯一性。因爲我可以保證唯一性,而不是所有的技術爲基礎的資產。

所以任何人都可以建議我應該遵循哪種方法或有另一種方法,我不知道?

BR

:::編輯:::

我目前有以下數據庫結構: - enter image description here

目前我看到這點: -

  1. 我在基礎資產表中引入了一個冗餘的AssetTypeID列,所以我可以k現在是資產類型而不必連接表格。這可能會破壞正常化。

  2. 在我上面的體系結構中,我無法控制(在數據庫級別)哪個資產應該有IP,哪個資產不應該有IP,哪個資產可以/不能有多個IP。那麼是否有辦法改進我的架構來處理這兩點。

在此先感謝您的幫助。

回答

1

您可以創建另一個表 TechnologyAsset,它繼承自 Asset。然後 ServersRouter可以從 TechonlogyAsset繼承。

編輯:

你的第二個意見變化的東西完全。您提交的任何選項都不允許將多個IP地址用於單個資產。在這種情況下,您應該創建一個IPAddresses表,然後該表的外鍵爲Asset。通過這種方式,您可以爲給定資產設置零個,一個或多個IP地址。

第二個編輯:

至於點#1,是的,它可能會導致損壞或無效數據。性能和防錯之間存在內在的折衷。索引可以幫助提高性能並保持正常化,但是不會超過將TypeId與世界上所有索引相加的性能。

關於第二點,我認爲保持IP的獨特性是相當困難的,同時迫使某些資產擁有1個IP,有些擁有0個,而另外一些擁有從架構的角度來看擁有多個IP的能力。我正在繪製一些東西,但查詢和插入將會是一個真正的痛苦,而不會介意更新。

我會建議通過執行應用程序的業務規則,規則,存儲過程等。

+0

說實話之前我沒有做這樣的多重繼承的?但在關係數據庫中是否具有這種多級繼承的最佳實踐? –

+0

和我沒有顯示的一些資產可能有多個與它們相關的IP地址。 –

+0

你是對的,你能看到我的編輯和我擁有的新數據庫圖。新圖將解決IP地址的唯一性。但創造了一些其他問題.. –