Súčasti konceptuálneho návrhu databázy

Relácie typu viaceré k viacerým (M:N)

Relácia typu viaceré k viacerým je zvláštnym typom vzťahu medzi dvomi entinami, pri ktorom môže byť nie len ľubovoľná inštancia prvej entiny spojená s nula, jednou alebo viacerými inštanciami druhej entiny, ale aj opačne. Na obrázku 2.1 môže byť príkladom relácie medzi entinami ObjednávokVýrobkov. Túto reláciu môžeme prečítať: „V ľubovoľnom okamžiku môže každá jedna objednávka obsahovať nula alebo viacej výrobkov a súčasne každý jeden výrobok sa môže vyskytovať na nula až viacerých objednávkach.“

Dáta spojené s touto konkrétnou reláciou sú v diagrame zaznačené pomocou kosoštvorca. Tieto dáta nazývame prienikové dáta (označované tiež aj ako väzobná entina, alebo v konkrétnej databáze spojovacia tabuľka) a samé o sebe nemajú zmysel – musíme ich vždy združiť s obidvomi entinami súčasne. Atribút objednaného množstva nemá napríklad zmysel, pokiaľ nevieme kto (teda ktorý zákazník) si objednal čo (teda aký výrobok). Ak sa opäť pozrieme na obrázok 1.7, poznáme tieto dáta v relačnom modeli uvedenej databázy ako tabuľku Rozpis objednávok. Prečo teda tento rozpis objednávok nepovažujeme za entinu? Odpoveď je jednoduchá: neodpovedá definícii entiny. V systéme totiž nezhromažďujeme dáta o jednotlivých riadkoch objednávky, pretože tieto riadky sú obyčajnými dátami o objednávke. 

Obrázok: Relácia typu M:N

V praxi sú ale relácie M:N veľmi bežné a s väčšinou z nich sú spojené nejaké prienikové dáta. Je trochu smola, že relačný model tieto relácie priamo nepodporuje. V konceptuálnom návrhu nie je s reláciou M:N žiadny problém, preto že tento typ návrhu je ešte nezávislý na konkrétnej technológii. Ako náhle chceme databázu postaviť ako relačnú, musíme v nej zrealizovať určité úpravy a konceptuálny model musíme premietnuť do zodpovedajúceho logického modelu. Riešením sú prienikové dáta v zvláštnej tabuľke (spojovacia, alebo prieniková tabuľka) a reláciu typu M:N definovať ako dve relácie typu 1:N, pričom prienikové tabuľka leží v obidvoch týchto reláciách na strane N. Popísaná úprava bola zachytená už na spomínanom obrázku 1.7