如何避免在数据库中创建新列

Posted

技术标签:

【中文标题】如何避免在数据库中创建新列【英文标题】:how to avoid creating new columns in database 【发布时间】:2021-12-05 08:20:37 【问题描述】:

我有一张牙医和服务表。我希望它是动态的,所以我添加了一个“添加服务”功能。但是如果还没有定义服务,我该如何规范它呢?因为我还没有添加。

我所做的解决方案是我创建了一个新表,该表是专业的,每次添加新服务时它都会创建新列。但是我不知道在添加服务功能本身内创建一个新列是否非常不合适。但这是我认为的唯一方式。有什么办法可以解决吗?

【问题讨论】:

Please do not upload images of code/errors when asking a question. 对不起,我已将其删除。我也是***的新手。还在学习如何正确使用本平台谢谢理解! 现在它缺少任何适当的上下文。解释你的数据模型。 您需要将图片替换为等价文字。 ***.com/help/formatting 值得一读 无论如何,听起来您需要一张牙医表、一张服务表,然后是一张牙医服务表作为服务和牙医之间的链接。阅读多对多关系。然后在您描述的情况下,您可以向服务表添加一个条目,获取其新 ID,然后使用服务 ID 和所选牙医的 ID 将条目添加到牙医服务表 【参考方案1】:

动态列一点都不好! 表应该是静态的才能可靠。

改用关系表。

示例

您有一个dentists 表。它有一个 id 列作为主键。

创建一个services 表。当然它应该有一个主键。除此之外,放置一个dentist_id 列。这将包含dentists 表中牙医的id

如果您提供更多信息和代码或数据库架构,我们也许可以提供更多帮助。

编辑

正如ADyson 提到的,如果多个牙医可能在一项服务上工作,请建立多对多关系。

示例

你有一个dentists 表和一个services 表。它们都有一个id 列作为主键。

创建一个r_dentist_service 表。当然它应该有一个主键。除此之外,放置一个dentist_id 列和一个service_id 列。这些应包含各自的 ID。此表将牙医与服务相关联。

【讨论】:

请注意,这是假设每项服务只能由一位牙医提供。而您可能会想象所有牙医都会提供常见的服务,例如补牙、牙冠等。所以也许多对多结构更适合。 你是对的。我会完成答案。

以上是关于如何避免在数据库中创建新列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 pyspark 中创建新列,其中条件取决于列的后续值?

如何根据 Python Pandas 中的其他列在 DataFrame 中创建新列? [复制]

如何在选择查询中创建新列

根据其他列的值在多索引数据框中创建新列的简单方法

如何在表中创建新列并向其添加值

使用正则表达式在 Pandas 数据框中创建新列 [重复]