首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >适当的数据库模式

适当的数据库模式
EN

Software Engineering用户
提问于 2020-08-12 13:15:23
回答 2查看 155关注 0票数 1

我目前正在收集有关平房价格的数据。我有大小,价格,位置,每个m2的价格和检索数据的日期(样本日期)。我计划创建包含这些数据的MySQL数据库,这就引出了有关适当模式的问题。

我有两个选择。

  • 把所有东西放在一张大桌子上

、FLAT_ID、价格、大小、大小、PRICE_M2、位置、位置、SAMPLE_DATE、

  • 创建两个表。一张标有尺寸、价格、位置、每m2价格和第二份样品日期

、FLAT_ID、价格、大小、大小、PRICE_M2、位置、位置、SAMPLE_ID、

,SAMPLE_ID,SAMPLE_DATE,

我不确定按这种方式划分表是否会给使用查询带来一些好处。我在假设日期比示例id消耗更多内存的假设下,只有两个表的优点,所以更少地消耗源。另一方面,我不相信我会有足够的数据来制作假想的日期列来影响结果。所以不确定这是否值得?

我想就这种情况和可能的办法征求意见。

编辑:我的目标是创建具有收集数据可视化的web应用程序。就像随着时间而改变平均价格一样,在观察到的地点平均价格也是一样。价格和尺寸的分布,并设想这一特征随时间的变化。

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2020-08-13 10:47:20

因为每个平面都有多个样本,所以一个平面表(双关意)将导致在几行中有重复的数据,并且必须以某种方式保证这些列是同步的。你可能最终会在同一套公寓里有不同的尺寸在不同的行。这就是当你违反第一范式(1NF)时所发生的事情。另外,如果我们知道单位的唯一性是由ID决定的,那么就必须有一个带有ID和SAMPLE_DATE的复合PK。因此,为了避免这种设计,我建议:

您可以创建一个连接两个表的视图,以便查询该视图来创建报告,而不必每次都编写联接。

代码语言:javascript
复制
create or replace view v_flats as
select
    f.flat_id,
    f.address,
    f.size,
    s.sample_date,
    s.price
from 
    flat f 
    left join sample s 
    on (f.flat_id = s.flat_id);
票数 1
EN

Software Engineering用户

发布于 2020-08-12 13:54:13

对于这两种方案中的任何一种,如果您想要同一平面的不同示例,那么将有多个具有相同FLAT_ID. 的行--本质上是您的主键将是(FLAT_ID,SAMPLE_DATE)。

关于第二个问题,我不知道SAMPLE_ID如何进一步解决这个问题,除非您期望第一个表的多行共享一个公共示例,并有一定的原因/意义。

您可以应用规范化和单独的关注点:

表1 .单位:

  • FLAT_ID
  • 地址
  • 大小

这些似乎是固定不变的东西,你不想重复一遍又一遍。

表2 .样本:

  • SAMPLE_DATE
  • FLAT_ID
  • 价格

价格/M2是可计算的,所以不需要存储它。

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

https://softwareengineering.stackexchange.com/questions/414739

复制
相关文章

相似问题

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