#include #include #include "Attribute.h" //Functional class Relation { string name; //The title the user gives it vector att; //A vector of the columns int size; public: Relation(string n, vector a) { name = n; att = a; size = a.size(); } int getSize() { return size; } void addTuple(vector tuple) { //Loop through the attribute columns for(int i = 0; i < att.size(); i++) { //Loop through the elements in the i'th column for(int j = 0; j < att[i].getValues().size(); j++){ //In this column, at this element's spot, assign an element from the tuple vector to this spot att[i].addRow(tuple[i]); size++; } } } void removeTuple(int tupleNum) { if (tupleNum > att[0].getSize() || tupleNum < 0) { cout<<"ERROR! index out of bound"< getAttributes() { return att; } void projectQuery(string input) { cout << "-----------Initiated Query Projection---------" << endl; for(int i = 0; i < att.size(); i++) { if(att[i].getName() == input) { cout << "Column Title: " << input << endl; for(int j = 0; j < att[i].getSize(); j++) { cout << att[i].getValues()[j] << endl; } break; } else cout << "Attribute input not valid" << endl; } } void display() { cout<<"\n\nDisplay of relation--------------------------------"< getDomains() { vector ds; for (int i = 0; i < size; ++i) { ds.push_back(att[i].getType()); } return ds; } };