def validatePrimaryKeys(relations, fds, primarykeys): keysAndFds = DBnormalizer.getKeysAndFDsMVDsOfRelations(relations, fds) valid = True for i, pk in enumerate(primarykeys): if pk not in keysAndFds[i]['keys']: valid=False return valid
def validatePrimaryKeys(relations, fds, primarykeys): keysAndFds = DBnormalizer.getKeysAndFDsMVDsOfRelations(relations, fds) valid = True for i, pk in enumerate(primarykeys): if pk not in keysAndFds[i]['keys']: valid=False return valid
currentrelationsStrings = str( form['currentrelations'].value).split(",") for r in currentrelationsStrings: relations.append(views.stringToRelation(r)) relations = DBnormalizer.removeRedundantSchemas(relations[:]) for i in range(len(relations)): try: primarykey = set(str( form['pk' + str(i)].value)) | set(EMPTY_SET) except KeyError: primarykey = set(EMPTY_SET) primarykeys.append(primarykey) if inputValidation.validatePrimaryKeys(relations, currentfds, primarykeys): alert = views.getSuccessMessageBox("Richtig!") keysAndFDs = DBnormalizer.getKeysAndFDsMVDsOfRelations( relations, currentfds) numberOfTries = numberOfTries - 1 quizform = quizForms.formResultSyntheseAlgorithm( numberOfTries, numberOfSteps, relationString, fdsString, currentfds, relations, keysAndFDs, primarykeys) else: alert = views.getErrorMessageBox("Leider falsch!") quizform = quizForms.choosePrimaryKeys(numberOfTries, numberOfSteps, relationString, fdsString, currentfds, relations) inputpanel = views.inputToString(relation, currentfds, mvds, additionalFds, additionalMvds, "default", candidatekeys) if (step == '9'): additionalFds = DBnormalizer.getAdditionalFDs(fds)
#validate relation primary keys primarykeys = [] relations = [] currentrelationsStrings = str(form['currentrelations'].value).split(",") for r in currentrelationsStrings: relations.append(views.stringToRelation(r)) relations = DBnormalizer.removeRedundantSchemas(relations[:]) for i in range(len(relations)): try: primarykey = set(str(form['pk'+str(i)].value))|set(EMPTY_SET) except KeyError: primarykey = set(EMPTY_SET) primarykeys.append(primarykey) if inputValidation.validatePrimaryKeys(relations, currentfds, primarykeys): alert = views.getSuccessMessageBox("Richtig!") keysAndFDs = DBnormalizer.getKeysAndFDsMVDsOfRelations(relations, currentfds) numberOfTries = numberOfTries - 1 quizform = quizForms.formResultSyntheseAlgorithm(numberOfTries, numberOfSteps, relationString, fdsString, currentfds, relations, keysAndFDs, primarykeys) else: alert = views.getErrorMessageBox("Leider falsch!") quizform = quizForms.choosePrimaryKeys(numberOfTries, numberOfSteps, relationString, fdsString, currentfds, relations) inputpanel = views.inputToString(relation, currentfds, mvds, additionalFds, "default", candidatekeys) if (step=='9'): additionalFds = DBnormalizer.getAdditionalFDs(fds) fds.extend(additionalFds) try: targetnf = str(form['targetnf'].value).replace(" ", "").replace("\r", "").replace("\n", "") except KeyError: targetnf = "BCNF" try: splitrelationIndex = int(form['splitrelation'].value)