هل هناك شارع شائع يتناول تصميم قاعدة البيانات لجميع عناوين العالم؟

StackOverflow https://stackoverflow.com/questions/929684

سؤال

أنا مبرمج وأن نكون صادقين لا أعرف هياكل العناوين الشارع في العالم، فقط كيف يتم تنظيم في بلدي :) إذن ما هو أفضل وتصميم قاعدة بيانات شائعة لتخزين عناوين الشوارع؟ يجب أن تكون سهلة الاستخدام، سريعة للاستعلام والديناميكية لتخزين جميع عناوين الشوارع للعالم والتي تحدد فقط عن طريق معرف واحد
شكرا جزيلا

هل كانت مفيدة؟

المحلول

من الممكن تمثيل العناوين من الكثير من البلدان المختلفة في مجموعة قياسية من الحقول. الفكرة الأساسية لطريق الوصول المسمى (Awardsfare) التي توجد المباني المسماة أو المرقمة موجودة في المعيار إلى حد ما، إلا في الصين في بعض الأحيان. تشمل المفاهيم العالمية الأخرى الأخرى ما يلي: تسمية المستوطنة (المدينة / المدينة / القرية)، والتي يمكن الإشارة إليها بشكل عام باسم المنطقة؛ تسمية المنطقة وتعيين الرمز البريدي الأبجدي رقمي. لاحظ أن اللوفرات البريدية، والمعروفة أيضا باسم الرموز البريدية، هي رقيقة بحتة فقط في بعض البلدان. ستحتاج إلى الكثير من الحقول إذا كنت تريد حقا أن تكون عام.

يوفر الاتحاد البريدي العالمي UPU بيانات العنوان للكثير من البلدان في شكل موحد. وبعد لاحظ أن تنسيق UPU يحمل جميع العناوين (وصولا إلى الدقة الحقل المتاحة) لبلد كامل، فهذا صحيح. إذا تم تخزين عناوين العميل، حيث سيتم تخزين جزء صغير من جميع العناوين الممكنة، من الأفضل استخدام جدول واحد (أو تنسيق مسطح) يحتوي على جميع الحقول وعنوان واحد لكل صف.

سيكون تنسيق معقول عناوين التخزين كما يلي:

  • خطوط العناوين 1-4
  • محلية
  • منطقة
  • الرمز البريدي (أو الرمز البريدي)
  • دولة

يمكن أن تعقد خطوط العناوين 1-4 مكونات مثل:

  • بناء
  • بناء فرعي
  • رقم فرضي (رقم المنزل)
  • نطاق الفرضية
  • ممر
  • sub-theadfare.
  • محلية مزدوجة المعال
  • المناطق الفرعية

في كثير من الأحيان يتم استخدام 3 خطوط عناوين فقط، ولكن هذا في كثير من الأحيان غير كاف. من الممكن بالطبع أن تتطلب المزيد من الأسطر لتمثيل جميع العناوين بالتنسيق الرسمي، ولكن يمكن دائما استخدام الفواصل دائما كفاصل للخط، مما يعني أن المعلومات لا يزال من الممكن التقاطها.

عادة ما يتم إجراء تحليل البيانات حسب المنطقة والمنطقة والرمز البريدي والبلد وهذه العناصر سهلة إلى حد ما بالنسبة للمستخدمين فهم عند إدخال البيانات. هذا هو السبب في أن هذه العناصر يجب تخزينها كحقول منفصلة. ومع ذلك، لا تجبر المستخدمين على توفير الرمز البريدي أو المنطقة، فقد لا يتم استخدامها محليا.

يمكن أن تكون المنطقة غير واضحة، ولا سيما التمييز بين محلية المخططات والمحلية البريدية. المنطقة البريدية هي الشخص الذي يعتبره سلطة بريدية قد تكون في بعض الأحيان مدينة كبيرة قريبة. ومع ذلك، ستحل الرمز البريدي عادة أي مشاكل أو تباينات هناك، للسماح بالتسليم الصحيح حتى إذا لم يتم استخدام الوضع الرسمي الخاص بالمناطق الرسمية.

نصائح أخرى

