Birden fazla 'soyadı' nasıl modellenir?


11

İspanyolca konuşulan ülkelerde birden fazla soyadı kullanırız, örneğin:

Adı ↘ ↙ Soyadı
                Pedro Arturo Rodríguez Loyola İkinci adı
        ↗ ↖ (?)

Hasta adı için veri modellemeye çalışıyorum. Ülkemizde önemlidir, bu yüzden ikinci soyadını ihmal edemem, ancak diğer geliştiricilere, özellikle İngilizce konuşulan ülkelerden anlamlı olabilecek bir uygulama oluşturmak istiyorum.


İngilizce ile ilgili benzer bir soru yarattım. SE , her iki değeri de sürdürmenin neden önemli olduğuna dair bazı fikirlere sahip.


15
"Soyadı" değerinin boşluk içermesine izin verilmemesinin en ufak bir nedeni var mı? Bazı kullanım durumlarında gerçekten bir soyadı, diğerlerinde ise tüm soyadlarını kullanmak istiyor musunuz? Değilse, sorunu göremiyorum. "Soyadını" tam olarak kullanıcının girdiği şekilde bırakın ve iyisiniz.
Kilian Foth

3
Felemenkçe'de "van de Iets" türü adı oldukça yaygındır. Sadece soyadı alan boşluk içermemelidir let
mandal ucube

2
Sadece tek bir nametarlaya sahip olmamanın bir nedeni var mı?
asfallows

2
@asfallows: Bir hasta listesi yazdırırsak, bunları soyadına göre sıralamamız gerekir. Örneğin, adınız "José Carlos Fernando Almodóvar Soto" ise, "Almodóvar" ın ilk soyadı olduğunu nasıl önceden bilebilirim?
Pablo Olmos de Aguilera

2
@FedericoPoloni: Soyadına göre bir hasta arayan herkes muhtemelen hastanın soyadını bilir.
Mooing Duck

Yanıtlar:


19

S: Bir DBA nasıl sayılır?

A: 0, 1, çok

Bir kişinin 1 veya daha fazla adı ve 1 veya daha fazla aile adı ve muhtemelen bir başlığı vardır. Bu isimlerin bir emri var. Bir bireye nasıl atıfta bulunulacağını belirlemek yerelleştirme ve kültüre bağlıdır.

kişi kimliği
NamePart {"John", "Smith", ...}
NameType {başlık, verilen, aile, ???}
{1, 2, 3, ...} siparişi

