0

Ich habe ein paar Probleme bei der Suche nach allen richtigen FDs mit einem relationalen Schema. Insbesondere unter Berücksichtigung der folgenden Datenbank, die infomration über Benutzer abgegeben Rezepte und Zutaten speichert:Finden Sie funktionale Abhängigkeiten von Rezept-Inhaltsstoffen und BCNF-Zerlegung

Recipe (userID, code, title, description, username, email, vegan, vegetarian, difficulty) 
    with (userID, code) PK 
Ingredient (code, name, description, vegan, vegetarian) with (code) PK 
RecipeIngredient (userID, recipeCode, ingredientCode, recipeTitle, ingredientName, quantity) 
    with (userID, recipeCode, ingredientCode) PK 

Keys userID, recipeCode in recipeIngredient sind Fremdschlüssel Referenzierung Rezept und ingredientCode ist ein Fremdschlüssel Referenzierung Zutaten. Jeder Benutzer hat eine einzelne E-Mail-Adresse und einen Benutzernamen. Wenn ein Rezept oder eine Zutat vegan sind, dann sind sie auch Vegetarier.

Ich muss entscheiden, ob die oben genannte Datenbank gut entworfen ist (dh in BCNF) und wenn nicht, restrukturiere sie in BCNF.

Wie kann ich alle FDs finden?

+0

Was bedeutet der angegebene Hinweis, was das Verfahren ist? Wie hast du es bisher angewendet? Wo steckst du fest? PS-PKs sind irrelevant, Kandidatenschlüssel sind wichtig. – philipxy

+1

FDs werden basierend auf einem Verständnis der Domänen- und Systemanforderungen ausgewählt. Beispieldaten sind oft nützlich, um zu sehen, welche FDs halten oder nicht halten. Wenn Sie nur Tabellen- und Spaltennamen haben, schlage ich vor, dass Sie (a) die Rolle des Datenmodellierers übernehmen, das System mit relevanten Interessenvertretern diskutieren, die Anforderungen analysieren und dann geeignete FDs auswählen, oder (b) das Projekt an seine Quelle zurückgeben unzureichende Information. – reaanb

+0

Wurden Sie * diese PKs/CKs * gegeben? Suchen Sie nach der Definition des Kandidatenschlüssels. Wenn Sie wissen, dass Spalten ein CK sind, kennen Sie bestimmte FDs. Das liegt daran, dass die FDs die CKs bestimmen. Und auch, wenn Sie diese PKs/CKs nicht erhalten haben, warum denken Sie, dass sie CKs sind? – philipxy

Antwort

0

Also, ich habe versucht, die folgenden FDs, um herauszufinden:

Code -> Code, Name, decription, vegan, vegetarisch (für die Beziehung "Zutaten", die darauf schließen lassen, dass Zutaten in BCNF ist).

Dann:

userID -> E-Mail, Benutzername

Rezept -> Titel, Beschreibung, vegan, vegetarisch, Schwierigkeit

recipeCode -> ingredientCode, ingredientNAme, Menge

Sind diese richtig? Gibt es andere FDs? Ich kann sie nicht wirklich herausfinden. Goven die FDs, die ich gefunden habe, kann ich sagen, ob die DB in BCNF ist? Vielen Dank für Ihre Hilfe!

+0

Wenn wir über FDs sprechen, ist es immer in Bezug auf eine Relation (Wert oder Variable). Sie müssen daher die FDs für jede Relation einzeln auflisten. (Gleichermaßen haben FKs nichts mit Normierung zu tun.) (Auch ein FK ist von einer Tabellen- & Spaltenliste zu einer Tabellen- & Spaltenliste.) Bitte gehen Sie weiter zu meinem Kommentar zu Ihrer Frage. (Wenn Sie keine Definition von FD haben, wie können Sie sie finden?) Wenn Sie denken, FDs halten oder nicht halten, sagen Sie warum. ZB "Jeder Benutzer hat eine einzige E-Mail ..."; in einer Tabelle, die Zeilen enthält, für die "... Benutzer U E-Mail E ..." hat, haben alle Zeilen mit einem gegebenen U das gleiche E; also U -> E gilt. – philipxy