ما هي الطريقة "الأفضل" لتخزين العناوين الدولية في قاعدة البيانات؟

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

سؤال

ما هو "أفضل"طريقة لتخزين العناوين الدولية في قاعدة بيانات؟الإجابة في شكل مخطط وشرح للأسباب التي جعلتك تختار التطبيع (أو لا) بالطريقة التي فعلتها.اشرح أيضًا سبب اختيارك لنوع كل حقل وطوله.

ملحوظة:عليك أن تقرر ما هي المجالات التي تعتقد أنها ضرورية.

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

المحلول

نص حر عادي.

يعد التحقق من صحة جميع الرموز البريدية/الرموز البريدية في العالم أمرًا صعبًا للغاية؛إن القائمة الثابتة للدول حساسة للغاية من الناحية السياسية؛تعتبر الولاية/المنطقة/التقسيم الإداري الإلزامي الآخر غير مناسب تمامًا (في كثير من الأحيان يتم سؤالي عن المقاطعة التي أعيش فيها - عندما لا أفعل ذلك، لأن لندن الكبرى ليست مقاطعة على الإطلاق).

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

الاستثناء لهذا هو إذا كنت تفعل شيئًا مقيدًا بشكل طبيعي بدولة واحدة على أي حال.في هذه الحالة، يجب عليك أن تطلب، على سبيل المثال، الزوج { postcode, house number }، وهو ما يكفي لتحديد العنوان البريدي.أتصور أنه يمكنك تحقيق أشياء مماثلة باستخدام الرمز البريدي الممتد في الولايات المتحدة.

نصائح أخرى

في الماضي، قمت بتصميم النماذج التي يجب أن تكون دولية بعد نماذج عنوان الشحن UPS/fedex الموجودة على مواقع الويب الخاصة بهم (اعتقدت أنهم إذا كانوا لا يعرفون كيفية التعامل مع طلب دولي، فسنكون جميعًا مسرورين).يمكن استخدام الحقول التي يستخدمونها كمرجع لإعداد المخطط الخاص بك.

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

(قد تجمع UPS بعض الدول الأوروبية الصغيرة معًا، على سبيل المثال..من المحتمل أن تتم خدمة جميع البلدان المنخفضة من بلجيكا - ولا تزال الفكرة قائمة.)

أعتقد أن إضافة البلد/المدينة ونص العنوان سيكون أمرًا جيدًا.يجب أن يكون البلد والمدينة منفصلين عند إعداد التقارير.المديرين دائماً اطلب هذا النوع من التقارير التي لا تتوقعها ولا أفضّل تشغيل استعلام LIKE من خلال قاعدة بيانات كبيرة.

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

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

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

أبسط سيكون

address_line_01 (مطلوب ، غير فارغ) address_line_02 address_line_03 المعالم (المطلوبة) دبوس (مطلوب) الدولة (مطلوب) الدولة (المطلوبة) (مطلوب) (مطلوب)

كل ما سبق يمكن أن يكون نصًا/Unicode بأطوال الحقول المناسبة.

أرقام الهاتف حسب الاقتضاء.

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