ما هو الحد المعقول للطول في حقول "الاسم" للشخص؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

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

هل من الأنسب استخدام شيء مثل نوع عمود النص أم يجب أن أقصر طول الاسم على شيء معقول؟

أنا أستخدم SQL Server 2005، في حال كان ذلك مهمًا في ردك.

يحرر: لم ارى هذا السؤال الأوسع فيما يتعلق بقضايا مماثلة.

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

المحلول

كتالوج معايير البيانات الحكومية في المملكة المتحدة يقترح 35 حرفًا لكل من الاسم الأول واسم العائلة، أو 70 حرفًا لحقل واحد يحمل الاسم الكامل.

نصائح أخرى

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

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

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

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

عادةً ما أستخدم varchar(255) (255 هو الحد الأقصى لطول نوع varchar في MySQL).

إذا كان الاسم الكامل في حقل واحد، عادةً ما أختار 128 - 64/64 للأول والأخير في حقول منفصلة - فأنت لا تعرف أبدًا.

@ إيان نيلسون:أتساءل عما إذا كان الآخرون يرون المشكلة هناك.

لنفترض أن لديك حقولًا مقسمة.هذا يعني 70 حرفًا، 35 للاسم الأول و35 لاسم العائلة.ومع ذلك، إذا كان لديك حقل واحد، فإنك تهمل المسافة التي تفصل بين الاسم الأول واسم العائلة، مما يؤدي إلى تغيير حرف واحد.بالتأكيد، إنها حرف واحد "فقط"، ولكن هذا قد يُحدث فرقًا بين شخص يُدخل اسمه الكامل وشخص لا يُدخله.ولذلك، أود تغيير هذا الاقتراح إلى "35 حرفًا لكل من الاسم الأول واسم العائلة، أو 71 حرفًا لحقل واحد يحمل الاسم الكامل".

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

تغيير اسمك عن طريق استطلاع الفعل يسمح بـ 300 حرف;

لا يوجد حد قانوني لطول اسمك، ولكننا نفرض حدًا يبلغ 300 حرف (بما في ذلك المسافات) لاسمك الكامل.

ال تستخدم هيئة الخدمات الصحية الوطنية 70 حرفًا لأسماء المرضى

اسم المريض
التنسيق/الطول:الحد الأقصى 70

مكتب الجوازات يسمح بـ 30+30 الأول/الأخير ورخص القيادة (DVLA) يبلغ إجماليها 30.

لاحظ أن المنظمات الأخرى سيكون لها قيودها الخاصة بشأن ما ستعرضه في المستندات التي تنتجها - بالنسبة لـ HM Passport Office، الحد الأقصى هو 30 حرفًا لكل من اسمك الأول ولقبك، وبالنسبة لـ DVLA، الحد الأقصى هو 30 حرفًا إجمالاً لاسمك الاسم الكامل.

نستخدم 50.

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

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

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

متوسط ​​الاسم الأول هو حوالي 6 أحرف.هذا يترك 43 لاسم العائلة.:) يبدو أنك ربما تستطيع تقصيرها إذا أردت.

السؤال الرئيسي هو كم عدد الصفوف التي تعتقد أنه سيكون لديك؟لا أعتقد أن varchar(50) سيقتلك حتى تحصل على عدة ملايين من الصفوف.

اعتمادًا على من سيستخدم قاعدة البيانات الخاصة بك، على سبيل المثال، ستفعل الأسماء الأفريقية مع varchar(20) للفصل بين الاسم الأخير والاسم الأول.ومع ذلك، يختلف الأمر من دولة إلى أخرى، ولكن من أجل توفير موارد قاعدة البيانات والذاكرة، افصل حقول الاسم الأخير والاسم الأول واستخدم varchar(30) وأعتقد أن ذلك سيعمل.

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