/functional_dependencies

A CLI for basic algorithms on functional dependencies

Primary LanguageC++

functional_dependencies

A CLI for basic algorithms on functional dependencies. Most of algorithm are from A Guided Tour of Relational Databases and Beyond by Levene, Mark and Loizou, George.

See the lessons here (in French) https://www.youtube.com/channel/UCp6q0_DxUdNXhoc2Oue1w9g/videos

Basic algorithms on sets of Functional Dependencies (FD)
Attributes are strings, FD are written "attr_A attr_B -> attr_C attr_A"
Uses the algorithm by Gely et al. to enumerate closed sets [Gely10]

Options:
  -h [ --help ]               Help screen
  -i [ --input ] arg          Input file: a set of FD
  -a [ --attrs ] arg          A set of attributes
  -o [ --operation ] arg (=4) Operation to compute

Available operations:
	SCHEMA: computes the set of attributes appearing in the input
	CLOSURE: computes the closure of the given attributes
	MINIMIZE: minimizes the given set of FDs
	CLOSED: computes the sets of closed sets
	ARMSTRONG: generates an Armstrong's base in SQL

[Gely10] Gély, A.; Medina, R. & Nourine
         About the Enumeration Algorithms of Closed Sets