首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储从多个源收集的数据,并将一组数据分解为正式数据。

存储从多个源收集的数据,并将一组数据分解为正式数据。
EN

Stack Overflow用户
提问于 2012-06-29 21:33:09
回答 1查看 55关注 0票数 0

我想设计一个名为“水果”的表,它存储一种水果的名称、价格和来源。样本数据:

代码语言:javascript
复制
(Apple, 100c, SuperMarket1)
(Orange, 101c, SuperMarket1)
(Apple, 99c, SuperMarket2)
(Orange, 103c, SuperMarket2)

我指定来自SuperMarket1的橙色价格为官方,SuperMarket2的苹果价格为官方。

当前,Source不是表的主键,因此,所有非官方条目都不会出现。如果我想存储非官方价格,我需要将源代码转换为主键的一部分。为了指定一个条目为正式条目,我需要使用Source=Official输入额外的条目,或者创建一个指定为官方的列?

我的目标是:

  1. 有能力存储所有的可用价格,而不是必要的一个表。
  2. 官方条目的来源应该容易识别。
  3. 能够在最少的联接数中查询官方信息。
  4. 一种水果不可能有一个以上的官方价格。
  5. 这组水果并不小(水果只是一个例子)并且在进化。维护一张额外的表格来存储每种类型的官方源可能是一种巨大的负担。

对干净的设计有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2012-06-29 22:46:22

看起来您需要类似于:

注意:在上面的模型中,FRUIT.STORE_ID是空的,可以打破FK循环,允许在运行时实际插入新数据。如果DBMS支持延迟约束,则可以将该字段设置为NULL (除非您实际上希望允许水果没有正式价格)。

1)有能力将所有可用的价格储存在一张表中,而不是必要的。

在这个模型中,价格不是每个水果,而是每个商店的

2)官方条目的来源应易于识别。

这就是FRUIT.STORE_ID的目的。

3)查询最少联接数的官员的能力。

代码语言:javascript
复制
SELECT * FROM FRUIT JOIN PRICE
    ON FRUIT.FRUIT_ID = PRICE.FRUIT_ID AND FRUIT.STORE_ID = PRICE.STORE_ID

( 4)一种水果不可能有一个以上的官方价格。

每个水果由水果中的一行表示,FRUIT.STORE_ID每一行不能存储多个值。

5)果实集合不小(水果只是一个例子)和进化。维护一张额外的表格来存储每种类型的官方源可能是一种巨大的负担。

幸运的是,数据库非常善于维护大量的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11269254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档