2009-02-18 8 views
6

कोई भी सूचना प्रणाली बनाते समय मैं चलने वाली सबसे आम समस्याओं में से एक यह तथ्य है कि लोग इतने सारे अलग-अलग नामों से जाते हैं। "बिल स्मिथ" नामक कोई व्यक्ति "विल स्मिथ", "विलियम स्मिथ", "स्मिथ, विल" आदि द्वारा जा सकता है ... यदि कहें, तो मैं ब्लॉग पोस्ट को लेखकों से जोड़ने के लिए एक आवेदन लिखना चाहता था, मुझे खाता करना होगा उन सभी नामों के लिए।आप "1 व्यक्ति के लिए कई नाम" से कैसे निपटते हैं?

मेरा प्रश्न है: आपके पूरे एप्लिकेशन में लगातार डेटा रखने के लिए आप क्या दृष्टिकोण लेते हैं। आप अपने डेटाबेस को कैसे व्यवस्थित करते हैं ताकि आप उन सभी नामों का पता लगाने के लिए एक पहचानकर्ता को संदर्भित कर सकें? आप क्या यूआई दृष्टिकोण सुनिश्चित करते हैं कि लोग निरंतर तरीके से नाम दर्ज करते हैं?

+0

आपको इस प्रश्न का उत्तर स्वीकार करना चाहिए। यह कई महीने हो गया है। निश्चित रूप से – Sampson

उत्तर

10

शायद आपके उपयोगकर्ता से केवल एक ही नाम स्वीकार करना एक अच्छा विचार है, और उन्हें "उपनाम" या "सार्वजनिक नाम" की अनुमति दें। इससे उन्हें मेलिंग या बिलिंग के लिए कानूनी नाम रखने की स्वतंत्रता मिलती है, और आपकी साइट पर बातचीत के लिए सार्वजनिक रूप से देखने योग्य नाम मिलता है।

इसके अलावा, मुझे नहीं लगता कि मैं अपने उपयोगकर्ताओं को एकाधिक नाम रखने की अनुमति दूंगा, जब तक कि मेरे सिस्टम को इसकी आवश्यकता न हो।

  • उपयोगकर्ता:: अगर मैंने किया, मैं इसे दो तालिकाओं में विभाजित होता

    • userid (पूर्व: 1821)
  • उपयोगकर्ता नाम:

    • userid (पूर्व: 1821)
    • firstName (पूर्व: जोनाथन)
    • lastName (पूर्व: सैम्पसन)

इसके अलावा, आप में एक क्षेत्र जोड़ सकता है usernames तालिका 'isPrimary' कहा जाता है। यह एक बूलियन वैल्यू होगा जो आपको बताएगा कि कौन सा नाम उपयोगकर्ता के प्राथमिक नाम के रूप में व्यवहार करेगा। यह विकिपीडिया डेटा/परिवर्तन का इतिहास कैसे संग्रहीत करता है। वे सभी को रखते हैं, लेकिन चिह्नित करें जो "सक्रिय" है, या आपके मामले में "प्राथमिक" है।

17

जब तक आपके पास प्रत्येक उपयोगकर्ता के लिए एक अद्वितीय आईडी है (जो उनके नाम पर नहीं है) तो आपके पास एक सारणी हो सकती है जो एक अद्वितीय आईडी में नाम भिन्नताओं को मानचित्रित करे, और उसके बाद प्रत्येक पोस्ट को उस अद्वितीय आईडी से संबद्ध करें।

 
(Table mapping names to UIDs) 

Name  UID 

Robert S 123456 
Bob S  123456 
Bert S  123456 
Darren  987654 
 
