gpt4 book ai didi

mysql - 什么时候应该使用连接表与 Ruby on Rails 数据库中的表中的 id

转载 作者:搜寻专家 更新时间:2023-10-30 23:08:01 24 4
gpt4 key购买 nike

因此,我和一位同事正在争论如何为我们正在开发的网站设计数据库的一部分。我们都是数据库设计的新手,不能确定我们的哪个选项更好,所以我希望提出这些想法并获得最佳建议,说明为什么一个比另一个更好,或者为什么它们可以相互比较.

举个例子,假设我们的数据库中有如下三个表。 Car_manufacturers、Car_models 和 Car_serialNumbers。每个 Car_manufacturer 有多个 Car_model,但每个 Car_model 只有一个 Car_manufacturer。另外,每个Car_model有很多Car_serialNumbers,但是每个Car_serialNumber只有一个Car_model。这种关系创建了一个向下的树,其中 Car_manufactuere 是根,后面是 Car_model 和 Car_serialNumber。

问题是使用 mysql 在 RUby on Rails 中实现它的最佳方法是什么。下面是我们争论的两种方式。

我的想法是,主键是 Car_manufacturer 的 ID,它将作为外键存储在 Car_model 表中。然后在 Car_manufacturer 和 Car_model 之间分别创建 has_many 到 belongs_to 关系。从 Car_model 到 Car_serialNumber 也是如此。我认为这是最好的,因为 seach child 只属于其 parent 之一,单个 foreign_key 很简单,并且关系很容易在 Ruby On Rails 中设置和管理。

我同事的想法是我们对所有事情都使用连接表。因此,Car_manufactuere 和 Car_model 将指向一个完全独立的表,该表将包含两个键。该表然后充当两者之间的代理。 Car_model 和 Car_serialNumber 也是如此。

因此,在我看来,这会创建不必要的额外数据。当关系可以通过将信息存储在各自的表中来用更少的数据完成时,为什么要创建一个连接表。此外,如果我理解正确的话,has_many 和 belongs_to 关系的连接表并不是它们的目的。连接表最适合 has_many 到 has_many 的关系。这两种方法都可以解决同样的问题,但我相信我的解决方案更简单,更简单的代码会产生更少的错误,这是我进行可靠设计的动力。

那么,对于效率和简单性而言,哪种设计更好?哪一个会提供最大的好处?我在网上看了很多资料,但似乎没有一个能回答这个问题。对问题的任何输入或指向有用资源的链接都将不胜感激。

最佳答案

这是一对多(您的想法)和多对多(连接表)关系之间的区别。您的数据看起来像是分层的一对多,因此在这种情况下,您的想法的实现更简单且更易于维护。

关于mysql - 什么时候应该使用连接表与 Ruby on Rails 数据库中的表中的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23966500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com