TL;DR Pro rozklad na danou normální formu je třeba postupovat podle publikovaného algoritmu.
PS Umělce z původního CD jsi nedostal přes normalizaci, protože jsi zavedl novou rubriku. Ale předpokládejme, že tabulka Artist má zřejmý význam. Proč si myslíte, že to "opět není ve třetí normální formě, pokud tomu rozumím"? Pokud umělec -> rok v původním CD, pak to platí také v Umělci. Ale pak je {artist} s {artist_id} CK (klíč kandidáta) umělce a Artist je v 3NF (a 5NF).
Z původní verze vaší otázky a aktuální verze máte navrhované CD základní tabulky se sloupci cd_id, title, group &year, obsahující n-tice, kde cd cd_id s názvem title vytvořila skupina skupina které vznikly v roce rok . Sloupec cd_id je jedinečný, proto je CK. FD {group} -> rok také platí.
Normalizace nezavádí nové názvy sloupců. Nahrazuje navrhovanou základní tabulku jinými, každá s menší podmnožinou svých sloupců, které se vždy připojují k tomu, jaká by byla její hodnota. Normalizace až do BCNF je založena na FD (funkční závislosti), které jsou také tím, co určují CK základní tabulky. Vaše otázka tedy neobsahuje rozklad. Možný rozklad připomínající vaši otázku, který může nebo nemusí mít nějaké konkrétní vlastnosti, by byl na tabulky se sadami sloupců {cd_id, title, group} a {group, year}.
Ostatní FD drží v originále. Některé drží kvůli tomu, jaké jsou sloupce; některé drží kvůli CK; někteří drží, protože {skupina} -> rok drží; obecně platí, že některé platí, protože všechny tři ano. A možná jiní drží kvůli tomu, jaké n-tice mají do vztahu jít a jaké situace mohou nastat. Musíte se rozhodnout pro každý možné FD, zda platí.
Samozřejmě vám to možná bylo řeklo že jediní, kteří drží, jsou ti, kteří za těchto okolností držet musí. Ale nebudete bylo jim řečeno, že jediné FD, které platí, je {skupina} -> rok, protože existují triviální FD a každá nadmnožina CK funkčně určuje každou sadu sloupců .
Jedna definice 3NF je, že relace je v 2NF a žádný non-prime sloupec není tranzitivně funkčně závislý na nějaké CK. (Všimněte si, že každá podmínka zahrnuje jiné definice.) Pokud chcete toto použít ke zjištění, zda je váš vztah v 3NF, musíte dále zjistit, co vše jsou CK. Můžete to udělat nejrychleji pomocí vhodného algoritmu, ale můžete jen vidět, které sady sloupců funkčně určují každý sloupec, ale neobsahují menší takovou sadu, protože to jsou CK. Poté zkontrolujte dvě podmínky v definici.
Pokud se chcete normalizovat na 3NF, musíte použít algoritmus pro rozklad na 3NF. Nevysvětlujete, jaký proces byste podle vás měli dodržovat. Pokud se však neřídíte osvědčeným algoritmem, pak jakékoli komponenty, které vyberete, se mohou nebo nemusí vždy připojit k originálu a mohou nebo nemusí být každá v nějaké konkrétní vyšší normální formě. Všimněte si, že příklady rozkladů které jste viděli, nejsou prezentace algoritmů rozkladu .
Definice NF (normální forma) dávají podmínky, které musí vztah splňovat, aby byl v tomto NF. Neřeknou vám, jak provést rozklad bez ztráty (zachování FD, pokud je to možné) na vztahy ve vyšších NF. Lidé vypracovali algoritmy pro vytváření rozkladů na konkrétní NF. (A rozklad na daný NF obecně nezahrnuje první rozklad na nižší NF. Procházení nižšími NF může ve skutečnosti zabránit tomu, aby se generovaly dobré rozklady s vyšším NF originálu, když se dostanete k rozkladu na vyšší NF.)
Možná si také neuvědomujete, že když některé FD drží, některé jiné musí držet. To druhé lze určit pomocí Armstrongových axiomů z prvního. Takže to, že jste se rozložili, abyste se zbavili konkrétního FD, jehož přítomnost porušuje konkrétní NF, neznamená, že tu nebyla spousta dalších, které jej porušovaly, se kterými jste se nezabývali. Mohou být přítomny v nových součástech. Nebo mohou být nepřítomné problematickým způsobem, takže jste je „nezachovali“, když jste mohli, což vedlo ke špatným návrhům.
Zjistěte o konkrétních algoritmech NF, a pokud jde o NF a samotné normalizaci, ve vysokoškolské/univerzitní učebnici/kurzu/prezentaci. Mnoho z nich je online.