Aşağıdaki tablolar basitleştirmek ve optimize etmek nasıl?

3 Cevap php

Şimdi ben şu alanları bir tablo var

id  
country     
hdate   
religions   
season  
description     
link    
rate

ve ben bu tablo içinde veri depolamak, benim örnek veri olacak

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

Burada veri fazlalığını orada bakmak ve bu yüzden tabloları kırmak ve biraz sağduyu getirmeye karar verdik.

Ben bir taslak oluşturduk ama ben en iyi veri yapısını getirmek için neler yapabileceğini sonuçlandırmak olamazdı.

Ben tek bir tabloda tüm ülkeleri getirmeye karar verdi

ve bir tablo (id, tatil, celebrated_by, dinler sezon bağlantı hızı) celebrated_by virgülle ayrılmış ülkelerin kimliği saklar içine tüm tatil verileri

and the holiday_dates for storing the dates of the holiday. (holiday_id, date, year) date stores the complete date and the year stores only the year as 2009,2008 etc..

Şimdi ben vb (tatil listelenir) aynı tatil kutluyor ülkeleri listesi, belirli bir ülkenin tüm tatil listelemek istiyorum.

Bu yapının yeterli veya yapılacak herhangi bir kusur ya da herhangi bir değişiklik olup olmadığını bana tavsiye edin.

Bana yardım

3 Cevap

Siz iki (ya da üç) tablolar olmalıdır. ülkeler için bir ve kesin tatil için. Ben en fazla 1 din pay bile aynı tatil, din için üçüncü eklemek öneririz. İkincisi ülkeler masaya bağlanan bir yabancı anahtar olabilir

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)

Sorgulamak katılır ile bir el ihtiyacınız varsa bana bildirin.

ülkenin tablonun benzersiz anahtar ile celebrated_by bağlantıları, o zaman iyi ise, u kolayca işleyebilir. Ama redundany tatil tablo içinde olacağını

Eğer değilse o zaman u birini oluşturabilir ya da (country_id, holiday_id) alanlar sorgu sıralamak ve fazlalığı azaltmak için yeterli olacaktır / b ülke ve tatil w bağlayan başka bir tablo oluşturabilirsiniz

önerilen yapısı bağlantı için kimlikleri virgülle ayrılmış listesi kullanmak gerektiğini dışında gayet iyi. 'Celebrated_by' alanları ile ayrı bir tablo country_id, holiday_id olun

Teorik (pocketfullofcheese önerilen) gibi referans tabloları ile 'din' veya 'sezon' doğrudan başvuruları değiştirmek isteyebilirsiniz, ama bu herhangi bir pratik yararı olacağını sanmıyorum.