<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server (και άλλες databases)</title><link>https://www.dotnetzone.gr:443/cs/forums/28/ShowForum.aspx</link><description>Θέματα που αφορούν τον SQL Server (7.0, 2000, 2005) αλλά και Oracle, Access, DB2, MySQL, κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21874.aspx</link><pubDate>Fri, 08 Dec 2006 19:50:13 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21874</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21874.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21874</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/mistblue/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;moruin wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Καλημέρα.&lt;br&gt;
Διορθώστε με αν κάνω λάθος, αλλά η συζήτηση γίνεται σε θεωρητικό επίπεδο. Δε πιστεύω ότι υπάρχει εταιρεία software στην Ελλάδα, αλλά και στον κόσμο, που να θεωρεί ότι αξίζει να σπαταλήσει χρόνο και ανθρώπινο δυναμικό για να φτιάξει κάτι που τα RDBMS κάνουν έτσι και αλλιώς. Ασφαλώς δε μιλάω για εταιρείες του μεγέθους της MS ή της SAP.&lt;br&gt;
&lt;br&gt;
Από την άλλη ασφαλώς και είναι πρόκληση για ένα developer να κάνει κάτι τέτοιου μεγέθους. Σε όποιον το δοκιμάσει του εύχομαι καλό κουράγιο και υπομονή.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Δεν ξέρω αν κάνεις λάθος, αλλά μάλλον το ίδιο υποστηρίζουμε όλοι.&lt;br&gt;Βέβαια όλοι εξ ορισμού ασχολούμαστε με το extreme sport του development και πολλές φορές μπαίνουμε στην παγίδα να κάνουμε τρελά πράγματα!&lt;br&gt;</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21869.aspx</link><pubDate>Fri, 08 Dec 2006 19:09:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21869</guid><dc:creator>moruin</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21869.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21869</wfw:commentRss><description>Καλημέρα.&lt;br /&gt;
&lt;br /&gt;
Διορθώστε με αν κάνω λάθος, αλλά η συζήτηση γίνεται σε θεωρητικό επίπεδο. Δε πιστεύω ότι υπάρχει εταιρεία software στην Ελλάδα, αλλά και στον κόσμο, που να θεωρεί ότι αξίζει να σπαταλήσει χρόνο και ανθρώπινο δυναμικό για να φτιάξει κάτι που τα RDBMS κάνουν έτσι και αλλιώς. Ασφαλώς δε μιλάω για εταιρείες του μεγέθους της MS ή της SAP.&lt;br /&gt;
&lt;br /&gt;
Από την άλλη ασφαλώς και είναι πρόκληση για ένα developer να κάνει κάτι τέτοιου μεγέθους. Σε όποιον το δοκιμάσει του εύχομαι καλό κουράγιο και υπομονή.</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21866.aspx</link><pubDate>Fri, 08 Dec 2006 17:15:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21866</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21866.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21866</wfw:commentRss><description>Βάσεις Δεδομένων 4ου έτους! Είχα προλάβει και τα ιεραρχικά συστήματα και τα δικτυακά συστήματα στην εξεταστέα ύλη! Δεν είναι τυχαίο εξάλλου που στον SQL Server τα foreign keys αναφέρονται σαν Foreign Key Constraints, και όχι relations! Βέβαια, το μπλέκουν το πράγμα όταν στο κυρίως reference τα αναφέρουν ως constraints, και στα visual εργαλεία τα αναφέρουν ως relations! &lt;br /&gt;
&lt;br /&gt;
Παλαιότερα πάντως (10 χρόνια πριν και βάλε) τα foreign keys κοστίζανε σε lookups, γι αυτό μπορούσες να ορίσεις ότι θα υπάρχουν αλλά δεν θα έχουν ισχύ. Δίναν πάντα και ένα utility  το οποίο έλεγχε τα constraints το βράδυ και ανέφερε errors. Στον SQL Server αυτό είναι το "DBCC CHECKCONSTRAINTS () WITH ALL_CONSTRAINTS". &lt;br /&gt;
&lt;br /&gt;
Ένας λόγος πάντως που γίνεται μπέρδεμα πλέον μεταξύ constraints και relations είναι ότι τα εργαλεία των βάσεων για physical database diagrams τα εμφανίζουν σαν relations. Στα κλασσικά διαγράμματα ERD και ORM, οι σχέσεις υλοποιούνται με πίνακες αν είναι M-N και με FKs αν είναι 1-N, αλλά ποτέ δεν αναφέρονται τα FKs ως relations. Δεν έχω καμμία βάση υπόψη όμως που να περιέχει εργαλεία για ER διαγράμματα, τουλάχιστον όχι στο βασικό πακέτο. Ο Oracle Designer τα δίνει, αλλά αυτός είναι extra.</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21864.aspx</link><pubDate>Fri, 08 Dec 2006 09:38:35 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21864</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21864.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21864</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/mistblue/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;pkanavos wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Τα Foreign keys ΔΕΝ είναι relationships! Τα relationships καθορίζονται από τους πίνακες, όχι τα foreign keys. Τα foreign keys είναι INTEGRITY CONSTRAINTS! Όταν κανείς ορίζει ένα foreign key λέει ουσιαστικά ότι οι τιμές ενός πεδίου μπορούν να πάρουν τιμές που ορίζονται από ένα άλλο πίνακα. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;Είναι πολύ ενδιαφέρουσα αυτή η προσέγγιση. Αν και στον sql server - φαντάζομαι και σε άλλα rdbms - μπορείς να ορίσεις foreign keys χωρίς integrity constraints, οπότε τότε τα εκφυλίζεις σε απλά relations.&lt;br&gt;</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21856.aspx</link><pubDate>Fri, 08 Dec 2006 06:02:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21856</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21856.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21856</wfw:commentRss><description>Κι όμως, θυμάμαι ότι επειδή τα μεγάλα ιεραρχικά και δικτυακά συστήματα είχαν προβλήματα, δημιουργήθηκε το σχεσιακό μοντέλο. Ο πιο σημαντικός λόγος ήταν ότι το ιεραρχικό σύστημα περιορίζει τις σχέσεις που μπορούν να έχουν τα δεδομένα μόνο στις ιεραρχίες. Όταν θέλεις να έχεις περισσότερους από ένα τρόπους πρόσβασης στα δεδομένα, τα ιεραρχικά συστήματα αρχίζουν να εμφανίζουν προβλήματα. Αυτός ήταν και ένας από τους λόγους που οι object βάσεις δεν κατάφεραν να γίνουν mainstream αλλά κατέκτησαν κυρίαρχες θέσεις σε niche εφαρμογές, όπως τα συστήματα ελέγχου. &lt;br /&gt;
&lt;br /&gt;
Διαπίστωσα κιόλας ότι νωρίτερα είπα μια μπούρδα. Τα Foreign keys ΔΕΝ είναι relationships! Τα relationships καθορίζονται από τους πίνακες, όχι τα foreign keys. Τα foreign keys είναι INTEGRITY CONSTRAINTS! Όταν κανείς ορίζει ένα foreign key λέει ουσιαστικά ότι οι τιμές ενός πεδίου μπορούν να πάρουν τιμές που ορίζονται από ένα άλλο πίνακα. &lt;br /&gt;
&lt;br /&gt;
Μπορεί κανείς να ορίσει relations τα οποία αναπαρίστανται με περίπλοκα select statements, τα οποία δεν είναι δυνατόν να αναπαρασταθούν με την 1-προς-1 αντιστοιχία των foreign key constraints. Όταν συμβαίνει αυτό όμως, θα πρέπει να υπάρχει και ένας μηχανισμός ελέγχου για να εμποδίσει τα δεδομένα που δεν ικανοποιούν τα relations και να αντιμετωπίσει τις αναπόφευκτες εγγραφές που θα τα παραβιάζουν και να αποφασίσει τί θα κάνει με τις εγγραφές-φαντάσματα που ξεφεύγουν από αυτά.&lt;br /&gt;
&lt;br /&gt;
Τέλος, το περίεργο με την επιστήμη μας είναι ότι πολλές φορές τα ίδια θέματα εμφανίζονται ξανά και ξανά. Άυτό έγινε με τη διαδρομή ιεραρχικό μοντέλο -&gt; σχεσιακό μοντέλο -&gt; object oriented βάσεις. Αυτό έγινε και με το message passing -&gt; RPC calls -&gt; remote objects -&gt; SOA με Message passing! Άλλοτε, οι νέες υλοποιήσεις των παλαιών ιδεών λύνουν τα προβλήματα των αρχικών, όπως έγινε με τα web services. Άλλοτε, τα παλαιά προβλήματα παραμένουν άλυτα και βάζουν "τρικλοποδιά" στις νέες ιδέες, όπως έγινε με τις object βάσεις.&lt;br /&gt;
&lt;br /&gt;
Για να παραφράσω τον Santayana, όταν θυμάσαι τα λάθη του παρελθόντος, έχεις ελπίδες να μην τα επαναλάβεις.</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21802.aspx</link><pubDate>Thu, 07 Dec 2006 18:34:39 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21802</guid><dc:creator>vxan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21802.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21802</wfw:commentRss><description>Όσοι έχουμε ασχοληθεί στο παρελθόν με μεγάλα συστήματα καταλαβαίνουμε πιστεύω ότι οι σχεσιακές βάσεις δεδομένων έχουν αρκετά Limitations για την ανάπτυξη ολοκληρωμένων πληροφοριακών συστημάτων σαν τα συστήματα τα οποία έχουν ήδη προαναφερθεί. Γι αυτό το λόγο τα συστήματα αυτά προσπαθούν να χρησιμοποιήσουν άλλους τρόπους για να μπορέσουν να υλοποιήσουν άλλες αρχιτεκτονικές (πχ. Ιεραρχικές δομές) οι οποίες σε καμμία περίπτωση δεν είναι δυνατόν να υλοποιηθούν με το κλασσικό σχεσιακό σχήμα δεδομένων. &lt;br /&gt;
&lt;br /&gt;
Λυπάμαι αλλά λόγω έλλειψης χρόνου δε μπορώ αυτή τη στιγμή να απαντήσω εκτενώς. Ελπίζω στο μέλλον να μπορέσω να βρω το χρόνο και να αναφέρω λίγα πράγματα παραπάνω. &lt;br /&gt;
&lt;br /&gt;
Πάντως αγαπητοί συνάδελφοι θέλω να πω ότι βρισκόμαστε σε μία επιστήμη που τα πράγματα αλλάζουν ραγδαία και πρέπει να το έχουμε πάντα κατά νου και να είμαστε ανοικτοί στις αλλαγές αυτές.&lt;br /&gt;
&lt;br /&gt;
Καλή σας ημέρα&lt;br /&gt;
&lt;br /&gt;</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21797.aspx</link><pubDate>Thu, 07 Dec 2006 18:03:18 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21797</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21797.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21797</wfw:commentRss><description>Και να μην ξεχνάμε ότι οι βάσεις αυτών των εφαρμογών ΕΙΝΑΙ κλειστές και αποκλειστικής χρήσης. Ναι, μπορείς να διαβάσεις από αυτές, αλλά όχι, δεν μπορείς να γράψεις σε αυτές χωρίς  να χρησιμοποιήσεις τα εργαλεία ή τα API τους. Δεν μπορείς να τις χρησιμοποιήσεις για άλλες εφαρμογές πέρα από αυτές που σου δίνει η κατασκευάστρια εταιρεία. Και λέγοντας "αυτές" εννοώ τις βάσεις όχι τα API των εφαρμογών. &lt;br /&gt;
&lt;br /&gt;
Από τη στιγμή που μπορεί κάποιος να τροποποιήσει δεδομένα παρακάμπτωντας το API των εφαρμογών, η βάση πρέπει να έχει και τα κατάλληλα constraints. Και ας μην ξεχνάμε, ότι οι περισσότερες ομάδες δεν έχουν τα περιθώρια να υλοποιήσουν στιβαρό μηχανισμό constraints στην εφαρμογή και όχι στη βάση.&lt;br /&gt;
&lt;br /&gt;
Εν ολίγοις, αν θέλετε να φτιάξετε εφαρμογές επιπέδου MS CRM, έχετε τη δυνατότητα να υλοποιήσετε τους ελέγχους που κάνει το MS CRM, να παρέχετε το δικό σας API, και να εμποδίσετε τους πελάτες σας να χρησιμοποιήσουν τη βάση σας για άλλους λόγους, go ahead.&lt;br /&gt;
&lt;br /&gt;
Αν όμως δεν μπορείτε να παρέχετε όλα τα παραπάνω, think again. Κάποιος λογος θα υπάρχει που υπάρχουν τα foreign keys και τα constraints.</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21788.aspx</link><pubDate>Thu, 07 Dec 2006 09:40:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21788</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21788.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21788</wfw:commentRss><description>&lt;P&gt;Βαγγέλη δε νομίζω κανείς να αφορίζει κάποια λύση. Όσοι εκφραστήκαμε για το "κατά" του να μην υπάρχουν constraints στη βάση, το κάναμε με επιχειρήματα. Επίσης, δεν είπαμε Γιώργο ότι σώνει και καλά&amp;nbsp;η χρήση των constraints στη βάση είναι καθολικός κανόνας, είπαμε ότι τα application level constraints είναι μια λύση που δεν την απορρίπτουμε αλλά χρειάζεται να υπάρχει κάποιος πολύυυυυ καλός λόγος. &lt;/P&gt;
&lt;P&gt;Αντιθέτως, το ότι υπάρχουν λύσεις από διάσημα s/w που δεν χρησιμοποιούν constraints δεν είναι απαντά στα μειονεκτήματα που θέσαμε τόσο εγώ, όσο και ο Παναγιώτης. Το "αυτοί ξέρουν" προσωπικά δεν μου λέει τίποτα,&amp;nbsp;αντιθέτως μου θυμίζει αυτό που λένε για τις μύγες &lt;img src="/cs/emoticons/emotion-2.gif" alt="Big Smile" /&gt;. Άν φτιάξουμε ένα matrix με υπέρ και κατά, σίγουρα δεν μπορεί να μπει στα υπέρ το "Έτσι δουλεύει το SAP, Peoplesoft, MS CRM". Σαφώς αν μια εταιρεία μπορεί να αναθέσει σε&amp;nbsp;ένα development team να αναπτύξει ένα constraint layer σε application level, τότε με γειά της με χαρά της. Ωστόσο είναι μια απόφαση που "πληρώνεται" ποικιλοτρόπως. Ας πούμε, μικρότερες εταιρείες δεν έχουν τέτοια πολυτέλεια από resources - δεν είναι όλοι SAP, Microsoft και Oracle. Από την άλλη, μπορεί ο architect του μεγάλου s/w house (sic) να επιλέξει να έχει ακριβώς μια τέτοια ομάδα αντί να έχει διαφορετικές ομάδες που να είναι&amp;nbsp;η κάθε μία υπεύθυνη για το Database-specific development, σε περίπτωση που η εφαρμογή πρόκειται να παίζει σε πολλαπλά RDBMS. Ορίστε! Παρουσίασα ένα επιχείρημα υπέρ του application-level-constraints κόλπου! Μπορεί να υπάρχουν κι άλλα...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21780.aspx</link><pubDate>Thu, 07 Dec 2006 08:33:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21780</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21780.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21780</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;pkanavos wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Όσο για το αν χρειάζεται ή όχι να χρησιμοποιήσει κανείς τη βάση του MS CRM ... πες πως θέλεις να τραβήξεις δεδομένα από αυτή και να φορτώσεις ένα data warehouse. Η να φορτώσεις μαζικά δεδομένα στο CRM από ένα άλλο σύστημα. Θα προτιμούσες να το κάνεις αυτό μέσω ενός γρήγορου DTS ή ενός Web Service το οποίο θα ήταν πολλές φορές αργότερο? &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Προσωπικά, είχα νιώσει το σοκ, όταν βρέθηκα να δουλεύω σε μια εφαρμογή που δεν είχε foreign keys - δεν πίστευα ότι μπορεί να τα καταφέρει. Όπως πολύ σωστά αναφέρεις, αλλά είχε αναφερθεί και η Νατάσα προηγουμένως, το ερώτημα είναι τι γίνεται με τα bulk imports. Στην περίπτωση του MS CRM, έχει από μόνο του bulk import tools. Οπότε δεν χρειάζεται κάποιος να το σκεφτεί δεύτερη φορά. Σε τρίτες εφαρμογές που θέλουν να κάνουν κάτι παρόμοιο, το ζήτημα είναι τι μπορεί να γίνει.&lt;/P&gt;
&lt;P&gt;Ξαναλέω το ότι δεν υπάρχουν τα foreign keys στην βάση, δεν πάει να πει τα δεδομένα δεν είναι κανονικοποιημένα, δεν υπάρχουν look-up πίνακες και οι πίνακες των οντοτήτων δεν έχουν σχέσεις μεταξύ τους. Απλά υπεύθυνοι να τηρηθούν αυτά είναι το data layer και όχι η βάση. Σίγουρα οι βάσεις χωρίς foreign keys δεν είναι μια συνηθησμένη περίπτωση. Αλλά δεν είναι και ένα ακατόρθωτο practice. Και DTS μπορείς να χρησιμοποιήσεις, και bulk inserts μπορούν να γίνουν. Αυτό που είναι απαραίτητο, είναι ότι ο προγραμματιστής που υλοποιεί αυτά, δεν μπορεί να είναι κάτω του μέτριος.&lt;/P&gt;
&lt;P&gt;Δεν μπορώ να καταλάβω, γιατί αυτή η αμετακίνητη θέση ότι πρέπει σώνει και καλά η βάση να έχει foreign keys που να υλοποιούνται και να τηρούνται από τη βάση δεδομένων. Είναι σαν να υποστηρίζεις ότι ο σωστός τρόπος για να γίνει μια μεγάλη εφαρμογή είναι C++ και ας είναι ο χρόνος που απαιτήται πολλαπλάσιος από ότι θα ήθελε κάποια άλλη γλώσσα προγραμματισμού. &lt;img src="/cs/emoticons/emotion-4.gif" alt="Stick out tongue" /&gt; Δεν υπάρχουν ταμπού στο τι πρέπει να γίνει και τι να μην γίνει για να έχουμε μια επιτυχημένη εφαρμογή. Υπάρχουν best practices - και τα best practices στις εφαρμογες&amp;nbsp;CRM, ERP, HRM είναι ότι αυτές χρησιμοποιούν βάσεις που δεν έχουν foreign keys. Έτσι δουλεύει το SAP, Peoplesoft, MS CRM και κανείς δεν ξέρει ακριβώς πόσα ακόμα. Έτσι κατορθώνουν perfomance, αποδεύσμευση της απόδοσης της εφαρμογής από την βάση δεδομένων, έτσι έχουν σχεδιαστεί να δουλεύουν και δουλεύουν.&lt;/P&gt;
&lt;P&gt;Τι ωφελεί να εμένει κάποιος ότι πρέπει να έχουμε βάσεις δεδομένων που οι ίδιες υλοποιούν τα foreign keys; Αφού έχουμε παραδείγματα εφαρμογών στην παραγωγή που δεν είχουν foreign keys και όμως αυτές είναι επιτυχημένες, όσο στην λειτουργικοτητά τους όσο και στο intergration με τρίτες εφαρμογές!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;George J.&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21778.aspx</link><pubDate>Thu, 07 Dec 2006 07:26:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21778</guid><dc:creator>vxan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21778.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21778</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;pkanavos wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;Όσο για το αν χρειάζεται ή όχι να χρησιμοποιήσει κανείς τη βάση του MS CRM ... πες πως θέλεις να τραβήξεις δεδομένα από αυτή και να φορτώσεις ένα data warehouse. Η να φορτώσεις μαζικά δεδομένα στο CRM από ένα άλλο σύστημα. Θα προτιμούσες να το κάνεις αυτό μέσω ενός γρήγορου DTS ή ενός Web Service το οποίο θα ήταν πολλές φορές αργότερο?&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Δηλαδή αν καταλαβαίνω καλά από τα παραπάνω δε συμφωνείς με τον τρόπο που έχει φιαχθεί&amp;nbsp;το&amp;nbsp;&amp;nbsp;MS CRM.&amp;nbsp;&amp;nbsp;Α τώρα που το έφερε η συζήτηση και στα Oracle Apps (ERP, CRM) που έχει τύχει να δουλέψω επίσης αποφεύγανε τα FKs.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Κοίτα να&amp;nbsp;δεις&amp;nbsp;κάτι πράγματα ...&amp;nbsp;αυτοί οι άνθρωποι δε ξέρουν να φιάχνουν μεγάλα συστήματα γιατί δε βάζουν FKs. &lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Όπως είπα και παραπάνω κάθε φορά που χρησιμοποιούμε μία αρχιτεκτονική το κάνουμε με κάποιο σκεπτικό. Το να αφορίζουμε τη μία ή την άλλη λύση δε νομίζω ότι είναι σωστό. Οι άνθρωποι οι οποίοι σχεδίασαν τα συστήματα αυτά προφανώς είχαν τους λόγους τους και δε το έκαναν επειδή έτσι τους κάπνισε.&amp;nbsp;Ας μη βλέπουμε λοιπόν τα πράγματα τόσο απλουστευμένα και ας αναθεωρήσουμε λίγο τις&amp;nbsp;απόψεις&amp;nbsp;μας ... και το τρόπο με τον οποίο κριτικάρουμε τα προϊόντα του&amp;nbsp;ενός ή του άλλου κατασκευαστή.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21737.aspx</link><pubDate>Wed, 06 Dec 2006 20:49:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21737</guid><dc:creator>spantos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21737.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21737</wfw:commentRss><description>Δε θα μπορούσα να συμφωνήσω περισσότερο με το Παναγιώτη.&lt;br /&gt;
&lt;br /&gt;
Right on the money...</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21677.aspx</link><pubDate>Tue, 05 Dec 2006 08:47:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21677</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21677.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21677</wfw:commentRss><description>Τα Foreign Keys είναι metadata και προσδιορίζουν τις σχέσεις μεταξύ των οντοτήτων της βάσης. Η έλλειψη τους δεν είναι προσόν σε καμμία περίπτωση. Ότι μπορεί να δουλέψει μία εφαρμογή χωρίς FKs, μπορεί. Αν κάνει όλα τα checks στον κώδικα. Αν δεν επιτρέπει σε κανένα να έχει πρόσβαση στη βάση. Αν δεν επιτρέπει τα bulk imports. Αν δεν επιτρέπει τα bulk exports. Αν δεν επιτρέπει τη χρήση DTS για import ή export δεδομένων από τη βάση. Αν τρέχει περιοδικά checks στα δεδομένα για να εντοπίσει σκουπίδια. Αλλιώς, ο καθένας μπορεί να εισάγει μία λανθασμένη εγγραφή και να τη διαλύσει. &lt;br /&gt;
&lt;br /&gt;
Όσο για το αν χρειάζεται ή όχι να χρησιμοποιήσει κανείς τη βάση του MS CRM ... πες πως θέλεις να τραβήξεις δεδομένα από αυτή και να φορτώσεις ένα data warehouse. Η να φορτώσεις μαζικά δεδομένα στο CRM από ένα άλλο σύστημα. Θα προτιμούσες να το κάνεις αυτό μέσω ενός γρήγορου DTS ή ενός Web Service το οποίο θα ήταν πολλές φορές αργότερο? &lt;br /&gt;
&lt;br /&gt;
Εδώ που τα λέμε, το data warehouse είναι ένα καλό παράδειγμα για το αν χρειάζονται ή όχι τα foreign keys και αν επηρεάζουν την απόδοση. Σε ένα data warehouse υπάρχει ένας κεντρικός πίνακας με αρκετά εκατομμύρια εγγραφές, ο οποίος έχει foreign keys προς πίνακες-διαστάσεις με μερικές ως αρκετές χιλιάδες εγγραφές ο καθένας. Από τη στιγμή που χρησιμοποιούνται τα κατάλληλα indexes δεν υπάρχει κανένα πρόβλημα απόδοσης. Μόνο όταν φορτώνονται μαζικά δεδομένα στους πίνακες απενεργοποιούνται προσωρινά τα foreign keys και τα indexes, για να επανέλθουν αμέσως μόλις τελειώσει το φόρτωμα.&lt;br /&gt;
&lt;br /&gt;
Σε πολύ σπάνιες περιπτώσεις, μπορεί κανείς να χρειαστεί να φτιάξει πίνακες χωρίς foreign keys. Αυτή όμως είναι η απολύτως τελευταία λύση, καθώς μπορούν άνετα να εφαρμοστούν άλλες τεχνικές που να βελτιώνουν την απόδοση (σωστά indexes, χρήση RAID, σωστά filegroups) κατά πολύ περισσότερο.&lt;br /&gt;
&lt;br /&gt;
Σε τελική ανάλυση, το να παίζεις με τα foreign keys είναι σαν να παίζεις Jengha. Όσο περισσότερα αφαιρείς, τόσο δυσκολεύουν τα πράγματα.</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21665.aspx</link><pubDate>Tue, 05 Dec 2006 07:18:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21665</guid><dc:creator>vxan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21665.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21665</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;papadi wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td valign="top" class="txt4"&gt;... Όπως λες και εσύ, η βάση δεδομένων δεν είναι ορατή στον προγραμματιστή. Οπότε τα πάντα και όχι μόνο τα fk, μεταφέρονται σε ένα διαφορετικό επίπεδο ...&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Για να μην υπάρξει κάποια παρεξήγηση γι αυτούς που δεν έχουν δει το MS CRM δεν είπα ότι η βάση δεν είναι ορατή στον προγραμματιστή ... μια χαρά βάση δεδομένων στον SQL Server 2K or 2K5. Είπα όμως ότι δε χρειάζεται στον προγραμματιστή γιατί μπορεί να κάνει&amp;nbsp;αυτά που θέλει&amp;nbsp;να κάνει χωρίς να την χρησιμοποιήσει. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21574.aspx</link><pubDate>Sun, 03 Dec 2006 21:10:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21574</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21574.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21574</wfw:commentRss><description>Όντως, το MSCRM είναι ανεπτυγμένο πάνω από ένα πολύ ισχυρό application builder. Όπως λες και εσύ, η βάση δεδομένων δεν είναι ορατή στον προγραμματιστή. Οπότε τα πάντα και όχι μόνο τα fk, μεταφέρονται σε ένα διαφορετικό επίπεδο. Ο τρόπος που δουλεύει το MSCRM, όχι μόνο σε αυτό το επίπεδο, αλλά και στο επικοινωνιακό του μέρος, με έχει γοητεύσει... αν επιτρέπετε την έκφραση!</description></item><item><title>Απ: fk contraints στη βάση δεδομένων ή σε metadata;</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/21548.aspx</link><pubDate>Sat, 02 Dec 2006 05:46:50 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:21548</guid><dc:creator>vxan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/21548.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=21548</wfw:commentRss><description>Χωρίς να θέλω να πω ότι είναι καλύτερο το ένα ή το άλλο θέλω να αναφέρω την εμπειρία μου από το Microsoft CRM. Το συγκεκριμμένο προϊόν δεν έχει ούτε για δείγμα foreign keys. Μιλώ από τη πλευρά κάποιου ο οποίος έχει δουλέψει αρκετά πάνω στο προϊόν - πλατφόρμα ανάπτυξης εφαρμογών. Το MSCRM είναι ταυτόχρονα μία εφαρμογή CRM και ένας application builder με τεράστιες δυνατότητες επέκτασης (δε κάνω διαφήμιση στη Microsoft, υπάρχουν και limitations). Όπως λοιπόν προανέφερα δεν υπάρχουν FKs αλλά και να υπήρχαν δε θα μας ενδιέφερε γιατί απλά σαν προγραμματιστές δε χρειάζεται να αγγίξουμε τη βάση. Όλο το σύστημα βασίζεται σε Metadata και όλα γίνονται από εργαλεία μέσα στην εφαρμογή. Η αρχιτεκτονική SOA, το security, το consistency και όσα μαθαίνουμε τόσα χρόνια βρίσκονται σε υψηλά επίπεδα σχεδιασμού και ΔΟΥΛΕΥΟΥΝ. Όταν κάποιος χρειάζεται να γράψει κώδικα στο VS2003 (δεν υποστηρίζεται ακόμη .NET2.0 σε όλα τα τμήματα της εφαρμογής) απλά έχει να κάνει  με typed objects και όλα μέλι γάλα. &lt;br /&gt;
&lt;br /&gt;
Που θέλω να καταλήξω για να μη μακρυγορώ ... όλα εξαρτώνται άπό την αρχιτεκτονική ενός πληροφοριακού συστήματος ... δεν είναι λάθος η μία επιλογή ή άλλη. Σε κάθε περίπτωση πρέπει να είμαστε ανοικτοί και φυσικά διαβασμένοι ώστε να κάνουμε τη σωστή επιλογή.&lt;br /&gt;
&lt;br /&gt;</description></item></channel></rss>