DBS - duplicitní cizí klíč
Ve své semestrální práci mám entitu (Point), která má vztah 1:N ke dvěma slabým entitám (Score --- LineUp, PlayerInTeam), které jsou identifikovány vztahem k jedné společné (Team) a jedné cizí entitě (Torunament/Player). Výsledkem je, že u entity Point mám dvakrát cizí klíč TEAMID, o kterém ale vím, že je stejné hodnoty. Je nějaká možnost, jak SqlDeveloperu vysvětlit, že se jedná vždy o stejný údaj? Nebo je to tak v pořádku? Nebo toto indikuje, že mám špatně udělaný návrh?
Díky moc za radu.
Vzhledem k tomu, že nerozumím těm jednotlivým entitám, je obtížné odpovědět. Offhand bych se ale přikláněl k tomu špatného návrhu. Z jakého důvodu je ten vztah mezi LineUp a Team?
Josef Kokeš ( 2015-12-08 14:06:15 +0100 )editTo schéma není celé, chybí tam labely hran, které napoví sémantiku toho, kterého vztahu chybí tam diskuse rizik, která navozují smyčky, které jste si ve schématu pilně natropil. Ve svém dotazu také mícháte pojmy ze dvou různých modelů. Na konceptuální úrovni žádné cizí klíče nejsou. Vsadím se, že některé smyčky by tam nemusely být. Když tvrdíte, že z obou větví smyčky se nutně musí setkat stejné instance týmu (v relační vrstvě pak stejné hodnoty id-ček týmu), tak jedna z větví je nadbytečná. Když na ní budete trvat, tak byste na úrovni ERM schématu mohl Vámi formulované tvrzení dát do komentáře. Hlídání stejnosti hodnot id-ček týmu pak na nižší úrovni zadat check constraint. Ale nedoporučuji na té smyčce trvat a takto ošetřovat důsledky chybného návrhu. Myslím, že byste měl zajít na osobní konzultaci ke svému cvičícímu, kterým je kolega Pavlíček. Ivan Halaška
halaska ( 2015-12-14 10:45:54 +0100 )editLabely hran dodělám, s diskuzí smyček počítám a práci budu s panem Pavlíčkem diskutovat zítra, mezitím jsem ale duplicitu klíču vyřešil pomocí správného nastavení "Overlapping Attributes", může to tak být správně? Již jsem se pokoušel počet vazeb redukovat, ale dospěl jsem k závěru, že jsou všechny esenciální a odstraněním jakékoliv z nich bych přicházel o informace. Votruba
Martin Votruba ( 2015-12-14 15:58:50 +0100 )edit