Questions tagged «many-to-many»

类型A和类型B的实体之间的一种关系,将类型B的实体列表与类型A的实体相关联,反之亦然。类型A和B可以是相同类型。



5
Rails的find_or_create_by不止一个属性?
活动记录中有一个方便的动态属性,称为find_or_create_by: Model.find_or_create_by_<attribute>(:<attribute> => "") 但是,如果我需要通过多个属性来find_or_create怎么办? 假设我有一个名为GroupMember的模型来处理组与成员之间的M:M关系。我可能有很多实例,其中member_id = 4,但我再也不想拥有一个实例,其中member_id = 4和group_id = 7。 GroupMember.find_or_create(:member_id => 4, :group_id => 7) 我意识到可能有更好的方法来处理此问题,但是我喜欢find_or_create的方便性。

1
如何在Django中使多对多字段为可选?
当您具有多对多关系(related_name,而不是through)并且尝试使用管理界面时,即使您不必创建第一个条目,也需要输入其中一个关系。 我正在创建一个作为活动组织者的应用。想象一下,我们拥有Event和Group模型,并具有多对多关系。 Django使用related_name另外两个表的索引创建另一个表。 但我看不出为什么这个额外的表已经被填充。 如果我通过phpMyAdmin使用数据库,则可以创建一个Group而无需注册Event,因为两者之间的连接仅通过单独的表进行,并且在给定级别上没有数据库值强制实​​施。 我该如何实现管理界面? 如何在Django中使多对多字段为可选?

8
一对多,多对一和多对多的区别?
好的,所以这可能是一个琐碎的问题,但是我在可视化和理解差异以及何时使用它们方面遇到困难。对于诸如单向和双向映射之类的概念如何影响一对多/多对多关系,我也还不清楚。我现在正在使用Hibernate,因此任何与ORM相关的解释都将有所帮助。 举例来说,我有以下设置: public class Person{ private Long personId; private Set<Skill> skills; //Getters and setters } public class Skill{ private Long skillId; private String skillName; //Getters and setters } 那么在这种情况下,我将进行哪种映射?对于这个特定示例的答案肯定会受到赞赏,但我也确实希望获得何时使用一对多和多对多以及何时使用联接表与联接列以及单向与双向的概述。

4
MongoDB多对多协会
您将如何与MongoDB建立多对多关联? 例如; 假设您有一个Users表和Roles表。用户有许多角色,而角色有许多用户。在SQL领域中,您将创建一个UserRoles表。 Users: Id Name Roles: Id Name UserRoles: UserId RoleId MongoDB中如何处理相同类型的关系?


3
用多余的列映射多对多关联表
我的数据库包含3个表:User和Service实体具有多对多关系,并按如下所示与SERVICE_USER表联接: 用户-SERVICE_USER-服务 SERVICE_USER表包含附加的BLOCKED列。 执行这种映射的最佳方法是什么?这些是我的实体类 @Entity @Table(name = "USERS") public class User implements java.io.Serializable { private String userid; private String email; @Id @Column(name = "USERID", unique = true, nullable = false,) public String getUserid() { return this.userid; } .... some get/set methods } @Entity @Table(name = "SERVICES") public class CmsService implements …

5
SQL-多对多表主键
阅读此问题的评论后,出现此问题: 数据库设计 创建多对多表时,应该在两个外键列上创建一个复合主键,还是创建一个自动增量替代的“ ID”主键,然后将索引放在两个FK列上(也许独特的约束)?在每种情况下插入新记录/重新索引对性能有何影响? 基本上,这是: PartDevice ---------- PartID (PK/FK) DeviceID (PK/FK) 与这个: PartDevice ---------- ID (PK/auto-increment) PartID (FK) DeviceID (FK) 评论者说: 将两个ID设置为PK意味着表将按照该顺序在磁盘上进行物理排序。因此,如果我们插入(Part1 / Device1),(Part1 / Device2),(Part2 / Device3),则(Part 1 / Device3),数据库将必须将表分开,并在条目2和3之间插入最后一个。对于许多记录,这变得非常成问题,因为每次添加一条记录都要涉及数百,数千或数百万个记录的改组。相比之下,自动递增的PK允许将新记录附加到末尾。 我问的原因是因为我一直倾向于在没有代理自动增量列的情况下执行复合主键,但是我不确定代理键实际上是否性能更高。

3
Django从ManyToMany关系中删除对象
如何在不删除实际对象的情况下从多对多关系中删除对象? 例: 我有模型Moods和Interest。 Mood有一个多对多字段interests(这是一个models.ManyToManyField(Interest))。 我创建了一个Moods名为的实例my_mood。在my_moods我的兴趣领域my_interest, >>> my_mood.interests.all() [my_interest, ...] 如何my_interest从中my_mood删除而不删除任何模型实例?换句话说,如何删除关系而不影响相关模型?

5
插入/更新多对多实体框架。我该怎么做?
我正在使用EF4和它的新功能。我的项目中有很多很多,似乎无法弄清楚如何插入或更新。我建立了一个小项目,只是为了看看应该如何编码。 假设我有3张桌子 类别:ClassID-ClassName 学生:StudentID-名字-姓氏 StudentClass:StudentID-ClassID 添加所有关系并通过模型浏览器更新了模型后,我注意到没有出现StudentClass,这似乎是默认行为。 现在,我需要同时进行插入和更新。你怎么做呢?我可以下载示例的任何代码示例或链接,还是可以节省5分钟?


4
Django过滤器包含对多对多
我试图通过多对多关系过滤一堆对象。因为该trigger_roles字段可能包含多个条目,所以我尝试了contains过滤器。但是由于它被设计为与字符串一起使用,我几乎无助于我如何过滤这种关系(您可以忽略values_list()atm。)。 此功能附加到用户配置文件: def getVisiblePackages(self): visiblePackages = {} for product in self.products.all(): moduleDict = {} for module in product.module_set.all(): pkgList = [] involvedStatus = module.workflow_set.filter(trigger_roles__contains=self.role.id,allowed=True).values_list('current_state', flat=True) 我的工作流程模型如下所示(简化): class Workflow(models.Model): module = models.ForeignKey(Module) current_state = models.ForeignKey(Status) next_state = models.ForeignKey(Status) allowed = models.BooleanField(default=False) involved_roles = models.ManyToManyField(Role, blank=True, null=True) trigger_roles = models.ManyToManyField(Role, blank=True, null=True) …


1
Django与其他字段的ManyToMany关系
我想在其中自动创建的ManyToMany联接表中存储一些其他信息。我将如何在Django中做到这一点? 就我而言,我有两个表:“雇员”和“项目”。我要存储的是每个项目中每个员工每小时工作所获得的收入,因为这些价值并不相同。那么,我该怎么做呢? 我想到的是,而不是方法“ ManyToManyField”,显式创建一个第三类/表来存储这些新信息,并使用“ ForeignKey”方法设置其与“ Employees”和“ Projects”的关系。我很确定它会起作用,但这是最好的方法吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.