Деректер базасын жобалаудың негіздері: "бір-біріне" (1:1) қатынасты қалай жасауға болады және бұл қатынас түрі қашан қажет екенін қарапайым тілмен, мысалмен түсіндіру
Бір-біріне (1:1) қатынас қашан қажет?
Егер A кестесінде жазба тек B кестесіндегі бір арнайы жазбаға тиесілі болса, және B кестесіндегі жазба тек A кестесіндегі бір арнайы жазбаға тиесілі болса, онда біз бір-біріне (1:1) қатынасты қарастырамыз.
Мысал ретінде, біз пайдаланушылар мен олардың паспорт мәліметтерін деректер базасында сақтауымыз керек делік. Паспорт мәліметтерін енгізу міндетті емес, сондықтан біз оларды пайдаланушылармен бір кестеде сақтамаймыз.
Бір адамда тек бір паспорт болуы мүмкін. Бұл кез келген бір арнайы паспорт туралы да айта алады: ол тек бір адамға тиесілі болуы мүмкін.
Бір-біріне (1:1) қатынасты қалай жасауға болады?
A кестесіне (біздің жағдайда, бұл пайдаланушылар кестесі) B кестесіндегі жазбаның ID (бірегей идентификатор) сақталатын өрісті қосу керек. Ал паспорт кестесіне, пайдаланушылар кестесіндегі жазба ID-сын сақтайтын өрісті қосу керек. Осылайша, біз бір-біріне қатынасты құрамыз, себебі біз қатынастың бір ғана бағанасында басқа кестеден бір ғана жазбаның ID-сын сақтай аламыз.
id - бұл әр кестеде әрбір жазба үшін бар уникалды (қайталанбайтын) номер (көпке-көп қатынас кестелері бар, бірақ біз кейінірек соны айтамыз). Бір кесте ішінде екі бірдей id бола алмайды, бұл бізге міндетті номері арқылы қажетті жазбаны дәл алуға мүмкіндік береді.
Бір-біріне (1:1) қатынастың көрінісі:
Архитектуралық тұрғыдан алғанда, бұл шынайы бір-біріне қатынасты білдірсе де, шынайы жағдайларда мұндай қатынас екі жақты форматта өте сирек орнатылады, себебі B кестесінде (паспорттар) A кестесіндегі жазбаның ID-сын сақтайтын өрісті көрсету жеткілікті.
Алайда, мұндай қатынасты құру кезінде біз бір-біріне қатынасты меңзеп тұрғанымызды ескеруіміз керек және паспорт кестесінде бір пайдаланушыға сілтеме жасайтын әр түрлі жазбаларды жасаудан аулақ болуымыз керек. Егер бұл айырмашылықты есте сақтау қиын болса, мысалда көрсетілгендей, екі жақты қатынасты жасаңыз.
Біз 1 to 1 қатынасын тиімді түрде 1 to M қатынасына қарапайым жолмен жасаудың жолын ұсына аламыз (бірақ оны тек 1 to 1 ретінде пайдаланып!):
Бір-біріне (1:1) қатынасымен қалай жұмыс істеу керек?
Мысал ретінде қарастырайық. Пайдалушылар кестесінен кейбір пайдаланушы деректерін және олардың паспорт мәліметтерін алу жолы:
SELECT
u.id,
u.email,
u.role,
p.firstname,
p.date_of_birth,
p.registration_address
FROM
user u,
passport p
WHERE
p.user = u.id
AND
c.user = ?;
Мұнда N орнына пайдаланушының уникалды номерін қоюымыз керек. Егер біз барлық пайдаланушылардың паспорт мәліметтерімен бірге барлығын алғымыз келсе, "p.user = u.id" жолының соңына нүктелі үтір қойып, төмендегі бәрін жоюымызға болады.
Қаласақ, реляциялық деректердің басқа түрлеріне, мысалы, көп-көп, және бір-көп қатынастарына қатысты ақпаратты көре аласыз. Егер бұл сізге пайдалы болса, мені лайк/ commentaires / менің оқу Youtube арнама жазылыңыз деп қолдай аласыз.