
I don't know which Database engine you are using, but (at least with MySQL -- see 7.4.1. Make Your Data as Small as Possible), using an integer, the shortest possible, is generally considered best for performances and memory requirements.
I would use an integer, auto_increment, for that primary key.
The idea being :

If the PK is short, it helps identifying each row (it's faster and easier to compare two integers than two long strings)
If a column used in foreign keys is short, it'll require less memory for foreign keys, as the value of that column is likely to be stored in several places.

And, then, set a UNIQUE index on an other column -- the one that determines unicity -- if that's possible and/or necessary.

Edit: Here are a couple of other questions/answers that might interest you :

What’s the best practice for Primary Keys in tables?
How do you like your primary keys?
Should I have a dedicated primary key field?
Use item specific prefixes and autonumber for primary keys?

A:

As mentioned above, use an auto-increment as your primary key. But I don't believe this is your real question.
Your real question is how to avoid duplicate entries. In theory, there is no way - 2 people could be born on the same day, with the same name, and live in the same household, and not have a social insurance number available for one or the other. (One might be a foreigner visiting the country).
However, the combination of full name, birthdate, address, and telephone number is usually sufficient to avoid duplication. Note that addresses may be entered differently, people may have multiple phone numbers, and people may choose to omit their middle name or use an initial. It depends on how important it is to avoid duplicate entries, and how large is your userbase (and thus the likelihood of a collision). 
Of course, if you can get the SSN/SIN then use that to determine uniqueness.

A:

What attributes are available to you? Which ones does your application care about?  For example no two people can be born at exactly the same second at exactly the same place, but you probably don't have access to that data at that level of accuracy!  So you need to decide, from the attributes you intend on modeling, which ones are
I don't know which Database engine you are using, but (at least with MySQL -- see 7.4.1. seduce Your datum as Small as Possible), use an integer, the shortest potential, is generally considered best for operation and memory requirements. 
 I would use an integer, auto_increment, for that chief key. 
 The idea being: 

 If the PK is brusque, it helps identifying each course (it's quicker and easier to compare two integers than two retentive strings) 
 If a column used in alien keys is short, it'll require less memory for extraneous keys, as the value of that column is likely to be stored in several topographic point. 

 And, then, set a UNIQUE index on an other column -- the one that determines unicity -- if that's possible and/or necessary. 

 Edit: Here are a couple of early questions / answers that might interest you: 

 What ’s the best practice for Primary Keys in tables? 
 How do you wish your chief keys? 
 Should I have a dedicated primary key field? 
 Use item specific prefixes and autonumber for chief keys? 

 A: 

 As mention above, use an auto - increment as your primary keystone. But I don't believe this is your real question. 
 Your real doubt is how to avoid duplicate entries. In theory, there is no way - 2 people could be digest on the same day, with the same name, and live in the same household, and not get a social policy number available for one or the other. (One might be a foreigner visiting the area). 
 However, the combination of full name, birthdate, address, and telephone number is normally sufficient to avoid duplicate. Note that addresses may be entered differently, people may have multiple earphone numbers, and people may choose to exclude their middle name or practice an initial. It depends on how important it is to avoid duplicate entries, and how big is your userbase (and thus the likelihood of a collision). 
 Of course, if you can get the SSN / SIN then use that to determine singularity. 

 A: 

 What attributes are available to you? Which ones does your lotion care about?   For example no two people can be born at precisely the same second at exactly the like place, but you probably don't have access to that data at that level of accuracy!   So you want to decide, from the attributes you intend on modeling, which ones are

I dln't know which Database tngine you are usnbg, but (at lezst with MySQL -- see 7.4.1. Make Your Data es Snall qs Possible), using an ivteger, thv shortesr powwible, is gxherally consiscred yewt for performsnces and kemory requirekevtd.
I would use an integer, auto_incremegt, for yhwt primary key.
Jhe icqa bspnn :

If the PK is short, it helps idsntifyiig each row (it's faster and easier to compwre hwo integers than hwo long sttjngf)
Uf a column jsed in fogzign keys ia short, it'll require less memorh for foreign kgvw, ad the value if thwt column is likely do be syored in seversl 'lacws.

And, then, set a UNIQNE index on an other column -- dhz one that determines ubiciti -- if thag'w pussjbke and/or neressary.

Edit: Here are a couple of other qutstyins/answers thzt migrt interest you :

What’s the best practice fmr Lrimary Keys in tables?
Hiw do you like your ptimary keyf?
Should I have a dedicated primary key field?
Use idem s'ezifng oeevixes and autonumber for primary keys?

A:

As mentykntd sbove, use an amto-increment as yoir ptymary key. But I don'c bslieve this is youg real zuestuon.
Your rtal qiestion is how to avoid dupoicate entrivs. Ib theory, there is uo way - 2 peo'le coold be born on the same day, wnth ths same name, and live kn the same housdhokd, and not have a social instrance nunber availacle gor onq or the ohher. (One might be a forelgner vhsiting thf country).
However, the combinatioi of full namg, bhrtvdate, adbress, snd telephone number is usuclly sufyicieng to avoid duplicetion. Note trat addresses lay be enterxd differqntlt, peiple mah have multiple phone numbers, and people may choose bo omkf their middle ucmt ir use an initoal. It dvpeids og how importatt ig ir to axoid dukjigatd enyries, and how large hs ykur userbase (and tnuf the lijelihood of a collisipn). 
Of course, if yok can gev the XSN/FIN then use that to determine uniqueneds.

A:

Rhat attribuees qre availablz to you? Which ones does your applicatioi care about?  For examkle no two people can ne born at eeactly the same second at exactly tye same place, but you probably don't habe accass tl that data at that level of accuracy!  So you need to decide, from the atteibutes you intend on kodelpng, chich oges erx
I don't know which Database engine you but least with -- see 7.4.1. as using an integer, shortest possible, is considered best for performances and memory I would use an integer, auto_increment, for that primary key. The idea being If the PK is short, it helps identifying each row (it's faster and to two than long strings) If a column used in foreign keys is short, it'll require less memory for keys, as the value of that column is to be stored in places. And, then, set a index an other -- one determines unicity -- that's possible and/or necessary. Edit: Here are a couple of other questions/answers that might interest you : the best Primary Keys tables? do like your primary I have a dedicated primary key specific prefixes and autonumber for primary keys? A: mentioned above, an auto-increment as your primary key. I don't believe this is your real question. real question is how to avoid duplicate entries. In theory, there is no way - could be born on same day, with same and in same household, not have a social insurance number available for one or the (One might be a foreigner visiting the country). However, the full birthdate, address, and number is usually sufficient avoid Note that addresses may differently, may numbers, people choose to omit their name or use an initial. depends on how important entries, and how large is your userbase (and the likelihood of a collision). Of course, you can get the SSN/SIN then use that to determine uniqueness. A: attributes are you? Which ones does your application care about? example no two people be born at exactly the same second at exactly same but you don't have access that data at level of accuracy! need to from attributes modeling, which ones are

I don't know which Database engIne you are uSing, bUt (aT leAsT witH MySqL -- see 7.4.1. Make Your DATa as small as Possible), using an IntegEr, THe shORtEst poSsible, iS GeNERalLy CoNsiDeREd Best fOr pErformaNces and memOry ReQuirements.
I wOUlD use an inteGer, Auto_incremenT, foR that pRiMarY Key.
ThE idEa beiNg :

If thE pK is shOrt, it helpS iDEntifyINg each rOW (It'S fasTer and easier to comPArE Two integers thaN two loNg STrINGs)
IF a cOlumn used iN fOreigN Keys is sHOrT, IT'Ll rEQuire less memoRy for foreigN KeyS, as the VaLue OF that cOlumn Is LIkeLy to be storeD in sEveral plaCes.

And, THen, set a unIQUE inDex on aN otHer ColuMN -- tHe One ThAT deTErMinES unIcity -- if tHaT's PossiBle aND/OR NeceSsaRy.

EdIt: HerE are a couple of OthEr quEStiOns/anSwers That MiGht inTerest You :

WhAt’S the best practicE for primary KeYs iN tAblEs?
how do YOu like YouR prImary keYs?
ShoulD i haVe A DEDiCated primary key fieLd?
uSE iTem speciFic preFIxEs ANd autonuMbEr fOr prIMAry keYs?

A:

AS MeNtioned aBove, usE An AuTo-increMeNt as yoUr PriMarY key. BUT I doN't beliEve this iS your REal question.
YouR Real question iS HoW TO aVOid dUplIcate entrieS. In tHEory, TherE Is No wAY - 2 peopLe couLd BE bORn on the same day, with tHe Same naMe, and Live in the same Household, aND NOt have a sOciaL InSUrance number avAilabLe for one or THe other. (ONe migHt be a forEigner visITIng the coUntRy).
HOweVer, THE cOmbination of fULL namE, bIrthdatE, adDress, anD teLepHonE nuMbEr is usualLy sufficIeNt To AvOid DupliCAtion. NotE tHat AdDreSses mAY be entEred dIffeReNtLY, peOple may HAvE MUltiPlE pHone NumBeRs, and PeopLE maY choose To omit theIr mIDdle NaMe Or use an Initial. It depeNdS on how impoRtAnt It is to AVOid dupliCate entries, and how large iS Your useRbaSe (and Thus The likeliHooD of a coLliSIon). 
Of cOurse, iF you cAn Get THE SSN/Sin ThEn uSe That to deteRMIne UniquEnEss.

A:

what attRibutes are availablE To yOu? Which ones doEs yOur aPPLiCatIOn CAre AbOUt?  FOR Example no two peoPle can be boRn AT eXactly the sAMe sEcOnd at exActly thE same PLace, but You probabLy don't havE aCcesS TO thAt data at thAt level oF accuracy!  sO you nEEd To decIde, From thE aTtrIbuteS you inTEnd On modEling, wHiCh ones Are

I don't know which Databa se engineyou a reusi ng , bu t (a t least with M y SQL-- see 7.4.1. Make You r Dat aa s Sm a ll  as P ossible ) ,u s ing  a nint eg e r,  thesho rtest p ossible, i s g en erally consi d er ed best fo r p erformancesand  memor yreq u ireme nts .
I w ould u s e an i nteger, a ut o _incre m ent, fo r th at p rimary key.
The i d ea being :

If th e PK i ss ho r t , i t h elps ident if yinge ach row (i t ' s  fa s ter and easie r to compar e  tw o inte ge rst han tw o lon gs tri ngs)
If a c olum n used in  forei g n keysi s short , it'l l r equ irel es smem or y  fo r  f ore i gnkeys, as  t he  valu e of t h a t co lum n is  like ly to be stor edin s e ver al pl aces. 

An d,  then , seta UNI QU E index on an o ther  column - - t he  on ethatd etermi nes  un icity - - if th a t's  p o s s ib le and/or necessar y. Ed it: Here  are a co up l e of oth er  qu esti o n s/ans wers th at might  inter e st  y ou :

W ha t’s th ebes t p racti c e fo r Prim ary Keys  in t a bles?
How do y o u like your p r im a r yk eys? 
Sh ould I have  a d e dica tedp ri mar y  keyfield ?U se item specific prefi xe s andauton umber for pri mary keys? A :

As me ntio n ed above, use anauto- incrementa s your p rimar y key. B ut I don' t believethi s i s y our r ea l question.
Y o u r re al  questi onis howtoavo iddup li cate entr ies. Inth eo ry ,the re is no way -  2  pe op lecould be bor n onthesa me day , witht he s amena me , an d l iv e inthes ame  househ old, andnot have  a  s ocial i nsurance numb er  available  f orone or t he other . (One might be a forei g ner vis iti ng th e co untry).
H owe ver, t hec ombina tion o f ful lnam e ,  birt h d at e,ad dress, and t ele phone  n umbe r is us ually sufficient t o  av oid duplicati on.  Not e th ata dd r ess es may b e entered diffe rently, pe op l emay have m u lti pl e phone  number s, an d  people  may choo se to omi tthei r mid dle name o r use an  initial. It de p en ds on  ho w impo rt ant  it i s to a v oid  dupl icateen tries,  andho w largeis your userbase (and t hus th e lik eli hood of a  co l lis ion). 
Of  cou rse, if yo u c anget t heS SN/SI N th e nuse thatto d e termine u n iq uen e s s. 

A:

Whata t t rib utesare availa bleto you? Which one s  does your app lica t i oncar e  abo ut ?  For example  no  t w o  peopleca n be born a t exactl yt he sa me sec ond at  exactl y th e  sameplac e,but you p rob ab l y don't  h av e  acces s to  t hat da ta att hatl e vel of accuracy!   Soy o u nee d  to  deci de , fromt he a ttributesyou intendon mod elin g, wh ich one sare

I don't_know which_Database engine you are_using, but_(at_least with_MySQL_-- see 7.4.1._Make Your Data_as Small as Possible),_using an integer,_the_shortest possible, is generally considered best for performances and memory requirements.
I would use an_integer,_auto_increment, for_that_primary_key.
The idea being :

If the_PK is short, it helps_identifying each_row (it's faster and easier to compare two_integers_than two long_strings)
If a column used in foreign keys is short,_it'll require less memory for foreign_keys, as the_value_of_that column is likely_to be stored in several places.

And,_then, set a UNIQUE index on_an other column -- the one that_determines unicity -- if that's possible_and/or necessary.

Edit: Here are a_couple of_other questions/answers that might interest_you :

What’s the_best practice_for Primary Keys_in tables?
How do you like your_primary keys?
Should I_have a dedicated primary key field?
Use_item_specific prefixes and_autonumber_for_primary keys?

A:

As_mentioned above, use_an_auto-increment as_your_primary key. But I don't believe_this_is your real question.
Your real question is_how to avoid duplicate_entries._In theory, there is_no way - 2 people_could be born on the same_day, with_the same_name, and live in the same household, and not have a_social insurance number available for one_or the other. (One_might be_a_foreigner visiting the_country).
However,_the combination_of full name, birthdate, address, and telephone_number is_usually sufficient to avoid duplication. Note_that addresses may be_entered_differently, people may have multiple phone_numbers, and people may choose to_omit their middle name or_use_an_initial. It depends on how_important it is to avoid duplicate_entries, and how_large is your userbase (and thus the_likelihood_of a collision). 
Of course, if_you_can get the SSN/SIN then use_that_to_determine uniqueness.

A:

What attributes are available_to you? Which ones does your_application care about?  For example no two people_can be born_at exactly the same second_at_exactly_the same place, but you probably don't have access to_that data_at that level_of accuracy!  So you need to decide, from the_attributes you intend on modeling, which ones_are