Autor Zpráva
Anonymní
Profil *
Dobrý den, poradil by mi někdo, v čem se liší asociace 1:1 a 1:N (případně N:1)?


Napřiklad pokud mám seznam měst a v další tabulce seznam státu, tak sloupec state_id je vazba 1:1, nebo 1:N?
Joker
Profil
Anonymní:
V tom, kolik prvků může být na každé straně vazby.

1:1 - K jednomu prvku na jedné straně se přiřadí vždy právě jeden prvek na druhé straně. Příkladem by mohla být třeba osoba a účet v aplikaci (pokud by jedna osoba mohla mít jen jeden uživatelský účet a přitom jeden účet příslušel právě jedné osobě). Obvykle se realizuje tak, že se údaje spojí do jednoho záznamu.

1:N - K jednomu prvku na jedné straně přísluší jeden nebo více prvků na druhé straně. Příkladem může být třeba vztah Uživatel - Příspěvek: Autorem příspěvku je vždy právě jeden uživatel, ale jeden uživatel může napsat víc příspěvků.

N:1 - To samé jako 1:N

M:N - K jednomu nebo více prvkům na jedné straně přísluší jeden nebo více prvků na druhé. Třeba na této diskusi by to mohl být vztah Moderátor - Kategorie: Jedna kategorie může mít více moderátorů a zároveň jeden moderátor může moderovat více než jednu kategorii.

Někdy není typ vazby vidět na první pohled a někdy může dokonce v reálném životě stejná vazba být realizovaná v různých aplikacích různými druhy vazeb.
Třeba vztah Osoba - Adresa (trvalé bydliště).
Jedna osoba má právě jedno trvalé bydliště a přitom na jedné adrese může bydlet víc lidí. Takže N:1.
Osoba ale může trvalé bydliště změnit. Pokud tedy aplikace má ukládat i historické údaje, je z toho vazba M:N.

Dodatek:
Napřiklad pokud mám seznam měst a v další tabulce seznam státu, tak sloupec state_id je vazba 1:1, nebo 1:N?
Jedno město patří do jednoho státu (sice de facto existují města rozložená ve více státech, třeba Český Těšín a Polský Těšín, ale obvykle se to bere jako dvě města) a v jednom státě může být více měst.
Takže Město - Stát je N:1
Anonymní
Profil *
Mockrát děkuji

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0