Как упростить следующие таблицы и оптимизировать? - PullRequest
0 голосов
/ 12 апреля 2010

Теперь у меня есть таблица со следующими полями

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, праздничные дни, celebrated_by, скорость ссылки на сезон религий).

и holiday_dates для хранения дат праздника. (holiday_id, date, year) дата хранит полную дату, а год хранит только год как 2009,2008 и т. д.

Теперь я хочу перечислить все праздники определенной страны, перечислить страны, которые отмечают один и тот же праздник (когда праздник указан) и т. Д.

Пожалуйста, предложите мне, достаточно ли этой структуры, есть ли недостатки или какие-либо изменения, которые необходимо внести.

помогите мне

Ответы [ 3 ]

1 голос
/ 12 апреля 2010

У вас должно быть две (или три) таблицы. один для стран и один для праздников точно. Я бы предложил даже добавить треть для религии, если более 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)

Дайте мне знать, если вам нужна рука с соединениями для запроса.

0 голосов
/ 12 апреля 2010

предложенная структура в порядке, за исключением того, что вы не должны использовать разделенный запятыми список идентификаторов для связи. Сделайте 'celebrated_by' отдельной таблицей с полями country_id, holiday_id

Теоретически вы можете заменить прямые ссылки на «религию» или «время года» ссылочными таблицами (например, как pocketfullofcheese), но я сомневаюсь, что это принесет какую-либо практическую пользу.

0 голосов
/ 12 апреля 2010

, если celebrated_by связывается с уникальным ключом таблицы страны, тогда это хорошо, вы легко справитесь с этим. Но избыточность была бы там в праздничном столе

Если нет, то вы можете либо создать одну, либо создать другую таблицу, которая связывает ч / б поля страны и праздника (country_id, holiday_id), будет достаточно для сортировки запросов и уменьшения избыточности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...