2016-04-02 45 views
1

我想建立一個MySQL模式的以下情況。MySQL數據庫模式的航運路線,避免複雜性

一本書正在從位置A傳送到位置B,通過其他幾個位置。 例如對於一本從溫哥華到洛杉磯的書,我們可以從溫哥華到西雅圖到波特蘭到洛杉磯(路線1),或者它可以採取從溫哥華到卡爾加里到布萊恩到西雅圖到洛杉磯的不同路線(路線2 )。

對於每本書提供

  • 我想跟蹤它穿過的位置。
  • 我想跟蹤這本書是否到達每個「準時」或「遲到」的 位置。

後來,當我拉起關於某本書的信息時,它將顯示它所用的運送路線。同樣,我可以提取通過卡爾加里(或任何其他地點)運送的書籍。另外,我可以展示由同一本書的多個副本拍攝的替代航運路線。

已經有一個MySQL模式開始聽起來很複雜。我明白,通過正確使用外鍵和聯合操作,我們可以使一些事情成功。

但是,我想知道社區是否可以推薦更好的方式來組織這些信息。 MySQL是否適合這項工作?我應該嘗試將這些信息存儲在外部XML文件中嗎?或者我應該探索一種NoSQL方法?評論將非常受歡迎。

+0

這是一個SO的小OT。也許試試dba論壇 – Strawberry

回答

0

對NoSQL的解決方案文檔結構/架構可能看起來像:

{ 
    _id:shippingIdHere, 
    book:{document containing book data} 
    routeInfo:[ {cityId(or just name), timeStamp, isOnTime}] 
} 

該文件將包含路由信息數據的陣列 - 城市,時間,並準時路線的指示。 然後,需要在routeInfo字段中添加一個索引以獲得更快所需的內容。

我看到與MySQL沒有問題的,因爲這可以通過創建一個表像這樣

ROWID做| shipingId | BOOKID | cityId | isOnTime |的timeStamp

,使視圖會做工作。

+2

值得指出的是,這個nosql模式只能在支持每個集合多個索引的DBMS上有效地工作(否則你需要多個集合)。而XML是一個完整的非啓動器。 – symcbean