在这种情况下,我真的需要两个桌子设计吗?

时间:2015-10-24 05:13:38

标签: mysql

我打算在我的数据库中存储全局索引。 如此链接所示

https://in.finance.yahoo.com/intlindices?e=asia

为了存储,我提出了以下设计

CREATE TABLE regions(
    region_name varchar(100),
) 


CREATE TABLE index_values(
    region_name varchar(100),       
    country_name varchar(50),
    symbol_name varchar(50),
    LastTradePrice varchar(20),
    ChangeinPercent varchar(20),
    Changeinpoints varchar(20),
    LastTradeTime varchar(20),
    FOREIGN KEY reg_index(region_name)
    REFERENCES regions(region_name)
)

我的问题是,我真的没有看到制作两个表的任何用途?                  我可以继续一张桌子,还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

这取决于您打算如何使用您的数据。如果您计划主要从index_values读取并且读取性能很重要,那么将所有数据反规范化到这一个表中是一种很好的方法,您可以删除“regions”表及其外键。

另一方面,如果您预见到想要在一个点重命名区域,则将不同表“区域”中的区域分开将是有利的,因此您只需更新一个区域记录而不是所有index_value记录与该地区。在这种情况下,您需要从index_values表中删除region_name字段。

您可能需要阅读https://en.wikipedia.org/wiki/Denormalization

旁注:我会为你的表考虑一个不同的名称,因为索引是数据库的一个重要部分,它太混乱了。也许是“financial_indices”。