القي نظرة على إجابات قاعدة البيانات. وبعد على وجه التحديد، وهذا يغطي العديد من الحالات:

(كل نوع بيانات حرف طول المتغير)

AddressId
Line1
Line2
Line3
City
ZipOrPostcode
StateProvinceCounty
CountryId
OtherAddressDetails

enter image description here

اسأل نفسك ما هو الرئيسي هدف تخزين هذه البيانات؟ هل تنوي إرسال البريد بالفعل إلى الشخص في العنوان؟ تتبع التركيبة السكانية، السكان؟ تكون قادرا على طلب المتصلين بعنوانهم الصحيح كجزء من بعض المصادقة / التحقق الأساسي؟ كل ما ورداعلاه؟ لا شيء مما بالأعلى؟

اعتمادا على حاجتك الفعلية، ستحدد إما أ) لا يهم حقا، ويمكنك الذهاب لنهج نص مجاني، أو ب) حقول منظم / محددة لجميع البلدان، أو ج) الهندسة المعمارية الخاصة بكل بلد.

في بعض الأحيان، فإن الأقرب الذي يمكنك الوصول إليه إلى عنوان الشارع هو المدينة.

كان لدي مشروع بمجرد وضع جميع المدارس الثانوية في الهند في خرائط جوجل. كتبت برنامج Spiffy باستخدام API Google ويعتقد أنه سيكون من السهل جدا.

ثم حصلت على البيانات من العميل. كانت بعض العناوين المدرسية أشياء مثل "عبر من السوق، بجانب الحلاق" أو "بالقرب من حامل الحافلات القديمة".

لقد جعلت مهمتي أكثر صعوبة منذ ذلك الحين، لسوء الحظ، لا يدعم جوجل API هذا التنسيق.

بالنسبة للعناوين الدولية، من الصعب إيجاد طريقة لتهيئة المعلومات إذا تم تقسيمها إلى حقول. على سبيل المثال، يستخدم عنوان إيطالي:

<street address>
<zip> <town> <region>
<country>

مثل

Via Eroi della Repubblica
89861 Tropea VV
Italy

هذا مختلف تماما عن الطلب عناوين الولايات المتحدة - في السطر الثاني.

انظر أيضا الأسئلة حتى:

تحقق أيضا من العلامةرمز بريدي'.


يحرر: عكس ترتيب المنطقة والبلدة - لكل upu.

ربما هذا مفيد:https:/gist.gist.github.com/259744.بالنسبة للمشروع، قمت بجمع جدول معلومات حول جميع بلدان العالم، بما في ذلك رموز ISO، مجال المستوى الأعلى، رمز الهاتف، علامة السيارة، طوله و Regex من الرمز البريدي. أسماء البلدان والتعليقات للأسف فقط باللغة الألمانية ...

يعتمد على كيفية النموذج الحر الذي أنت مستعده للذهاب مع الحقول. من الواضح أن حقل عنوان عناوين النموذج المجاني ستفعل دائما، ولكنه سيكون من المساعدات القليل نسبيا تضييق الجغرافيا.

المشكلة التي ستحصل عليها هي أن هناك الكثير من الاختلاف في مستوى التسلسل الهرمي الجغرافي عبر البلدان. هيك، بعض البلدان لا تملك حتى عناوين الشوارع في كل مكان.

أوصي أنك لا تحاول أن تجعلها ذكية للغاية.

بشكل مختلف عن الإجابات الأخرى هنا، أعتقد أنه من الممكن أن يكون لديك قاعدة بيانات عنوان منظمة.

فقط خارج القبعة، يمكنني التفكير في الهيكل التالي:

  • دولة
  • المنطقة (الدولة / المقاطعة)
  • المنطقة (المدينة / البلدية)
  • المنطقة الفرعية (مقاطعة / تقسيم فرعي آخر في المنطقة)
  • شارع

ولكن كيفية الاستعلام بسرعة بما فيه الكفاية؟

إحدى الطرق التي أعتقدها دائما أنه يمكن إنجازه هو طلب الرمز البريدي (أو الرمز البريدي) الذي يختلف من بلد إلى آخر، ولكنه صلب داخل البلاد.

