现在我有一个包含以下字段的表
id
country
hdate
religions
season
description
link
rate
并且我将数据存储在此表中,我的样本数据将是
1 Afghanistan 2008-01-19 Islamic Winter Ashura ashura 2
2 Afghanistan 2008-03-20 Islamic Winter Mouloud (Birth of the Prophet) mouloud 4
3 Afghanistan 2008-01-01 Common Winter New Year Day new-year 5
4 Albania 2008-04-28 Christian Spring Orthodox Easter Monday easter-monday 4
5 Albania 2008-01-01 Common Winter New Year Day new-year 5
在这里你可以看到有数据冗余,所以我决定打破桌面并带来一些常识。
我已经创建了草稿,但我无法最终确定如何才能实现最佳数据结构。
我决定将所有国家纳入一个表格
并将所有假期数据分成一个表(id,holiday,celebrated_by,religions season link rate)celebrated_by存储以逗号分隔的国家/地区的ID
和holiday_dates用于存储假日的日期。 (holiday_id,date,year)日期存储完整日期和年份仅存储年份为2009,2008等。
现在我要列出特定国家/地区的所有假期,列出庆祝同一假期的国家(列出假期时)等。
请建议我这个结构是否足够,或者是否有任何缺陷或任何变化。
帮帮我
答案 0 :(得分:1)
你应该有两个(或三个)表。一个用于国家,一个用于假期。如果超过1个宗教共享同一个假期,我建议甚至为宗教增加第三个。后者可以有一个外键,将其链接到国家/地区表
countries
================
country_id (auto increment)
name
religion
============
religion_id (auto increment)
name
holidays
===============
holiday_id (auto increment)
date
season
description
link
rate
country_id (FK)
religion_id (FK)
如果您需要携带联接来查询,请告诉我。
答案 1 :(得分:0)
如果celebrated_by链接到国家表的唯一键,那么它很好,你可以轻松处理这个。但是假日表中会出现冗余情况
如果没有,那么你可以创建一个或者可以创建另一个链接b / w country和holiday(country_id,holiday_id)字段的表就足以排序查询并减少冗余
答案 2 :(得分:0)
建议的结构很好,除了你不应该用逗号分隔的id列表进行链接。将'celebrated_by'设为一个单独的表,其中包含字段country_id,holiday_id
从理论上讲,你可能想用参考表替换“宗教”或“季节”的直接引用(如pocketfullofcheese建议的那样),但我怀疑这会带来什么实际好处。