2014-01-23 39 views
0

我正在創建一個數據庫,它是一個資產註冊表。每臺計算機都有一個內部編號,屬於一個部門,某些軟件需要鏈接到它,以及優先級是什麼。與數據庫設計苦苦掙扎

例如:

內部版本號:12345
地點:辦公室

的Adobe - Dreamweaver中(優先級高)
的Adobe - Acrobat Reader軟件(優先級低)
的Adobe - 衝擊波(優先級中等)

有大約30個獨立的建築物和約30個部門。

我想不出一個理想的方式來做到這一點?每棟建築物是否應有獨立的桌子?幫幫我!

+0

你的問題是非常高的水平,不是它不應該有單獨的表,請分享您的架構,關係等更多細節。 –

回答

0

一種方法,以表設計以這種方式工作:

  1. 定義你的實體(是你的工作是什麼概念)?

  2. 定義KBM(Key Based Model) - 它們之間的關係是什麼?你需要什麼主鍵和外鍵來將表連接在一起?

  3. 定義您FAM(Fully Attributed Model) - 將屬性(列)添加到描述每個實體但不參與關係的表中。

聽起來像你的實體是構建,部門和資產(或軟件)。從那裏開始。確定需要添加哪些鍵以將它們鏈接在一起,然後添加其餘屬性(例如優先級)。

1

那麼,我們就需要幾個不同的實體/表:

**Department** 
BuildNumber/Id - Primary Key 
Name  

**Computer** 
Id - Primary Key 
BuildNumber - FK to department.buildnumber 

**Software** 
Id - Primary Key 
Name 

**ComputerSoftware** 
Id - Primary Key 
ComputerId - FK to computer.id 
SoftwareId - FK to software.id 
Priority 

通過這種方式,你可以有ID = 1具有計算機buildnumber 12345 Buildnumber 12345只屬於一個部門, 「辦公室」。

在軟件表中,您將分別使用Dreamweaver,Reader和Shockwave,其ID分別爲1,2和3。

表「計算機軟件」定義哪些軟件在特定的計算機上。假設我們在計算機1上安裝了Dreamweaver和Shockware,兩者的優先級均爲「高」,那麼ComputerSoftware表中就會有兩行代表這一點。 這個數據應該是這樣的:

Id = 1 
ComputerId = 1 
SoftwareId = 1 
Priority = "high" 

Id = 2 
ComputerId = 1 
SoftwareId = 3 
Priority = "high" 

希望這有助於約翰·吳的回答是偉大的,但我想給一個非常簡單的例子太多。

相關問題