2013-12-18 53 views
1

尋找一些關於如何繪製我的表模式來表示當前雙向圖的建議。如何創建MYSQL模式來表示圖形數據庫?

我有一個節點列表,假設他們是全球機場(SFO,LAX,CDG,HKG等)。 節點通過不同權重的雙向邊連接。

例如,SFO-> LAX邊緣可以是10,但是LAX-> SFO是8.

的權重每天都在變化,也想MySQL數據庫來存儲所有的節點,邊和每權重天。

這是我目前的想法,但有沒有更好的方法來解決這個問題?我應該使用多個表嗎?

DATE, SOURCE, DESTINATION, WEIGHT 
12/01 LAX  SFO   8 
12/01 SFO  LAX   10 
12/01 ...  ...   ... 
12/02 LAX  SFO   15 
12/02 SFO  LAX   9 
12/02 ...  ...   ... 
... ...  ...   ... 
+0

如果有某種實際數據(如用於計算今天的路線之一) - 它是有道理的,從它分離的歷史。 – zerkms

+1

您的數據結構似乎在描述數據方面做得非常好。結構看起來很好。我會傾向於包含一個自動遞增的主鍵。如果您的數據很大,出於性能原因,索引和分區可能是可取的。 –

+0

你可以通過機場表進一步標準化,並在這裏用外鍵引用它們 –

回答

0

你的數據模型取決於你想要存儲什麼數據以及你想如何與之交互 - 你似乎只給了我們前者的局部圖片。儘管單個表格可以描述邊緣,但它是有方向性的,因此需要2行來描述每條邊緣 - 如同您的示例一樣。

例如,SFO-> LAX邊緣可以是10,但是LAX-> SFO是8

這指出該數據是不對稱的,並且因此不雙向 - 在這種情況下單桌足夠。

雖然您可以用關係數據庫來描述數據,但它不提供將數據分析爲圖形的工具。然而,MySQL有一個數據引擎,它的確如此,但OQGraph開發的當前狀態是unknown

2

創建節點表和邊緣表

Node Table 
ID Airport AirportProperties 
1 LAX  Address of LAX 
2 SFO  Adress and Link etc. 
3 ... 


Edge Table 
ID NodeID refNodeID Date Weight 
1 1  2   12/01 8 
2 2  1   12/01 10 
3 ...