策略映射多个另一个表在单个表递交到单场(Strategy to map multiple filed

2019-10-31 03:25发布

其中单个对象的不同属性经由不同的源测量我创建一个数据库。 我有一个包含的源列表与源描述和源ID一起的表。 我想创建一个表,该表将列出我将使用其特定的测量特定对象,其源。 因此,在这个表,我将拥有的objectID和字段,我要衡量propertys。 对于每个属性我要映射的sourceID。 下图描述了我的设计

我想知道什么样的映射将我在这种情况下? 在我看来,我将不得不在对象表中的每一个人的财产列映射到的sourceID源表格。 有了这个,我将有多个1:N映射。 这样好吗? 我使用MySQL的工作台。 请告诉我们,如果这可以以更好的方式来设计。

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

Answer 1:

如果你看看你的第一个语句

“......单个对象的属性经由不同的 测量 ...”

你可以看到直线距离,你可能正在为3个表。 你提出表看起来不错。 我建议对象表虽然看起来更像

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>


文章来源: Strategy to map multiple filed in a single table to a single field in another table