İçin Pedro Arturo Rodríguez Loyola(irtibat # 1), dört satırlarda yer alacaktır:

1 / Pedro / verilen / 1
1 / Arturo / verilen / 2
1 / Rodríguez / aile / 3
1 / Loyola / aile / 4

Bu şekilde, verilen herhangi bir yapı ile sınırlı kalmamakla birlikte, oradaki belirli bir temas için hala mantıklıdır. 3 ya da 4 kişiden birine ya da soyadına sahip olduğunuzda ne yaparsınız? ya da bir kızlık soyadı?

Sırayı bu cevabın bir önceki revizyonundan değiştirdiğimi unutmayın - sipariş, isim türündeki bir sipariş yerine tüm adın üzerindeki bir sipariştir, çünkü bazı kültürlerde aile adı önce gelir, bölünmüş olabilir başlık bölümleri "Sir John Smith II".

Ek Okuma


2
+1 Ama bu programcı birçok denizaşırı ekip üyesiyle çalıştı, ancak gördüğüm en uzun isim hala "Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Crispiniano de la Santísima Trinidad Ruiz y Picasso". Çocuk istismarı mı değil mi?
Elliott Frisch

@Darkhogg utnapistim cevabında ilk 'Bu' bağlantı olarak var. Bu 'kesin kılavuzlardan' biri.

Fikri bir kavram olarak seviyorum, ancak kullanıcıya gerçek adı yazacağını sunmak biraz zor değil mi? Gelebileceğim tek şey, "GMail" iletişim alanları gibi bir şey, adın bölümlerini "ekleyelim". Bu tür bir veri modelini gerçekten nasıl kullanabileceğinizi düşündünüz mü?
Pablo Olmos de Aguilera

1
@Peteris genellikle tıbbi uygulamalarda (orijinal soru 'hasta' dan bahseder), diğer sistemlerle entegrasyon için yapılandırılmış bir isimden geçmeniz gerekir. Yapılandırılmamış verilere sahip olmak, bir hastayı bir hastaneden diğerine aktarmak veya sigorta talepleri için form alanlarını doldurmak gibi şeyler gibi diğer sistemlerle entegrasyon konusunda önemli zorluk yaşayacağınız anlamına gelir. Ve böylece verilerin gerekli tüm şekillerde manipüle edilmesine izin verecek şekilde nasıl yapılandırılacağı sorunu.

1
@Ben serbest bir metin alanı, uygulama aile adına göre sıralamayı çağırdığında veya bir hastanın ambulanstan hastaneye aktarılması (veya tam tersi) için eski bir EDI sistemi ile arayüz oluşturmaya çalıştığında veya çeşitli sigorta hasar talep formlarında uygun alanlar. Bunların hepsi, adın her bir parçasını belirleyen bir miktar veriye sahip olmanın, gerçekten sonra anlam atamaya çalışmaktan daha kolay olduğu kilit alanlardır. Serbest metin alanı güzeldir, ancak bazen diğer sistemlerle çalışmak için bir seçenek değildir.

10

Bu yardımcı olabilir. Gönderi esprili ama anlayışlı.

[Ad] [Soyadı] adlar için evrensel bir kural değildir. Sadece yaşadığınız yerde yaygındır. Buna kurallar koyarsanız, er ya da geç sisteminize eklenemeyen insanlara sahip olacaksınız.

Temel olarak, mümkün olduğunca az kısıtlama uyguladığınızdan emin olun ve gerçek saklanan ad ile ekstralar arasında esneklik sağlayın.

Böyle bir şeyle giderdim:

  • Görünen ad (formları / verileri gösterirken tutarlı adlar için): ([ilk] [son] olmalıdır).
  • Diğer adlar / tam ad (arama, daha hassas eşleme vb. İçin). Burada, kullanıcının belirli bir uzunluğa kadar herhangi bir şey yazmasına izin verin; uzunluk, makul olarak yeterli olması gerektiğini düşündüğünüzden daha fazla olmalıdır - örneğin, 40 karakterin yeterli olması gerektiğini düşünüyorsanız, 500 yazın :)).
  • Adresleme (Bay, Bayan, Bayan, Jr, Sr, -san, özel değer (Tov. Gibi).
  • dahili kimlik (bu kimlik, uygulamanızdaki herkesin benzersiz bir şekilde tanımlanması ve ad çakışmalarını önlemelidir).

Örneğin, ismim Romen'e özgü aksan işaretleri nedeniyle çoğu Avrupa dilinde doğru olarak yazılamıyor (bu nedenle, adımı kendi ülkem dışında yazdığımda, teknik olarak yanlış yazıyorum - böylece insanlar okuyabilir ve telaffuz edebilir).

Bazı ilginç isim örnekleri ve bağlantılar:

http://en.wikipedia.org/wiki/Nicholas_Barbon

http://en.wikipedia.org/wiki/Prince_%28musician%29

http://en.wikipedia.org/wiki/P_diddy

http://en.wikipedia.org/wiki/Burmese_name


Dikkate alınması gereken bir şey daha sıralama. İnsanların bir listesini soyadlarına göre (veya yalnızca ad veya soyadındaki ilk sözcük vb.) Sıralamak genellikle arzu edilir. Uygulamanın bunu yapması gerekiyorsa, "sıralama adı" tanımlamanın bir yolunu bulmamız gerekir.
BenM

Ama genel olarak bu fikri sevdim. Kültürel varsayımlara dayalı isimleri temsil etmek yerine, bunları sistemde gerçekleştirmeleri gereken işlevlere göre temsil ediyoruz.
BenM

Cevabını beğendim. Yine de bunun isim koymamda bana nasıl yardımcı olabileceğini anlamıyorum. Bunları sıralamam gerekiyor, örneğin normalde soyadı kullanıyoruz. Bunları "diğer adlar" veya "görünen ad" olarak adlandırılan bir alana / sütuna koymak, örneğin bana bu konuda nasıl yardımcı olabilir? Birman ismi için şeref. Muhteşem.
Pablo Olmos de Aguilera

@pablox, benim düşüncem, kavramsal olarak, bir kişinin adını bir kimlik olarak değil, kimlik için meta veri olarak ele almanız gerektiğiydi (ve kimlik benzersiz bir kod olmalıdır). Uygulamanızın ihtiyaçlarına göre bu meta verileri düzenli olarak düşünebilirsiniz. Örneğin, "ad belirteçleri grubunda" ikinci adı (varsa) "adlandırma" rolünü, ilk belirteç olarak "görünen ad" rolünü ve "adres adı" rolünü seçebilirsiniz. "Dr. | Mr. | Ms. | etc" + "görünen ad" olarak adlandırılmıştır.
utnapistim

İsimlerin sıralanması genellikle "telefon rehberi sıralaması" olacaktır, burada isimle ilgili çeşitli uzantıları görmezden gelir ve önemli kısımda sıralarsınız. Örneğin, "van de Bogart", "van" yerine "Bogart" olarak sıralanır. Çok parçalı bir İspanyol isminin nasıl ele alınacağı kültürel olarak bağımlı olacaktır - nerede kullanılır ve nasıl kullanılır?
Phil Perry

0

Karmaşık bir şey değil ..... ya da bir şey eksik.

Şu alanlara sahip olun: name(varchar), lastname(varchar).

Sonra tam adı doldurmak için bir form, örnek: Jorge Patriciove soyadı Pèrez Gonzáles.

Aramada, örneğin MySQL'de, aramanıza likeyardımcı olacak birçok karşılaştırma operatörünüz var .

Çoğunlukla oluşturulan soyadları her zaman sıradadır. Pérez Gonzálezçoğunlukla soyadını bu şekilde söyler, ters sırada değil.

Veritabanınızı başka bir şekilde tasarlayacaksınız.


1
İlk önce soyadı verilirse ne olur? bağlantı

1
@MichaelT, buna ne dersin? Alanı patlatın ve değerin oluşması için ad ve soyad tablosunda arama yapın. Her zaman Google benzeri bir arama alanınız olduğunu varsayarsak, aksi takdirde "Ad:" ve "Soyadı:" gibi bir formunuz olabilir
JorgeeFG

0

Üç tür kişisel isim vardır: Polinimler (çoklu bileşenli isimler), Mononyms (sadece bir bileşenli isimler, "Cher") ve Pictonyms (resimlerle gösterilen isimler, Sanatçı'dan ).

Bir kişinin birden fazla adı olabilir, rolleri oynar , örneğin Yasal Ad ve Tercih Edilen Ad.

Bir polinim, adı ve soyadı verilmesi gereken birkaç bileşene sahiptir. Birkaç tür soyadı vardır:

  1. Normal soyadları (Jones)
  2. Çift namlulu soyadı ("Vaughn Williams" veya "Louis-Dreyfus")
  3. Gerçek Bileşik soyadı {givenName: "Juan Pablo" soyadı: "Fernández de Calderón", ikincil Soyadı: "García-Iglesias"}

3 önemlidir, çünkü Bay Fernández de Calderón García-Iglesias değil, Bay Fernández de Calderón olarak ele alınması bekleniyordu .

Temel olarak, zorunlu bir soyadı alanına ve boş bir ikincil Soyadı alanına sahip olun.


0

Birisinin adının çeşitli bileşenlerini nasıl modellersiniz? Yapmazsın . Birisinin yasal adının tüm bileşenleri için ayrı alanları modellemek yerine, tercih ettikleri selamlama, appelation, gayri resmi ad, kullanıcı adı, takma ad ve işlem için, yalnızca önemsediğinizi modelleyin.

Oranlar, sisteminiz sadece birisi için en fazla dört "isim" i önemser:

  1. Sisteme giriş yaptıklarını bilmelerini sağlayan bir Görünen Ad .
  2. Bir Gayri Adı bir telefon görüşmesi onlara hitap hangi tarafından.
  3. Yazışmalarda kendilerine atıfta bulunacağınız bir Resmi Ad .
  4. # 2'yi bir listede sipariş edilecek şekilde ifade eden bir Sıralama Adı .

Birçok sistem # 1 ve # 2 için birinin resmi adını kullanır ve önem verdiğiniz tek adları "kullanıcının adını temsil eden bir dize" ve "öncekinin nasıl sıralanması gerektiğini temsil eden bir dize" olarak kalır.

Bir veri modelleme perspektifinden, yalnızca gerçekten ihtiyacınız olan değerleri tanımlayın. Bu değerlerin depolanmasını en iyi şekilde nasıl optimize edeceğiniz bir uygulama detayıdır - yalnızca aşırı optimize ettiğinizde baş ağrısına neden olacağınız detay. (Tabii, sadece bir ad ve soyadı saklayabilirsiniz, ancak yalnızca tek bir adı olan biri için ne yapardınız?)


-1

Bunu başka bir şekilde ele alalım.

Sisteminizin diğer sistemlere bağlanması gerekir, eğer olmadıklarında ne kadar esnek olduğunuz önemli değildir. Peki veri aktarmak için sahip olduğunuz sistemler ne işe yarar?

Doktoruma randevum için telefon ettiğimde, doğum tarihimi soruyorlar, sistemler daha sonra onlara uyan kişilerin bir listesini gösteriyor, sonra bana adımı soruyorlar, son olarak seçtiklerini onaylamak için adresimi soruyorlar doğru kişi.

Doktor benimle konuşurken adın bana hitap ettiğini bilmeli; Bana mektup yazarlarsa, bir mektup yazacakları adı da bilmeleri gerekir.

Bu nedenle sadece boşluklara izin veren tek bir metin alanı değil. Bunları aynı şekilde işlemezseniz, ilk adı soyadından ayırmak için hiçbir neden yoktur.


3
Sigorta talebinde bir form dolduruyorsunuz. "Soyadı" vardır. Kişi Japonya'dan. Harf çevirisi yapılmış sürümünüz olsa da, alana doğru aile adını girmeniz gerekir. Hangi kelime?

@MichaelT, Herkesin bir soyadı olduğunu nasıl söyleyebilirim?
Ian

2
Japonya'dan bir kişiden isim almak (veya diğer birçok doğu adlandırma ülkesinden önce aile adı verilir. Bu şekilde ele alınır.Ancak, tıbbi bir formu doldururken aile adının ve verilen adın farklı olması gerekebilir. alanlar? - siz "José Carlos Fernando Almodóvar Soto" üzerinde sıralamak gerekir aile adına sıralama ve verilirse nasıl uygun alana bir alan ve maçı almak do verilen diğer örnektir Almodóvarziyade Fernando.

@MichaelT, bu yüzden Aile Adını ayrı olarak işlemeye ihtiyaç vardır, bu yüzden ona kendi alanını verin ve ayrıntılarda yazan kişinin doğu adlandırmalarını anlamasını umuyoruz.
Ian
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.