def validateDecompositionSplit(fds, mvds, splitrelation, newfirstrelation, newsecondrelation, targetnf): fdsInR = DBnormalizer.fdsInRelation(fds, splitrelation) mvdsInR = DBnormalizer.mvdsInRelation(mvds, splitrelation) normalforms = DBnormalizer.getNormalForms(splitrelation, fdsInR, mvdsInR) if targetnf == "BCNF": i=3 else: i=4 if not normalforms[i]: #splitrelation not in BCNF/4NF, user is correct so far return validateDecompositionSplitNewRelations(fdsInR, mvdsInR, splitrelation, newfirstrelation, newsecondrelation, targetnf) else: #splitrelation already in BCNF/4NF, user is wrong, relation must not be splitted return False
currentfds) inputpanel = views.inputToString(relation, currentfds, mvds, additionalFds, additionalMvds, "default", candidatekeys) if (step == '5'): currentfds, currentmvds = DBnormalizer.parseInputFDsMVDs( str(form['currentfds'].value)) relations = DBnormalizer.generateNewRelations(currentfds) numberOfSteps = numberOfSteps + 1 quizform = quizForms.addKeyRelation(numberOfTries, numberOfSteps, relationString, fdsString, currentfds, relations) inputpanel = views.inputToString(relation, currentfds, mvds, additionalFds, additionalMvds, "default", candidatekeys) if DBnormalizer.getNormalForms(relation, fds, mvds)[2]: info = views.getInfoMessageBox( "Die Relation ist zwar schon in 3NF, führe den Algorithmus zur Übung trotzdem aus..." ) if (step == '6'): currentfds, currentmvds = DBnormalizer.parseInputFDsMVDs( str(form['currentfds'].value)) #validate addition of relation with key try: addkeyrelation = form.getvalue('addkeyrelation') keyrelation = str(form['newrelation'].value).replace(" ", "") except KeyError: keyrelation = "" relations = DBnormalizer.generateNewRelations(currentfds) newrelations = inputValidation.validateAddKeyRelation( relation, fds, relations, keyrelation)
alert = views.getSuccessMessageBox("Richtig!") relations = DBnormalizer.generateNewRelations(canonicalcover) numberOfTries = numberOfTries - 1 quizform = quizForms.formRelationSchemas(numberOfTries, numberOfSteps, relationString, fdsString, canonicalcover, relations) inputpanel = views.inputToString(relation, canonicalcover,mvds, additionalFds, "default", candidatekeys) else: alert = views.getErrorMessageBox("Leider falsch!") quizform = quizForms.canonicalCoverCollapse(numberOfTries, numberOfSteps, relationString, fdsString, currentfds) inputpanel = views.inputToString(relation, currentfds,mvds, additionalFds, "default", candidatekeys) if (step=='5'): currentfds, currentmvds = DBnormalizer.parseInputFDsMVDs(str(form['currentfds'].value)) relations = DBnormalizer.generateNewRelations(currentfds) numberOfSteps = numberOfSteps + 1 quizform = quizForms.addKeyRelation(numberOfTries, numberOfSteps, relationString, fdsString, currentfds, relations) inputpanel = views.inputToString(relation, currentfds,mvds, additionalFds, "default", candidatekeys) if DBnormalizer.getNormalForms(relation, fds, mvds)[2]: info = views.getInfoMessageBox("Die Relation ist zwar schon in 3NF, führe den Algorithmus zur Übung trotzdem aus...") if (step=='6'): currentfds, currentmvds = DBnormalizer.parseInputFDsMVDs(str(form['currentfds'].value)) #validate addition of relation with key try: addkeyrelation = form.getvalue('addkeyrelation') keyrelation = str(form['newrelation'].value).replace(" ", "") except KeyError: keyrelation = "" relations = DBnormalizer.generateNewRelations(currentfds) newrelations = inputValidation.validateAddKeyRelation(relation, fds, relations, keyrelation) if newrelations: alert = views.getSuccessMessageBox("Richtig!") numberOfSteps = numberOfSteps + 1 quizform = quizForms.removeRedundantRelations(numberOfTries, numberOfSteps, relationString, fdsString, currentfds, newrelations, keyrelation)