问题标签 [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 投票
4 回答
66356 浏览

sql - 多个表之间的 SQL 映射

这是一个 SQL 设计问题。首先,设置。我有三张桌子:

  1. A,根据对链接服务器的查询自动填充。此表中的数据不能更改;
  2. B,只有十几行,包含 As 集合的名称;
  3. AtoB,这是将 As 组织成命名集合的映射表,两列都有外键;

SQL 映射表

例如,A 包含:

  1. 长颈鹿
  2. 猫头鹰
  3. 老虎

B 包含:

  1. 西雅图动物园
  2. 圣何塞动物园

AtoB 包含:

1,1(西雅图的长颈鹿)
2,1(西雅图的猫头鹰)
3,1(西雅图的老虎)
2,2​​(圣何塞的猫头鹰)

现在,问题:

我被要求在其中一些集合中包含 A 中没有的项目。因此,我创建了一个表 C,它具有与 A 相同的标识和名称列,并填充它。与前面的示例保持一致,假设 C 包含:

问题是,如何在 AtoB 中包含来自 C 的项目?如果我需要在西雅图动物园里放一条龙怎么办?

天真的我的第一直觉是创建一个包含 A 和 C 联合的视图 V,并将 AtoB 修改为 VtoB。这就是我的天真得到回报的地方:无法为视图创建外键。

我怀疑有一种标准的、正确的方法可以将一个或多个 A 或 C 与 B 联系起来。

0 投票
2 回答
859 浏览

ruby-on-rails - HABTM,还是多个belongs_to?

我正在自学 Rails,作为一个测试项目,我正在模拟一个类似于 stackoverflow 的简单问答应用程序。

在我的简化版本中,我有:

  • 问题
  • 答案
  • 用户(问题和答案的作者)
我知道答案属于问题。

  • 用户和问题之间的正确关系是什么?
  • 用户和答案之间的正确关系是什么?

在我看来,问题和答案并不是真正“属于”用户,而是问题和答案“有一个用户”(作者)。但这似乎也不对,因为这样用户就会“belong_to question”和“belong_to answer”。

HABTM 是三个类别之间的答案吗?

很多人都被这种关系所困扰,不是吗?:)

0 投票
1 回答
110 浏览

php - 外键,关系问题

我今天一直在玩 MySQL 并阅读他们的文档,获得了一些关于优化的方便信息以及很多我不知道的东西。现在我一直在向我的 Web 应用程序添加外键,因为它添加了约束,我认为它很有帮助。

我的疑问是,现在有一个 Roles 表和一个 Users 表,我在用户的 RoleID 上设置了一个关系,当角色 ID 被删除时(从 Roles 表,父级),它应该删除用户。

现在我有点答案了,但我更喜欢有人确认,ID 必须匹配?还是无论是否匹配,外键都会采取行动?

0 投票
5 回答
461 浏览

database - 您是否会在自然 ID 上创建关系或使用内部 ID 并模拟自然 ID 关系?

可能的重复:
代理与。自然/业务密钥

如果给定两个表,Level1 [ID, Title, Number] Level2 [ID, FKID???, Title, Number]

系统用户了解 Level2 与 Level1 相关,基于 Level1 的编号,我的问题是,您是根据内部 ID 建立关系并“模拟”与“编号”的关系还是简单地使用“数字”字段又可以用了吗?

0 投票
2 回答
1597 浏览

sql-server-2005 - 无法创建表关系 - SQL Server 2005

尝试在 Sql Server 2005 中的两个表中创建关系时出现错误。我正在尝试使用数据库图表功能创建关系。我有一个 Player 表和一个 Message 表。我想创建从 Message 表到 Player 表的两个关系。我可以成功创建从 Message.From 到 Player.PlayerId 的第一个关系。当我尝试创建从 Message.To 到 Player.PlayerId 的第二个关系时,我收到一条错误消息...

'Player' 表已成功保存 'Message' 表 - 无法创建关系 'FK_Message_Player_To'。ALTER TABLE 语句与 FOREIGN KEY 约束“FK_Message_Player_To”冲突。冲突发生在数据库“TPF”、表“dbo.Player”、列“PlayerId”中。

我想知道解决这个问题的最佳方法是什么。非常感谢任何解释。

0 投票
2 回答
150 浏览

