如何避免在数据库中创建新列
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 中创建新列,其中条件取决于列的后续值?