2012-06-10 9 views
7

मुझे अपने देश, शहर, राज्य तालिकाओं को डिजाइन करने में मदद की ज़रूरत है। मैं अपनी तालिका से नमूना डेटा प्रदान करूंगा ताकि आप मेरी समस्या पर बेहतर मदद कर सकें।शहर, राज्य, देश तालिका को डिजाइन करने का सबसे अच्छा तरीका क्या है?

यह मेरा देश तालिका है:

Country 
______ 
code name 
US  United States 
SG  Singapore 
GB  United Kingdom 

यह मेरा शहर तालिका है:

City 
_____ 
id country city  state 
1 US  Birmingham Alabama 
2 US  Auburn  Alabama 
. 
. 
29 GB  Cambridge NULL 
30 GB  Devon  NULL 

मेरे समस्या यह है कि केवल देश राज्य क्षेत्र है कि अमेरिका है। अन्य सभी शहरों में शून्य मूल्य है।

इसके लिए मेरा अस्थायी समाधान सिर्फ संयुक्त राज्य अमेरिका के लिए एक विशेष शहर तालिका बनाना है, तो अन्य सभी देशों में एक और शहर तालिका है जिसमें राज्य क्षेत्र नहीं है।

मुझे लगता है कि यह सिर्फ इस मामले को जटिल करेगा, क्योंकि मेरे पास शहरों के लिए दो टेबल हैं।

मैं इस डिज़ाइन को कैसे सुधार सकता हूं?

+0

नीचे और गंदे समाधान Virtuemart डाउनलोड करने और उस देश/राज्य सारणी का उपयोग करने के लिए है - इसे 200+ काउंटी और सभी संबंधित राज्य मिलते हैं, फिर अपने शहरों – GDP

उत्तर

2

मानक 3-तरफा लिंक तालिका क्यों सेट नहीं की जाती?

table country (
    id int primary key, 
    name varchar(255) 
); 

table state (
    id int primary key, 
    name varchar(255), 
    country_id int foreign key country (id) 
); 

table city (
    id int primary key, 
    name varchar(255) 
    state_id int foreign key state (id) 
); 

यह Lloydminster, Saskatchewan जैसे कुछ पतित हैं, जो दो प्रांतीय सीमाओं फैली को छोड़कर ज्यादातर मामलों के लिए पकड़, करेंगे।

+0

हैलो में जोड़ें, शहर की तालिका में अभी भी state_id है। क्या होगा यदि शहर में राज्य नहीं है? क्या होगा? मुझे वास्तव में तीन तरह की तालिकाओं में सोचने में परेशानी है। यह मेरे सिर को चोट पहुंचाता है। –

+0

यदि मुझे शहर की तालिका में state_id का कोई मूल्य नहीं है तो मुझे क्या करना चाहिए? –

+0

एक शहर जो एक राज्य के बिना मौजूद है? जैसे सिंगापुर? –

5

रिलेशनल क्यों नहीं जाते?

Country (CountryID, CountryCode, CountryName) 
Region (RegionID, RegionCode, RegionName, CountryID) 
City (CityID, CityCode, CityName, RegionID) 

'क्षेत्र' नाम का मतलब है जो इस बात की संभावना हर जगह अधिक मतलब होगा राज्य की तुलना में एक बड़ा अधिक सामान्य है।

+0

आईसी, ठीक है बीमार इसे क्षेत्र में बदल दें। –

0

संयुक्त राज्य अमेरिका के अलावा कई सारे देश हैं जिनके पास राष्ट्रीय और नगर पालिका के बीच राजनीतिक विभाजन हैं। ऑस्ट्रेलिया में राज्य हैं, कनाडा के प्रांत हैं, जापान में प्रीफेक्चर हैं, और बहुत आगे।

सवाल यह है कि आप इस जानकारी को कैसे ट्रैक करते हैं और इसे लगातार रखते हैं? आप उन देशों के लिए मध्यम स्तर पर "डमी रिकॉर्ड" प्राप्त कर सकते हैं जिनके पास एक नहीं है। इसे संभालने का एक और तरीका है पते वाले इकाई को सभी स्तरों पर विदेशी कुंजी को असामान्य करना। यदि देश और शहर अनिवार्य हैं तो उनकी विदेशी कुंजी शून्य नहीं होगी जबकि आपका राज्य एफके निरर्थक हो सकता है।

यदि आप denormalization मार्ग पर जाते हैं, तो आपको यह सुनिश्चित करने के लिए एप्लिकेशन तर्क की आवश्यकता होगी कि आपकी विदेशी कुंजी एक-दूसरे के अनुरूप हों।

यदि आप डमी राज्य रिकॉर्ड मार्ग पर जाते हैं, तो आपको यह सुनिश्चित करने के लिए एप्लिकेशन तर्क की आवश्यकता होगी कि उपयोगकर्ता इंटरफ़ेस में उपयोगकर्ताओं से डमी परतें छिपी हों।

+0

युक्तियों के लिए धन्यवाद हाँ, मेरी योजना इसे सामान्य बनाना है। मेरा पहला लक्ष्य अमेरिका के लिए सभी राज्यों को प्राप्त करना है। तो मैं भविष्य में ऑस्ट्रेलिया में राज्यों को जोड़ दूंगा। मुझे एक टेबल डिज़ाइन की आवश्यकता है जो लचीला है जो भविष्य में बदलावों को संभाल सकता है –

संबंधित मुद्दे