\section{Καθορισμός Οντοτήτων}

\subsection{Restaurant}

Για κάθε κατάστημα αποθηκεύονται ένα μοναδικό κλειδί που είναι ο αύξων αριθμός του, η ονομασία, το είδος του, η τοποθεσία, το ωράριο λειτουργίας, το rating, ο αριθμός των rating που έχουν γίνει, ένας δείκτης που διαχωρίζει τα καταστήματα που έχουν προταθεί από αυτά που έχουν γίνει αποδεκτά από κάποιον διαχειριστή. Η τοποθεσία θα αποθηκεύεται σε μορφή συντεταγμένων γεωγραφικού πλάτους και μήκους σε μοίρες, ενώ για το ωράριο λειτουργίας θα αποθηκεύονται οι ώρες που το κατάστημα ανοίγει και κλείνει σε εικοσιτετράωρη μορφή.

\entityTable{restaurant}
{Οντότητα στην οποία αποθηκεύονται τα καταστήματα}
{Ισχυρή οντότητα}
{\underline{restaurant\_id} & \\
& restaurant\_name & \\
& restaurant\_category & \\
& \multirow[c]{2}{*}{restaurant\_coordinates} & restaurant\_longitude \\
& & restaurant\_latitude \\
& \multirow[c]{2}{*}{restaurant\_working\_hours} & restaurant\_opening \\
& & restaurant\_closing \\
& restaurant\_rating & \\
& restaurant\_reviews\_number & \\
& restaurant\_is\_approved & }{10}{restaurant}

\subsection{Food}

Η οντότητα αυτή αφορά στη συγκεκριμένη υλοποίηση ενός φαγητού από κάποιο κατάστημα. Για κάθε φαγητό αποθηκεύονται ο αύξων αριθμός του πιάτου, το όνομα του πιάτου, μία περιγραφή, οι θερμίδες του, το rating του, ο αριθμός των ratings, το μέγεθος του, ένας δείκτης που διαχωρίζει τα φαγητά που έχουν προταθεί από αυτά που έχουν γίνει αποδεκτά από κάποιον διαχειριστή.

\entityTable{food}
{Οντότητα στην οποία αποθηκεύονται τα πιάτα των καταστημάτων}
{Ισχυρή οντότητα}
{\underline{food\_id} & \\
& food\_name & \\
& food\_description & \\
& food\_calories & \\
& food\_rating & \\
& food\_reviews\_number \\
& food\_portion\_size \\
& food\_is\_approved}{8}{food}

\subsection{Drink}

Η οντότητα αυτή αφορά στη συγκεκριμένη υλοποίηση ενός ποτού από κάποιο κατάστημα. Για κάθε ποτό αποθηκεύονται ο αύξων αριθμός του ποτού, το όνομα του ποτού, μία περιγραφή, το rating του, ο αριθμός των rating, το μέγεθος του, ένας δείκτης που διαχωρίζει τα ποτά που έχουν προταθεί από αυτά που έχουν γίνει αποδεκτά από κάποιον διαχειριστή.

\entityTable{drink}
{Οντότητα στην οποία αποθηκεύονται τα ποτά των καταστημάτων}
{Ισχυρή οντότητα}
{\underline{drink\_id} & \\
& drink\_name & \\
& drink\_description & \\
& drink\_rating & \\
& drink\_reviews\_number & \\
& drink\_portion\_size & \\
& drink\_is\_approved}{7}{drink}

\subsection{Ingredient}

Για κάθε συστατικό αποθηκεύεται το όνομα του και ένας δείκτης που αναδεικνύει εάν περιέχει αλκοόλ.

\entityTable{ingredient}
{Οντότητα στην οποία αποθηκεύονται τα συστατικά}
{Ισχυρή οντότητα}
{\underline{ingredient\_name} \\
& ingredient\_has\_alcohol}{2}{ingredient}

\subsection{User}

Για κάθε χρήστη αποθηκεύονται ο αύξων αριθμός του, το email, το username, ο αριθμός των reviews που έχει κάνει, η ημερομηνία γέννησής του, το hashed password και το salt του password του.

\entityTable{user}
{Οντότητα στην οποία αποθηκεύονται οι χρήστες}
{Ισχυρή οντότητα}
{\underline{user\_id} \\
& user\_email \\
& user\_username \\
& user\_age \\
& user\_number\_of\_reviews \\
& user\_hashed\_password \\
& user\_salt}{7}{user}

\subsection{Diet}

Για κάθε δίαιτα αποθηκεύονται ένα μοναδικό κλειδί που είναι ο αύξων αριθμός της, το όνομα, μία περιγραφή, ένας δείκτης που διαχωρίζει τις δίαιτες που έχουν προταθεί από αυτές που έχουν γίνει αποδεκτές από κάποιον διαχειριστή.

\entityTable{diet}
{Οντότητα στην οποία αποθηκεύονται οι δίαιτες}
{Ισχυρή οντότητα}
{\underline{diet\_id} \\
& diet\_name \\
& diet\_description \\
& diet\_is\_approved}{4}{diet}

\subsection{Role}

Για κάθε ρόλο αποθηκεύονται ένα μοναδικό κλειδί, ο τίτλος του ρόλου, μία περιγραφή.

\entityTable{role}
{Οντότητα στην οποία αποθηκεύονται οι ρόλοι}
{Ισχυρή οντότητα}
{\underline{role\_id} \\
& role\_name \\
& role\_description}{3}{role}

\newpage

\subsection{Permission}

Για κάθε δικαίωμα αποθηκεύονται ένα μοναδικό κλειδί, μία περιγραφή.

\entityTable{permission}
{Οντότητα στην οποία αποθηκεύονται τα δικαιώματα}
{Ισχυρή οντότητα}
{\underline{permission\_id} \\
& permission\_description}{2}{permission}
