问题标签 [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.
mysql - 带外键的数据库设计问题
我正在尝试正确使用外键来维护数据完整性。我不是一个真正的数据库专家,所以我想知道是否有一些我不知道的一般设计原则。这是我正在尝试做的一个例子:
假设您要构建具有类型(汽车、卡车等)、品牌和型号的车辆数据库。用户必须至少输入 Type,但 Make 和 Model 是可选的(如果给出了 Model,那么 Make 是必需的)。我的第一个想法是这样设置数据库:
您将如何设置车辆的 FK 以确保类型、品牌和型号都匹配?例如,您将如何防止车辆出现(类型:摩托车、制造商:福特、型号:思域)?其中每一个都是有效的 FK,但它们不维护通过其他表的 FK 显示的关系。
另外,因为不需要 Model,我不能只存储 model_id FK 并从它向后工作。
我完全不依赖于数据库设计,所以我愿意改变表的设置方式。有任何想法吗?
PS - 如果有人感兴趣,我正在使用 mysql,但这更多是关于数据库的一般问题。
编辑(澄清):
车辆表中需要 -type_id 和 make_id ,除非在 model_id 为空的情况下有某种方法可以找出它们;
- 需要维护 type_id、make_id 和 model_id 之间的关系。
ruby-on-rails - 这种关系可以在 Ruby on Rails 中描述吗?
这是可以在 Ruby on Rails 的 ActiveRecord 模型关系中描述的关系吗?
这样我就可以拥有如下所示的数据:
地址:
顾客:
我想将地址存储在他们自己的表中,因为数据可能会在客户之间共享(尤其是送货地址)。但是对于任何给定的客户,甚至只有两个地址。
除非没有其他办法,否则我想避免多对多的关系。
castle-activerecord - ActiveRecord HasMany/Belongs 可以为关系使用非主键列吗?
我想有一个父子层次结构,并且我想在父级上有一个“series-id”的概念。
所以父级(如果你更新了它)将使旧的唯一键过期..保留系列 ID 并插入第二行。
我希望孩子们“挂断”该系列 ID,而不是唯一 ID。
您知道 BelongsTo 是否可以链接到非主键(但通过 GUID 唯一)列?
父级:UniqueId (guid)、SeriesId (guid)、名称、描述 子级:UniqueId (guid)、ParentId(始终连接到 UniqueId-Above)、名称、描述。
我知道外键关系确实应该在关系的一侧有一个“键”,但是,根据我的 GUID,它们类似于键......但不是真正的键。
这没什么大不了的,但是如果我通过更新它的元数据来“过期”父级,我想避免不得不将所有子级“复制”到父级的新副本中。
我在尝试做一些不可能发生的事情吗?
ruby-on-rails - Accepts_nested_attributes_for 不生成外键
我有一个模型
和孩子
并通过如下形式创建它:
隐藏字段是从该页面指向的页面上的表单填充的。这一切都很好。我的创建方法如下:
一切都在数据库中创建得很好。但是,这两个模型没有通过外键链接。换句话说,外键永远不会在子模型中设置。我该如何补救?我看到有人说这是一个记录在案的错误,但我无法在任何地方找到这是真的。谢谢你的帮助。
reference - 如何用多个主键列引用一个外键列
我正在创建 BOOK_Issue 表,其中将包含该书的发行人的 ID。我有一个列名 user_id 女巫将包含来自 tbl_student 和 tbl_faculty 的 id。那么如何参考两个主键列设置 book_issue 表的 user_id 字段。
java - 如何处理具有可用外键条目但不可用外键条目的 JPA JOIN?
我想知道 JPA 如何定义来处理以下场景:
我想要所有带有 FK_B NULL 的表 A 条目或引用不可用的表 B 条目。
是否已定义,如果我使用会发生什么
或:(这可能吗?)
我需要的是一个包含
非常感谢!
sql-server - 查找 ForeignKey 的最快方法与 Management Studio 中的哪个表有关?
我想知道是否有更快的方法:
“我打开了我的 Management Studio,我有一个 Db 表,前面列出了许多列。我知道 FK_SomeTable 字段是一个 ForeignKey。但我不知道它是什么表上的 FK。我需要了解。”
所以,通常我打开那张表的“关系”,在一个由一个丑陋的窄窗口框起来的列表中一个一个地去寻找它,这有点无聊和浪费时间。
我也不想查询系统表。
没有更好更快的方法吗?应该有的不是吗?
谢谢
django - Django:获取外键类型
有没有办法获取与我的键相关的模型的外键类型?目前,我正在尝试类似:
我正在尝试以编程方式设置将在我的表单中显示的可用选项。到目前为止,我只能弄清楚下面的这个片段让我与外键对象有某种关系......
任何帮助将不胜感激。
sql-server - 如何避免 SQL-Server 中的循环关系?
我正在创建一个自相关表:
表Item
列:
ItemId int - PK;
金额 - 不为空;Price money - 使用 UDF 的计算列,根据项目祖先的 Amount 检索值。
ParentItemId int - 可为空,引用此表中的另一个 ItemId。
我需要避免循环,这意味着兄弟姐妹不能成为他祖先的祖先,这意味着如果 ItemId=2 ParentItemId = 1,则不应允许 ItemId 1 ParentItemId = 2。
我不知道在这种情况下最好的做法是什么。我想我应该添加一个从 UDF 或其他任何东西获取标量值的 CK。
编辑: 另一个选项是创建一个 INSTEAD OF 触发器并将 ParentItemId 字段的更新放入 1 个事务中,并从 @@RowIdentity 中选择 Price 字段,如果它失败取消事务,但我更喜欢 UDF 验证。
任何想法都受到真诚的欢迎。
django - Django:如何定义模型关系以实现以下功能?:
我的应用程序有客户端,每个客户端都有一个计费配置文件。
我设想我的应用程序有一个“客户端”模型,该模型具有一个名为“ billing_profile ”的属性,该属性将引用另一个名为“ BillingProfile ”的模型。与其定义“ BillingProfile ”,外键返回“Client”(即“ client = models.ForeignKey(Client) ”),我在想,因为每个客户只有一个计费配置文件,我可以简单地使用一个一对一的字段。这看起来合乎逻辑,还是看起来倒退(然后我必须在建立客户端之前创建一个 BillingProfile)。与我的理解范式相比,有没有一种好的方法可以做到这一点?