问题标签 [foreign-key-relationship]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
529 浏览

django - Django:多对一字段和数据完整性

假设我有一个运行库存系统的人。每个人都有一些汽车,每辆汽车都有大量的零件(假设是数千个)。

一个人,鲍勃,使用 Django 表单来创建汽车。现在,Bob 去创建一些零件。只有在表单级别,Django 才知道 Parts 属于某个特定的 Car,并且 Parts.ForeignKey(Car) 字段应该只有特定的 Car 作为选项。创建零件时,您必须弄乱表单的构造函数或类似的东西,以便将 Cars 的选择限制为仅 Bob 拥有的汽车。

在表单级别强制执行这种所有权似乎根本不合适或不安全。首先,除了车主之外,任何人似乎都无法访问其他用户的汽车;目前,只有实体形式的编程才能防止任何人查看任何其他人的汽车!其次,以这种方式修改构造函数来解决问题似乎很草率。大家对此怎么看,有什么办法可以强制执行吗?

0 投票
4 回答
923 浏览

mysql - mysql删除和数据库关系

如果我尝试从表中删除多行,并且由于数据库关系而无法删除其中一行,会发生什么?

不受关系约束的行是否仍会被删除?还是整个删除都会失败?

0 投票
4 回答
3913 浏览

database - 数据库设计中哪个表应该是主表和子表

我正在快速学习数据库设计的来龙去脉(截至一周前,这对我来说还是新事物),但我遇到了一些似乎不是很明显的问题,所以我希望得到一些澄清.

我正确的问题是关于外键的。作为我设计的一部分,我有一张公司表。最初,我将地址信息直接包含在表中,但是,由于我希望实现 3NF,我将地址信息分解为自己的表Address。为了保持数据完整性,我在Company中创建了一个名为“addressId”的行作为 INT,并且Address表有一个相应的 addressId 作为其主键。

我有点困惑(或者我想确保我做的正确)是确定哪个表应该是主(引用)表,哪个应该是子(引用)表。当我最初设置它时,我将地址表设为主表,将公司设为子表。但是,我现在认为这是错误的,因为每个公司应该只有一个地址,如果删除公司行,我希望也删除相应的地址(CASCADE 删除)。

我可能完全错误地处理了这个问题,所以我会很感激任何关于在使用外键时如何最好地考虑表之间关系的好的经验法则。谢谢!

0 投票
2 回答
2394 浏览

python - 如何在 SQLAlchemy 中指定一个条件要求一列为空的关系?

不确定这个问题的正确标题应该是什么。我有以下架构:

  • 事务与工作项具有一对多的关系。
  • WorkItems 与 LineItems 具有一对一(或一零)关系。

我正在尝试在 Matters 和 WorkItems 之间创建以下关系

这抛出:

这似乎是在说 primaryjoin 中的第二个子句返回一个 _Null 类型的对象,但它似乎期待具有“表”属性的东西。

这对我来说似乎应该很简单,我是否遗漏了一些明显的东西?

更新

答案是将primaryjoin行更改为:

0 投票
3 回答
1414 浏览

php - 如何测试一个条令记录是否有任何使用的关系

我正在使用一个与其他表有几个可选关系(类型Doctrine_Relation_AssociationDoctrine_Relation_ForeignKey)的学说表。如何测试该表中的记录是否与相关表中的记录有连接。

这是一个让我的问题更清楚的例子。假设您有一个用户,并且一个用户与用户组有多对多关系,并且一个用户可以有一个用户角色我如何测试给定用户是否是任何用户组的一部分或具有角色。

我相信解决方案始于

我正在寻找一个通用的解决方案,无论用户和其他表之间有多少关系,它都能正常工作。

谢谢!

0 投票
2 回答
4640 浏览

database-design - Doctrine 中的复合外键

我不确定我是否使用了好的术语,所以我会先尝试解释我的问题。

我有一个交叉引用表,CompetenceCollab其中包含人们与其能力之间的关联。该表有两个主键,人员 ID 和权限 ID。至此,一切正常。

但是,我必须添加的新功能如下:人们必须能够为其他人的能力添加评级。基本上,这意味着我必须添加一个新表,其中将包含注释、谁给它以及以某种方式指向该CompetenceCollab表的链接。一位同事告诉我,我可以使用他所谓的“备用键”,定义两个外键,一个用于 的每个主列CompetenceCollab,并以某种方式告诉数据库每个评级与能力和人员相关联。

所以我的问题如下:

  • 首先,这个设计看起来是不是完全疯了,如果是这样,我该怎么办?
  • 我必须在 Symfony 中使用 Doctrine ORM。这种事情可以使用吗?如果是,有人可以为我提供一种如何在 YAML 文件中定义它的方法吗?

感谢您的帮助,请随时在评论中提出问题,我不知道我是否真的那么清楚。

0 投票
1 回答
1109 浏览

php - Kohana-v3 ORM 父关系

我刚开始使用 Kohana 框架的第 3 版。我在 $_has_many 等方面做了一些工作。

现在我有了表格页。主键是 pageID。该表有一个名为 parentPageID 的列。现在我想创建一个 ORM 模型,当这样访问时,它会$page->parent->find()返回由 parentPageID 标识的页面。

我已经有以下内容:

但这不起作用,它只是从表中返回第一页。最后一个查询是这样说的:

有人知道如何解决这个问题吗?

我知道这可以:$parent = $page->parent->find($page->parentPageID);但它必须并且可以更清洁(我认为)。

解决了,看我下面的回答。

0 投票
2 回答
345 浏览

ruby-on-rails - Rails 中的外键关系

我是 Rails 的初学者,我读到 Rails 在创建表时在模型级别以及迁移文件中的数据库级别强制执行外键关系。真的有必要吗,它提供了什么样的优势

0 投票
2 回答
2413 浏览

symfony1 - 教义 findby 关系

我在选择带有教义的数据子集时遇到问题。

我有 3 张桌子

位置 联系 Contact_location

联系人和位置表包含一个名称和一个 ID,另一个表只包含 ID。例如:

在原则上,位置表和联系人表之间存在多对多关系,其中contact_location 作为ref_class。

我想做的是在我的位置页面上找到所有联系人,例如 loc_id = 1。

我试过:

希望教义会看到这种关系并得到它,但它没有。

如何在相关的相关表格中进行教义搜索?我读到它可以使用 Findby 完成,但我发现文档不清楚。

0 投票
1 回答
798 浏览

sql - SQL - 两个外键之间有依赖关系

目前的结构如下:

简而言之,我将列定义映射到行。在某些情况下,这些行具有子类型,这些子类型将具有特定于它们的列定义。或者,我可以将那些特定于子类型的列定义从它们自己的表中挂起,或者我可以将 RowType 和 RowSubType 中的数据组合到一个表中并使用单个 ID,但我不确定是否是更好的解决方案(如果有的话,我会倾向于后者,因为我们最终会为给定的 RowType/RowSubType 提取 ColumnDefs)。

现在的设计 SQL 是不是亵渎神灵?

如果我保留当前结构,如果在 ColumnDef 中指定了 RowSubTypeID,我如何维护它必须对应于 RowTypeID 指定的 RowType?我应该尝试使用触发器来强制执行此操作,还是我错过了可以解决问题的简单重新设计?