2011-01-18 137 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