(Table with post information, including author's UID) 

Title  Author ... 

Post 1 123456 
Post 2 123456 
Post 3 987654 
 
(Table with author information) 

UID  Preferred Name Webpage    ... 

123456 Robert Smith  http://www.robert.com 
987654 Darren Jones  http://www.jones.com 

+0

। अगर कोई विवाहित हो जाता है या अपना नाम बदलता है, तो संभवतः आप चाहते हैं कि वे अपनी वेबसाइट पर अपना नाम बदल सकें, और अपने उपयोगकर्ता आईडी से जुड़े डेटा की निरंतरता को बाधित कर सकें। –

+0

मुझे लगता है कि मैं "पसंदीदा नाम" तालिका पर एक ध्वज बनाउंगा जो यूआईडी के नामों को मानचित्र करता है, क्योंकि यह तार्किक रूप से उस सूची में एक नाम होगा, और इस प्रकार denormalized। यद्यपि यह एक बहुत मामूली गड़बड़ है। इसके अलावा, वही समाधान मैं साथ आया होगा। +1 – rmeador

+0

@ रेमेडोर हाँ, ऐसा लगता है कि जोनाथन ने अपनी पोस्ट में ध्वज की तरह कुछ बताया; यह बहुत तार्किक लगता है। –

2

ऐसा लगता है कि आप एक प्राथमिक कुंजी या यूआईडी के रूप में उनके नाम का उपयोग करने की कोशिश कर रहे मेरे लिए लग रहा है। यह जाने का गलत तरीका है। आपके पास प्राथमिक कुंजी के रूप में एक अलग यूआईडी होना चाहिए, फिर नाम जो कुछ भी आप चाहते हैं हो सकता है, और आप वैकल्पिक नामों की एक सूची भी प्राप्त कर सकते हैं।

+0

डाटाबेस purists (जो Celko की तरह) अन्यथा बहस करेंगे। टेबल कुंजी "प्राकृतिक" कुंजी होना चाहिए। एक कृत्रिम आईडी बनाना गलत तरीका माना जाएगा। हालांकि, यह समस्या को संभालने का एक बहुत ही आम तरीका है, लेकिन यह "सही या गलत" का मामला नहीं है। तुम बहुत काले और सफेद हो। –

+0

@ मिस्टेर मैन: यह तर्क दे रहा है कि आपको ऐसे नाम का उपयोग करना चाहिए जो एक प्राथमिक कुंजी या यूआईडी के रूप में डुप्लिकेट बदल सकता है या बहुत बेवकूफ हो। मैं कल्पना भी नहीं कर सकता कि आपको यह विचार कैसे मिला, लेकिन कृपया इस तरह के विचारों को फैलाएं। – GEOCHET

+0

एक टेबल कुंजी के लिए एक प्राकृतिक कुंजी अच्छा होगा, लेकिन अगर वह प्राकृतिक कुंजी यूआईडी के होने वाले मूलभूत सिद्धांतों का उल्लंघन करने जा रही है। – TheTXI

2

मैं आपकी स्कीमा को व्यवस्थित करने के तरीके पर पहले 3 पदों से सहमत हूं।

यूआई के संबंध में मैं व्यक्तियों के लिए पहले क्षेत्र, मध्य और अंतिम नाम के लिए एक क्षेत्र की अनुमति दूंगा जो बहुत ही कम बदलना चाहिए।

फिर अपनी आवेदन आवश्यकताओं के आधार पर उपनाम (ओं) की अनुमति दें।

अपना पूरा कानूनी नाम बिलिंग/वित्तीय/मानव संसाधन स्थितियों के लिए भी आसान हो सकता है।

+0

कभी-कभी लोग विवाह से अन्य कारणों से अपना कानूनी नाम बदलते हैं। –

+0

अच्छी बात, मैंने इसे फिर से लिखा। – Element

2

वास्तविक समस्या तब होती है जब आपके पास एकाधिक अनुप्रयोग होते हैं, और प्रत्येक के पास उपयोगकर्ता की जानकारी के लिए स्वयं की स्कीमा होती है। बिलिंग सिस्टम में "विल स्मिथ" हो सकता है; पेरोल सिस्टम में "विलियम स्मिथ" हो सकता है; दावों के सिस्टम में "विली एक्स स्मिथ" हो सकता है। सभी वास्तव में एक ही व्यक्ति हैं। आप क्या करते हैं? स्टोवपाइप, विरासत ऐप्स के लिए यह एक बड़ा मुद्दा है।

1

आप हमेशा एकेए टेबल बना सकते हैं, जहां आप एकेए नाम का पसंदीदा नाम प्राप्त कर सकते हैं। तो अगर कोई नाम बिल का उपयोग करता है, तो आप हमेशा इसे विलियम के साथ बदल सकते हैं।

मैंने व्यक्तिगत रूप से नामों के लिए इस अवधारणा का व्यक्तिगत रूप से उपयोग नहीं किया है, लेकिन मैं ऐसी परियोजना का समर्थन करता हूं जो मूवी टाइटल के समान कुछ करता है, जो विभिन्न देशों के लिए भिन्न हो सकता है।

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