وبهذه الطريقة يمكنك بناء بياناتك حول المعلومات التي تقدمها المكاتب البريدية في جميع أنحاء العالم.

لين Silverston من نموذج البيانات العالمي الشهرة توصي تسلسل هرمي منفصل GEOGRAPHIC BOUNDARIES واعتمادا على مقدار NESS المجاني الذي ترغب في قبوله إما بسيطة STREET ADDRESS LINES أو مشتقات البلد.

لا لا على الاطلاق. إذا قارنت الطريقنا و العناوين اليابانية العمل، سترى أنه غير ممكن.

تحديث:

في الفكر الثاني، يمكن القيام بأي شيء، ولكن هناك مفاضلة.

نهج واحد هو نموذج المشكلة مع العنوان والعنوان _Attribute الجداول، مع علاقة 1: M بينها، يمكن أن يكون أي شيء على غرار أي شيء. سيكون لجدول Adress_Attribute PK، واسم، وقيمة، و FK يشير إلى PK عالجها PK. إنه مثل تقريبا استخدام خريطة مع الاسم، وقيمة أزواج.

يتعين الاضطلاع بالمفاضلة بالانضمام في كل مرة تريد فيها عنوانا. يجب عليك أيضا استجواب أسماء العناوين_Attributes لمعرفة ما تتعامل معه في كل مرة.

سيكون نهج آخر هو القيام بأبحاث أكثر شمولا حول كيفية نمو العناوين في جميع أنحاء العالم. في عالم موجه نحو الكائنات قد يكون لديك فئة العنوان الغربية (Street1 / Street2 / City / الدولة / الدولة / الرمز البريدي) وغيرها من أجل اليابان والصين، أكبر عدد ممكن لتسوية مساحة العنوان. ثم لديك جدول عنوان رئيسي وطاولات الأطفال إلى الأنواع الأخرى مع علاقة 1: 1 بينهما.

كيف أما الأمازون أو يباي تفعل ذلك؟ يشحنون دوليا. هل لديهم ميزات واجهة المستخدم الخاصة بالطائرة؟ لقد استخدمت فقط لغة الولايات المتحدة.

لا، لا يوجد مخطط معالجة قياسي. وعادة ما تختلف من بلد إلى آخر. حتى ال الاتحاد البريدي العالمي قال في عناوين العالم، عنوان للجميع أن لا يوجد شيء. أفضل حل لهذا هو استخدام معايير رمز البلد 2/3 حرفا المعروفة باسم ISO 3166. وعلاج كل شيء آخر حسب معايير البلد.

ومع ذلك، إذا كنت حقا يائسة لاستخدام الأدوات التي يمكن الوصول إليها بسهولة لمشروعك، فيمكنك تجربة جوجل مكان API..

يجب أن يعتمد التصميم الخاص بك بشدة من هدفك. قام بعض الأشخاص بنشر كيفية هيكل البيانات. لذلك إذا كنت ترغب ببساطة في إرسال بريد S إلى شخص ما، فسوف يقوم بذلك. تبدأ الأمور في تعقيد إذا كنت ترغب في استخدام هذه البيانات للتنقل. سيتطلب ملاحة السيارات هياكل إضافية لاحتواء معلومات حركة المرور (مثل الطرق أحادية الاتجاه)، في حين أن الملاحة القدم سيتطلب الكثير من البيانات الإضافية. فيما يلي مثال صغير: في مدينتي، كان جاري بالقرب من الحديقة. بجانب الحديقة هو المطار السابق (في الواقع، تحول أحد الأقدم في أوروبا) إلى متحف الطيران. بجانب متحف الطيران هو حديقة تجارية. رقم الشارع للمتحف هو 39، في حين تبدأ أرقام الحديقة التجارية مع 39A. لذلك قد يبدو أن 39 و 39 أ قريبة - لكن الأمر يستغرق الأمر على بعد ميلا للمشي من واحد إلى آخر (وحتى أطول إذا كان بالسيارة).
هذا مجرد مثال صغير مأخوذ من مدينتي، وأعتقد أنه ربما يمكنك العثور على الكثير من الاستثناءات (خاصة في الأجزاء الريفية أو البرية من كل بلد).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top