2011-01-18 160 views
0

就像標題所說,我想從一對一關係轉變爲我的導軌中的多對多關係3應用程序。從一對一關係轉變爲多對多關係

我現在比較擅長rails,但我對數據庫和遷移缺乏很好的理解。

目前,我有一個項目和用戶模型。項目屬於用戶和用戶has_many項目。 我想進入一個項目可以讓許多用戶同時進行協作的情況。

我非常確定我需要建立一個has_many:通過關係類型,但我也很好奇我如何將所有現有的項目和用戶遷移到這種類型的系統中。

謝謝!

回答

0

您需要另一張表格將兩個表格鏈接在一起。這是如何支持多對多的關係。

例如假設你有兩個表是這樣的:

Projects 
---------- 
projectid 
{other columns}  

Users 
------- 
userid 
{other columns} 

新表將是這個樣子: 新表

Projects_Users 
-------------- 
projectid 
userid 

現在,你可以通過簡單地將用戶ID和專案其他用戶添加至項目到 Projects_Users表。同樣,您可以將幾個用戶添加到同一個表中的一個項目。

該表的主鍵是組合鍵項目& userid。

+1

對,我現在建立了這種關係。我如何將現有的所有項目和用戶遷移到這種新格式? – Matt 2011-01-18 23:33:51

0

對,我現在建立了這種關係。我如何將所有現有項目和用戶遷移到此新的 格式 表中?

那麼,這取決於你現在如何設置表;兩個現有關係是如何實施的;其中ProjectUser數據位於舊錶中。發佈您的DDL。你應該能夠簡單地INSERT ProjectUser SELECT FROM ...。我們需要完成那個FROM。

此外行數是相關的;如果它很大,你可能不得不把它分成批次。

+0

好聽起來不錯,我的桌子現在有大約幾千行。我正在使用sqlite3,不知道這是你的意思是由DDL(同樣,我有限的數據庫知識) – Matt 2011-01-19 12:11:16