2011-06-01 93 views
4

這是一個後續問題我剛纔的問題上「Managing employee contracts in a many-to-many relationship?」和this question如何在JSON中處理ManyToMany關係?

我能正是如此解釋的關係:

company --<contracts>-- employees

我通過JSON導入數據。爲簡單起見,它顯示如下。

{ 
    "companies" : [ 
    { 
     "name" : "Company A", 
     "employees" : [ 
     { 
      "name" : "Tom", 
      "contract" : { 
      "length" : "10", 
      "salary" : "10000" 
      } 
     } 
     ] 
    } 
    ] 
} 

問題是,我不確定這是否正確。

在我的模型關係contract坐在company,在我上面的代碼之間employees,而我已經把它作爲一個對象,它位於作爲員工以下的兒童。

因此,我的問題是,結合表應該在JSON提要內位於何處?

它應該作爲員工的父母,還是沒有問題?

我不知道我是否正確地做了這件事,並且歡迎任何關於結構/佈局依賴於聯結表的JSON提要的最佳方法方面的任何幫助/想法。

我知道它可能看起來很愚蠢,但我試圖確定處理聯結表時的最佳標準。

謝謝。

編輯。

目標/內容

我試圖在JSON讀入使用TouchJSON核心數據。對於之前沒有澄清背景的道歉。更新了標籤。

我把JSON讀入NSDictionary。如果我開始將對象分開,我不確定如何讓TouchJSON/iOS在解析/讀取數據到內存時瞭解每個關係的上下文。

+0

我認爲這取決於你想要對數據做什麼,你想如何處理它...... – 2011-06-01 20:02:48

+0

我希望從feed中獲取數據並將其放入Core數據中。 – zardon 2011-06-02 05:14:45

回答

2

無外鍵完成此操作的唯一方法是複製關係中「多」實體的一側。根據上面的示例,這意味着在整個數據結構中複製員工。

你真的只能解決這個問題,就像你的關係數據庫解決這個問題一樣 - 使用映射表和外鍵。

{ 
    "companies" : [ 
    { 
     "id" : 1, 
     "name" : "Company A" 
    } 
    ], 

    "employees" : [ 
    { 
     "id" : 1, 
     "name" : "Fred" 
    } 
    ], 

    "contracts" : [ 
    { 
     "id" : 123, 
     "company_id" : 1, 
     "employee_id": 1 
     "length" : 10, 
     "salary" : 10000 
    } 
    ] 
} 

(順便說一句,數值在JSON是有效的,它們不需要被引用)

的問題,那麼,如果你在序列化的時候必須給你提供這些鍵。如果不是,那麼您可能需要分配一些,即使是暫時用於JSON的目的,以實現您的目標。

+0

因爲JSON是在PHP應用程序中創建的,所以我確實有鍵。但問題是,當我在Core數據/ iOS中反序列化它時,我不確定如何確保TouchJSON/iOS在閱讀時瞭解每個關係的上下文。 – zardon 2011-06-02 05:25:17

+0

關於這個解決方案的更多思考,是否意味着我需要將API直播,因爲我寧願不這樣做,只是使用固定文件(在這種情況下是JSON)。我不知道如何讓Core數據/ iOS理解所有關係等,除非我將整個JSON訂閱源加載到內存中,然後通過各種NSDictionaries進行拖網來查找匹配項。這聽起來相當耗費人力和時間。如果有另一種方式,我至少有興趣看看它。 – zardon 2011-06-02 14:43:20

+0

@zardon我們在這裏談論的數據量是多少? – Matt 2011-06-02 18:38:41

1

您的實體關係(ER)模型表達的主要原因很多:通過關聯實體的許多關係是因爲關係數據模型(關係數據庫是您ER模型的實現最有可能的位置)不能直接表達許多:許多關係—它需要一個多關係的相交表。請注意,還有其他原因可能需要這樣一個相交表(例如,合約本身就是一個實體)。

但是,沒有理由說您的對象模型必須承受關係數據庫施加的約束。

+0

我對實體關係模型感到滿意,我已經測試過它,它確實解決了我的需求/問題;然而JSON的東西讓我感到困惑。它是否反映了關係數據庫的結構,如果我開始分離它,iOS如何理解關係上下文? – zardon 2011-06-02 05:30:28

+0

我剛剛決定讓應用程序簡化並儘可能避免這種情況。 – zardon 2011-07-05 14:35:16

+0

我的2美分:JSON並不是要反映E-R模型或關係數據庫,它只是一個可以模擬_hierarchical_ db的文本列表。 – netalex 2013-06-28 10:00:39