Προς το περιεχόμενο
  • 0
Συνδεθείτε  
we_will_rise

Γρίφος στο σχεδιασμό βάσης δεδομένων...

Ερώτηση

Καλησπέρα,

 

έχουμε τις οντότητες Task και Asset, όπου Task είναι ένα οποιοδήποτε task (πχ. ftp task, rename task, copy task, κλπ) και Asset είναι ένα οποιοδήποτε αρχείο (το μόνο του πεδίου είναι το path του αρχείου). Θέλω:

 

1 task να έχει πολλά Assets ως Input

1 task να έχει πολλά Assets ως Output

1 Asset να έχει 1 task ως ParentTask (αυτό του οποίου είναι output, που το δημιούργησε δηλαδή)

1 Asset να έχει πολλά task ως UsedByTasks (τα task στα οποία είναι input)

 

Για να το θέσω πιο απλά, ένα task έχει πολλά input και πολλά output, αλλά ένα asset δημιουργείται από μόνο ένα task ενώ μπορεί να είναι input σε πολλά.

 

Η ερώτηση είναι:

πως πρέπει να θέσω τα restrictions, ώστε κάθε φορά που διαγράφω ένα task, να διαγράφονται τα assets που είχε ως output ???

 

Η βάση σχεδιάζετε σε Entity Framework και τρέχει σε MySQL

 

Ακολουθούν στιγμιότυπα:

iymklj.jpg

 

 

ozml50.jpg

 

Ευχαρίστως να αλλάξω το design (να χρησιμοποιήσω διαφορετικά πεδία) αν απαιτείται...

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

6 απαντήσεις σε αυτή την ερώτηση

Προτεινόμενες αναρτήσεις

  • 0

Πινακες InputAssets και OutputAssets ιεραρχίες ISA με τον Asset + πίνακες task_has_InputAssets, task_has_OutputAssets

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Πινακες InputAssets και OutputAssets ιεραρχίες ISA με τον Asset + πίνακες task_has_InputAssets, task_has_OutputAssets

 

Μπορείς να το αναλύσεις λίγο σε παρακαλώ;

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Φαντάζομαι το project που φτιάχνεις είναι αντικειμενοστρεφές ε; Σκέψου οτι ο  πίνακας Asset είναι σα μια abstract κλάση δε μπορει να δημιουργήσει αντικείμενο απο μόνος του πρέπει να τον "σπάσεις" να τον κανονικοποιήσεις περαιτέρω.

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Ναι είναι αντικειμενοστραφές.. Την κανονικοποίηση όμως νομίζω πως την αναλαμβάνει το entity framework απ'τη στιγμή που θέτω πολλά προς πολλά σχέση (να φτιάξει τρίτο πίνακα) και πράγματι γίνεται αυτό. Αλλά όταν πάω να διαγράψω κάποιο task (και κατά συνέπεια τα asset του) κρασάρει επείδη foreign key constraints κλπ κλπ

 

Η σχέση που έχω θέσει στο foreign key InputAsset είναι ON UPDATE, ON DELETE CASCADE

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Σε περίπτωση που δεν ακολουθήσεις το ER model μου ο περιορισμός είναι κάπως έτσι:

OutputAsset datatype foreign key references table(OutputAsset) on delete cascade

γιατι ζητάς τα OutputAsset να διαγράφονται.

Τι datatype έχεις τα InputAsset-OutputAsset; Σε τι γλώσσα γράφεις το project;

Επίσης τι project είναι άσκησης πανεπιστημίου  ή αληθινό project;

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

<p>Σε περίπτωση που δεν ακολουθήσεις το ER model μου ο περιορισμός είναι κάπως έτσι:</p>

<p>OutputAsset datatype foreign key references table(OutputAsset) on delete cascade</p>

<p>γιατι ζητάς τα OutputAsset να διαγράφονται.</p>

<p>Τι datatype έχεις τα InputAsset-OutputAsset; Σε τι γλώσσα γράφεις το project;</p>

<p>Επίσης τι project είναι άσκησης πανεπιστημίου ή αληθινό project;</p>

 

Tα inputAsset & outputAsset είναι στον πίνακα Task ως associations. Δεν είναι scalar properties!

 

Αυτο ακριβώς που είπες το EF δεν το δέχεται σε σχέση πολλά προς πολλά.

 

Είναι κανονικό project και γραφουμε C# σε mvs 2012

 

Sent from my iPhone using Insomnia

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε έναν λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι εύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
Συνδεθείτε  
×
×
  • Δημιουργία νέου...

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.