gpt4 book ai didi

mysql - 将单个表中的多个字段映射到另一个表中的单个字段的策略

转载 作者:行者123 更新时间:2023-11-29 07:55:57 24 4
gpt4 key购买 nike

我正在创建一个数据库,其中通过不同的源测量单个对象的不同属性。我有一个表,其中包含源列表以及源描述和源 ID。我想创建一个表,其中列出我将用于特定对象的特定测量的源。因此,在此表中,我将有一个用于 objectID 的字段以及我要测量的属性。对于每个属性,我想映射一个 sourceID。下图描述了我的设计 enter image description here

我想知道在这种情况下我会有什么样的映射?在我看来,我必须将对象表中的每个单独属性列映射到源表中的 sourceID。这样我将拥有多个 1:n 映射。这样好吗?我正在使用 MySQL 工作台。请告知是否可以以更好的方式设计。

编辑#1对于每个对象,我想查询哪个是特定“属性”字段的源。获得此信息后,我将使用给定的源在不同的表中记录该特定属性的数据。

最佳答案

如果你看看你的第一个陈述

“...单个对象的属性是通过不同的测量...”

您实际上可以立即看出您可能正在寻找 3 张 table 。您建议的表看起来不错。我建议 Object 表看起来更像

ObjectId
ObjectName
ObjectDescription
... other object details (except measurement)

您的第三个表是您的测量表,可以想象它看起来像这样

MeasurementId
ObjectId - reference to Object table
SourceId - reference to Source table
DatePerformed
MeasurementValue
Success
Notes etc

这样做的好处是

  • 您不需要在对象中为特定提供特定列。如果你突然有了更多的资源,这将变得非常难以维护。
  • 并非所有对象都需要每个的值,尽管使用此结构您仍然可以轻松确定对象是否缺少特定源的测量值。
  • 您可以为一个对象存储多个测量值(通过 DatePerformed 分隔),并使用 Max(DatePerformed) 可以检索最新的测量值。

然后你可以得到一个结果列表,如果你这样做

SELECT ObjectId, SourceId, DatePerformed, MeasurementValue
FROM Measurement
WHERE ObjectId = <your Object>
[AND/OR] SourceId = <your source>

关于mysql - 将单个表中的多个字段映射到另一个表中的单个字段的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25153966/

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