【问题标题】:Relational database design - splitting tables关系型数据库设计——拆分表
【发布时间】:2017-03-23 17:06:54
【问题描述】:

我想我需要拆分一个表,因为有些记录与一个表相关,而另一些记录与另一个表相关。但是我真的需要拆分表吗?

表格如下:

SAMPLE(sample_id、sample_type、borehole_id)
BOREHOLE (borehole_id, x, y, z)
电车(drawpoint_idsection_id

表 SAMPLE 有 coretram 类型的样本。核心样本与 BOREHOLE 表相关,电车样本与 TRAM 表相关。 (电车样本没有地理坐标,需要单独保存)

除了类型拆分之外,样本数据是相同的,实际上我们无法根据来自化验实验室的输入按类型分离样本。我们可能会在一份报告中获得所有来自实验室的样本数据,并且只有在查询类型后才能知道它们是什么类型。我希望将所有 SAMPLE 检测结果存储在一张表中。

这通常是如何处理的?

【问题讨论】:

  • 这是一个常见问题解答,google 'stackoverflow philipxy faq subtype'。
  • 好的,谢谢。我查找了子类型和超类型,就是这样。

标签: database database-design relational-database


【解决方案1】:

如果数据相同,则设计 od 表 SAMPLE 是错误的。 我可能不了解您要实现的目标,但是表 SAMPLE 只需要几个字段 id_sample 和标题(或名称),然后您将需要一个用于存储这些示例列表的表,例如 LIST 表。 表 LIST 将具有字段 id_list、id_sample、id_borehole、date_rcvd 等(您需要保留有关特定样本及其特征的信息的任何字段) 我不清楚 TRAM 表应该存储什么,但您似乎将其中的两列重复到 SAMPLE 表中,这是错误的。

【讨论】:

  • 糟糕,是的,这是一个错字。我编辑了这篇文章,不过是为了让其他读者清楚。所以电车有一个复合键和一些其他信息。谢谢你把我的心放在正确的方向上,我只是看不到它。我被困在以一种特定的方式思考这些数据。因此,如果我有 2 个表 BH_SAMPLE(sample_id, sample_type,borehole_id) 和 TRAM_SAMPLE(sample_id, sample_type,foreign-key) 就可以了。我仍然可以将化验结果保存在 SAMPLE(sample_id, au_result) 表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
相关资源
最近更新 更多