\section{Καθορισμός Συσχετίσεων}

\subsection{Restaurant offers Food}

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

\relationTable{restaurant\_offers\_food}
{Κάθε κατάστημα προσφέρει έναν αριθμό από φαγητά}
{Has-A, προσδιορίζουσα συσχέτιση της οντότητας food}
{1:N}
{Ολική συμμετοχή της οντότητας food \\
& Μερική συμμετοχή της οντότητας restaurant}
{1}
{-}
{restaurantOffersFood}

\subsection{Restaurant offers Drink}

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

\relationTable{restaurant\_offers\_drink}
{Κάθε κατάστημα προσφέρει έναν αριθμό από ποτά}
{Has-A, προσδιορίζουσα συσχέτιση της οντότητας drink}
{1:N}
{Ολική συμμετοχή της οντότητας drink \\
& Μερική συμμετοχή της οντότητας restaurant}
{1}
{-}
{restaurantOffersDrink}

\newpage

\subsection{Food has Ingredient}

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

\relationTable{food\_has\_ingredient}
{Κάθε φαγητό που προσφέρεται αποτελείται από έναν αριθμό συστατικών}
{Has-A συσχέτιση}
{M:N}
{Μερική συμμετοχή της οντότητας food \\
& Μερική συμμετοχή της οντότητας ingredient}
{1}
{-}
{foodHasIngredient}

\subsection{Drink has Ingredient}

Τα ποτά αποτελούνται από ένα ή περισσότερα συστατικά, ενώ τα ίδια συστατικά μπορεί να χρησιμοποιούνται από πολλά ποτά. Για τη συσχέτιση αυτή δεν απαιτούνται επιπλέον γνωρίσματα.

\relationTable{drink\_has\_ingredient}
{Κάθε ποτό που προσφέρεται αποτελείται από έναν αριθμό συστατικών}
{Has-A συσχέτιση}
{M:N}
{Μερική συμμετοχή της οντότητας drink \\
& Μερική συμμετοχή της οντότητας ingredient}
{1}
{-}
{drinkHasIngredient}

\subsection{User prohibits Ingredient}

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

\relationTable{user\_prohibits\_ingredient}
{Οι χρήστες μπορούν να αποκλείσουν έναν αριθμό από συστατικά}
{Has-A συσχέτιση}
{M:N}
{Μερική συμμετοχή της οντότητας user \\
& Μερική συμμετοχή της οντότητας ingredient}
{1}
{-}
{userProhibitsIngredient}

\newpage

\subsection{User follows Diet}

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

\relationTable{user\_follows\_diet}
{Οι χρήστες μπορεί να ακολουθούν μία ή περισσότερες δίαιτες}
{Has-A συσχέτιση}
{M:N}
{Μερική συμμετοχή της οντότητας user \\
& Μερική συμμετοχή της οντότητας diet}
{2}
{-}
{userFollowsDiet}

\subsection{User rates Food}

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

\relationTable{user\_rates\_food}
{Οι χρήστες μπορούν να αξιολογήσουν ένα ή περισσότερα φαγητά}
{Has-A συσχέτιση}
{M:N}
{Μερική συμμετοχή της οντότητας user \\
& Μερική συμμετοχή της οντότητας food}
{4}
{rating\_grade \\
& rating\_text \\
& rating\_date \\
& rating\_portion\_size}
{userRatesFood}

\newpage

\subsection{User rates Drink}

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

\relationTable{user\_rates\_drink}
{Οι χρήστες μπορούν να αξιολογήσουν ένα ή περισσότερα ποτά}
{Has-A συσχέτιση}
{M:N}
{Μερική συμμετοχή της οντότητας user \\
& Μερική συμμετοχή της οντότητας drink}
{4}
{rating\_grade \\
& rating\_text \\
& rating\_date \\
& rating\_portion\_size}
{userRatesDrink}

\subsection{User rates Restaurant}

Οι χρήστες μπορούν να αξιολογήσουν ένα ή περισσότερα καταστήματα, ενώ τα ίδια καταστήματα μπορεί να αξιολογηθούν από πολλούς χρήστες. Κάθε χρήστης μπορεί να κάνει μόνο μία κριτική για ένα κατάστημα. Για τη συσχέτιση αυτή απαιτούνται επιπλέον η βαθμολογία, το κείμενο, η ημερομηνία της αξιολόγησης και η δίαιτα με βάση την οποία αξιολογεί το κατάστημα (ο χρήστης μπορεί να επιλέξει μια διαφορετική δίαιτα κάθε φορά).

\relationTable{user\_rates\_restaurant}
{Οι χρήστες μπορούν να αξιολογήσουν ένα ή περισσότερα καταστήματα με βάση μια δίαιτα}
{Has-A τριαδική συσχέτιση}
{M:N:1}
{Μερική συμμετοχή της οντότητας user \\
& Μερική συμμετοχή της οντότητας restaurant \\
& Μερική συμμετοχή της οντότητας diet}
{4}
{rating\_grade \\
& rating\_text \\
& rating\_date\\
& rating\_accessibility}
{userRatesRestaurant}

\newpage

\subsection{User owns Restaurant}

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

\relationTable{user\_owns\_restaurant}
{Ένας χρήστης μπορεί να είναι ιδιοκτήτης ενός καταστήματος}
{Has-A συσχέτιση}
{1:1}
{Μερική συμμετοχή της οντότητας user \\
& Μερική συμμετοχή της οντότητας restaurant}
{1}
{-}
{userOwnsRestaurant}

\subsection{Diet prohibits Ingredient}

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

\relationTable{diet\_prohibits\_ingredient}
{Οι δίαιτες μπορεί να αποκλείουν ένα ή περισσότερα συστατικά}
{Has-A συσχέτιση}
{M:N}
{Μερική συμμετοχή της οντότητας diet \\
& Μερική συμμετοχή της οντότητας ingredient}
{1}
{-}
{dietProhibitsIngredient}

\subsection{User has Role}

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

\relationTable{user\_has\_role}
{Κάθε χρήστης έχει ένα ρόλο}
{Has-A συσχέτιση}
{N:1}
{Ολική συμμετοχή της οντότητας user \\
& Μερική συμμετοχή της οντότητας role}
{1}
{-}
{userHasRole}

\newpage

\subsection{Role has Permission}

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

\relationTable{role\_has\_permission}
{Κάθε ρόλος έχει ορισμένα δικαιώματα}
{Has-A συσχέτιση}
{M:N}
{Ολική συμμετοχή της οντότητας role \\
& Μερική συμμετοχή της οντότητας permission}
{1}
{-}
{roleHasPermission}
