旧数据库结构的更好的数据库设计是什么?

时间:2010-06-13 11:49:24

标签: mysql

我有一个旧的数据库,我存储假期的数据和庆祝的日期。

id  country     hdate           description     link 
1   Afghanistan     2008-01-19  Ashura          ashura
2       Albania     2008-01-01  New Year Day    new-year

上述结构的缺陷是,我重复每个节日,每年和每个国家的日期以外的数据..

例如,我为阿舒拉和阿富汗存储了2009年的新日期..

我试图限制冗余并将表拆分为

countries (id,name)

holidays (id, holiday, celebrated_by, link) 
// celebrated_by will store the id's of countries separated by ','

holiday_dates (holiday_id, date, year) 
// date will the full date and year will be as 2008 or 2009

现在我对结构也有一些问题..

考虑我将假期存储为独立日,这对于更多国家来说是常见的,但会有不同的日期。所以如何处理这个问题,而且链接也必须不同。

我需要列出庆祝同一个假期的国家,当我描述一个假期时,我需要列出该国将要庆祝的所有其他假期。

最重要的是,我已经在旧表中拥有大量数据,并且我需要在新设计完成后将其拆分为新数据...

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

有一个n-n关系怎么样?

表:国家/地区

  • Country_ID(PK)

表:CountryToHoliday

  • Country_ID(FK)
  • Holiday_ID(FK)

表:假期

  • Holiday_ID(PK)