mysql - MySQL Basic 关于关系

我的疑问是如何处理以下事情:

我有一个用户属于公司的系统,而这个用户有他们的客户。

获取所有公司客户列表和关注用户名的正确方法是什么?

在客户表中,我有一个具有这种关系之一的字段:

  • company_id 和 user_id 字段
  • 只是 company_id 字段
  • 只是 user_id 字段导致用户表有 company_id ???
  • 还有什么...

Tkz罗伯托

0 投票
2 回答
2425 浏览

doctrine - 外交关系的原则性行为

我有一个数据库设计案例,我很好奇 Doctrine ORM 是否支持开箱即用。


产品
  
    id:{type:integer,primary:true,autoincrement:true}
    type_id:{type:integer,notnull:true}
    brand_id:{type:integer,notnull:true}
  关系
    ProductType:
      class:ProductType
      local: type_id
      国外:id
    品牌:
      类:品牌
      本地:brand_id
      国外:id

ProductType :
  actAs :
    I18n:
    fields: { name }
  columns :
    id: {type: integer, primary: true, autoincrement: true }
    name: { type: string(255), notnull: true }

品牌
  actAs
    I18n:
      字段:{名称}
  
    id:{类型:整数,主要:真,自动增量:真}
    名称:{类型:字符串(255),notnull:真}


我想 slugify Products 表,即。产品将通过它们的蛞蝓到达。但是,正如您所见,brand 表和 productype 表都有 i18n 行为。而且,产品没有名称。产品的 slug 将是:“Brand.name - ProductType.name”,并随服务的语言而变化。

对于这种情况,无论如何我可以使用 Doctrine 的 Sluggable 行为来自动对我的产品进行 sluggify。还是我必须手动管理它?

顺便说一下,我的环境配置是:
Doctrine Version : 1.2
Symfony : 1.4.1

谢谢

0 投票
1 回答
223 浏览

asp.net-mvc - 外键在 Linq2Sql 的链接表中不起作用

我有 3 个表 Subcontract、Company 和一个链接表 CompanyToSubcontract。链接表包含 Subcontract_id 和 Company_id。外键是在 SQL 中设置的,当我将它们放入我的 dbml 时,一对多的关系箭头出现了,一切看起来都很好。但是,在编码时,就好像这种关系不存在一样。

当我编写 Select 语句时,我必须使用连接才能使其工作。当我在代码中引用 CompanyToSubcontract 时,我没有可用的正确成员。我有 CompanyToSubcontract.company_id 和 CompanyToSubcontract.subcontract_id,但没有 CompanyToSubcontract.company 或 CompanyToSubcontract.subcontract。

我有另一个表 Group 与 Subcontracts 具有一对多的关系。我以同样的方式设置外键,效果很好。我可以访问 Subcontract.group_id 以及 Subcontract.group。

链接表的所有内容似乎都已正确设置,但我无法使其正常工作。多个外键是否有某种技巧?我错过了什么?

编辑:我的 CompanyToSubcontract 没有主键。这会导致问题吗?马上试试。

0 投票
1 回答
1089 浏览

sql - 在主键和外键方面需要帮助

在外键表中插入数据时,我需要帮助自动填充外键表中的主键值。例如:我创建了表:

假设此表中有 5 行Patient:假设第一行值为:1, Priya, Kumari, Female

我创建了Guardians表格:

在这个表中插入操作是这样的:

在选择显示值的监护人表 PatientIdNULL时:我的查询是在Guardians表中插入值时PatientId应该自动填充,这将来自Patient表...

  1. 我的第二个问题是:如何将 Identity 列创建为varchar. 例如:假设我想用'这样的方式增加我的Guardians表......GRD0001', 'GRD0002', 'GRD0003'

谢谢,标清

0 投票
2 回答
912 浏览

perl - 如何在运行时使用 DBIx::Class 和 Catalyst 添加关系?

在我正在构建的应用程序中,用户可以指定表之间的关系。

由于我只在运行时确定这一点,因此我无法在模式模块中指定 has_many 或 belongs_to 关系以进行启动。

所以给定两张表;系统和地点,我想添加关系以连接它们之间的记录。

我有以下解决方案的一部分:

因此,该列fk0将是映射到位置主键的外键id

我知道必须重新注册才能允许将来访问该关系,但我无法弄清楚。