<?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>Πρώτα Βήματα - Βάσεις δεδομένων</title><link>https://www.dotnetzone.gr:443/cs/forums/73/ShowForum.aspx</link><description>Για όσους κάνουν τα πρώτα τους βήματα στην Microsoft Access ή τον SQL Server, ή γενικότερα στη θεωρία βάσεων δεδομένων.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Re: Απ: Σύκριση στοιχείων πεδίου ΒΔ SQL με string</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24031.aspx</link><pubDate>Thu, 25 Jan 2007 21:57:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24031</guid><dc:creator>beastie</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24031.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24031</wfw:commentRss><description>αριθμό ταυτότητας ή το όνοματεπώνυμο του οδηγού&lt;br /&gt;
&lt;br /&gt;
Αυτά μπορούν κάλιστα να είναι 2  INDEX &lt;br /&gt;
&lt;br /&gt;
(1 για το κάθε ένα, γιατί κάθε φορά θα ψάχνεις είτε με το 1, είτε με το άλλο και έτσι ο SQL Server θα χρησιμοποιεί το καλυτερο)&lt;br /&gt;
&lt;br /&gt;
Προσοχή ο κάθε INDEX να μην είναι Unique values..&lt;br /&gt;
&lt;br /&gt;
Unique = false !!!</description></item><item><title>Απ: Σύκριση στοιχείων πεδίου ΒΔ SQL με string</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24029.aspx</link><pubDate>Thu, 25 Jan 2007 21:47:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24029</guid><dc:creator>Matas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24029.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24029</wfw:commentRss><description>ΟΚ, το 'πιασα... Βασικά χρειάζομαι ένα surrogate key και σαν συμπλήρωμα θα βάλω και τον αριθμό ταυτότητας ή το όνοματεπώνυμο του οδηγού, οπότε θα επιτρέπονται οι εγγραφές με τον ίδιοι αριθμό ταυτότητας και διαφορετικό &lt;br /&gt;
&lt;br /&gt;
"αύξοντα αριμό = αριθμός συμβολαίου"</description></item><item><title>Re: Απ: Σύκριση στοιχείων πεδίου ΒΔ SQL με string</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24021.aspx</link><pubDate>Thu, 25 Jan 2007 20:47:07 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24021</guid><dc:creator>beastie</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24021.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24021</wfw:commentRss><description>Μπορείς σε ένα πίνακα να έχεις 2 πεδία που θα είναι Autoincrement και μπορεί και το κάθε ένα να είναι με διαφορετικό Starting Value αλλά και διαφορετικό Increment...&lt;br&gt;
&lt;br&gt;Οσο για τον Αύξωντα αριθμό... Αν θέλεις πάντα να έχεις 1,2,3, για τους ενεργούς και πχ 0 για τους μη ενεργούς, σίγουρα δεν μπορεί να είναι κλειδί, αν όμως είναι Autoincrement τότε μπορείς να το έχεις για κλειδι...&lt;br&gt;ΔΛΔ ένας υπάλληλος με ID 5 αν φύγει και μετά ξαναέρθει το νέο του ID θα είναι το επόμενο δυνατό... πχ 32&lt;br&gt;</description></item><item><title>Απ: Σύκριση στοιχείων πεδίου ΒΔ SQL με string</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24020.aspx</link><pubDate>Thu, 25 Jan 2007 20:38:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24020</guid><dc:creator>Matas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24020.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24020</wfw:commentRss><description>Λοιπόν, περιγραφή για να με καταλάβετε... &lt;br /&gt;
&lt;br /&gt;
Έχω πίνακα με στοιχεία ατόμων (οδηγοί μεταφορικής)..&lt;br /&gt;
&lt;br /&gt;
Η ταυτότητά τους ή ο αύξων αριθμός που θα μπει αυτόματα, &lt;br /&gt;
&lt;br /&gt;
δεν μπορούν να είναι μοναδικό κλειδί, γιατί οι οδηγοί μπορούν&lt;br /&gt;
&lt;br /&gt;
να απολυθούν και να επαναπροσληφθούν, οπότε θα&lt;br /&gt;
&lt;br /&gt;
πετάξει πρόβλημα διπλοεγγραφής όταν ξαναπροσληφθούν..&lt;br /&gt;
&lt;br /&gt;
Θέλω να βάλω δηλαδή και έναν αριθμό συμβολαίου, &lt;br /&gt;
&lt;br /&gt;
που θα είναι και αυτός αυτόματα αυξανόμενος...&lt;br /&gt;
&lt;br /&gt;
Μπορώ να βάλω 2 surrogate keys όπως ανέφερε ο KelMan?&lt;br /&gt;
&lt;br /&gt;
Ειλικρινά, δεν περίμενα τόσο άμεσες και κατατοπιστικές απαντήσεις, &lt;br /&gt;
&lt;br /&gt;
ευχαριστώ</description></item><item><title>Απ: Σύκριση στοιχείων πεδίου ΒΔ SQL με string</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24015.aspx</link><pubDate>Thu, 25 Jan 2007 20:27:54 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24015</guid><dc:creator>Matas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24015.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24015</wfw:commentRss><description>Κάπως το αποφαφήνισες φίλε.. Ωραία! Θα το δοκιμάσω το βράδυ μετά την δουλειά και θα σου πω πως δουλεύει..</description></item><item><title>Απ: Re: Σύκριση στοιχείων πεδίου ΒΔ SQL με string</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24014.aspx</link><pubDate>Thu, 25 Jan 2007 20:26:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24014</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24014.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24014</wfw:commentRss><description>&lt;P&gt;Επιπρόσθετα, είναι πολύ κακή πρακτική να αφήνεις τον χρήστη να ορίζει το κλειδί. Συνήθως το κλειδί είναι ένα πεδίο που παράγεται αυτόματα και εγγυάται η μηχανή της ΒΔ ότι θα είναι μοναδικό (πχ autoincrement ή guid). &lt;/P&gt;
&lt;P&gt;Αν για παράδειγμα έχεις έναν πίνακα με αυτοκίνητα, σαφώς ο αριθμός κυκλοφορίας είναι μοναδικός για κάθε αυτοκίνητο αλλά δεν θα τον ορίσεις ως κλειδί. Θα ορίσεις ένα autoincrement πεδίο ως CarID (ας πούμε) και στο πεδίο του αρ. κυκλοφορίας (TemplateNumber) που μπορεί ο χρήστης να εισάγει ό,τι θέλει, θα ορίσεις ένα unique constraint, δηλαδή έναν περιορισμό ότι οι τιμές θα πρέπει να είναι μοναδικές. Κατόπιν, μπορείς να εφαρμόσεις αυτά που λέει ο φίλος beastie, για το try...catch (που είναι ο καλύτερος τρόπος για έλεγχο και απόρριψη διπλοεγγραφών). To CarID ονομάζεται surrogate key σε αντίθεση με το TeplateNumber που ονομάζεται NaturalKey.&lt;/P&gt;
&lt;P&gt;Υπάρχει αρκετή θεωρία για τα πλεονεκτήματα που προσφέρει αυτή η σχεδίαση. &lt;BR&gt;Ρίξε μια ματιά εδώ: &lt;A href="http://en.wikipedia.org/wiki/Surrogate_key#Advantages_of_Surrogate_Keys"&gt;http://en.wikipedia.org/wiki/Surrogate_key#Advantages_of_Surrogate_Keys&lt;/A&gt;, εδώ&lt;BR&gt;&lt;A href="http://www.agiledata.org/essays/keys.html"&gt;http://www.agiledata.org/essays/keys.html&lt;/A&gt;&amp;nbsp;και εδώ&lt;BR&gt;&lt;A href="http://blogs.msdn.com/anthonybloesch/archive/2005/09/09/Surrogate-Keys.aspx"&gt;http://blogs.msdn.com/anthonybloesch/archive/2005/09/09/Surrogate-Keys.aspx&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;</description></item><item><title>Re: Σύκριση στοιχείων πεδίου ΒΔ SQL με string</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24009.aspx</link><pubDate>Thu, 25 Jan 2007 19:49:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24009</guid><dc:creator>beastie</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24009.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24009</wfw:commentRss><description>Δεν ξέρω αν είμαι ο ειδικός, αλλα θα προσπαθήσω να πω 2-3 πράγματα.&lt;br /&gt;
&lt;br /&gt;
Αρχικά να μιλήσω για VB.Net (τα ίδια ισχύουν και στις άλλες γλώσσες)&lt;br /&gt;
&lt;br /&gt;
Αν θέλεις να δεις αν υπάρχει ήδη εγγραφή στον πίνακα μπορείς πριν το INSERT να κάνεις ένα SELECT ώστε να δεις αν υπάρχει η εγγραφή. Αυτό κατά την γνώμη μου ΔΕΝ είναι σωστό. &lt;br /&gt;
&lt;br /&gt;
1 Θα είναι πιο αργό να κάνεις 2 κινήσεις για κάθε εισαγωγή (1. το select και 2 to insert όταν δεν θα υπάρχει)&lt;br /&gt;
&lt;br /&gt;
2. Αν γράφουν περισσότερες εφαρμογές στον πίνακα, ποιος σου διασφαλίζει ότι μεταξύ του SELECT σου και μέχρι το INSERT κάποιος άλλος δεν έχει προλάβει να κάνει INSERT με αυτό το κλειδί??? (Στην περιπτωση αυτή πάλι θα λάβεις ERROR)&lt;br /&gt;
&lt;br /&gt;
Αυτό που μπορείς λοιπόν να κάνεις είναι στον κώδικα σου το INSERT να το έχεις μέσα σε ένα TRY..Catch ώστε να "πιάνεις" το λάθος του διπλού κλειδιού και να εμφανίζεις στον χρήστη δικό σου μήνυμα με to MSGBOX. &lt;br /&gt;
&lt;br /&gt;
Τώρα το Insert μπορείς και να το κάνεις με STORED PROCEDURE και όχι να γράφεις στον κώδικα σου (.net) το TSQL Statement... &lt;br /&gt;
&lt;br /&gt;
Αυτά απαντούν στο 1. Για το δεύτερο ναι καλό είναι να υπάρχει σε Function (της γλώσσας πάντα) που να κάνει λειτουργίες που εκτελούνται πολλές φορές μέσα στην εφαρμογή. Για τις FUnctions καλό είναι να περνάς τις πληροφορίες που θέλεις σαν παραμέτρους (να αποφύγεις Global μεταβλητές)&lt;br /&gt;
&lt;br /&gt;
Ελπίζω να βοήθησα έστω και λίγο. &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>Σύκριση στοιχείων πεδίου ΒΔ SQL με string</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/24005.aspx</link><pubDate>Thu, 25 Jan 2007 18:45:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:24005</guid><dc:creator>Matas</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/24005.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=24005</wfw:commentRss><description>&lt;P&gt;Καλημέρα σας... Έψαχνα πολύ καιρό να βρω ένα φόρουμ που να συζητά τέτοια πράγματα, &lt;BR&gt;μιας και το βιβλίο που αγόρασα, το VB.NET, του Γκιούρδα νομίζω είναι, έχει απλά πολλές &lt;BR&gt;σελίδες και καμιά ουσία. Ολόκληρο βιβλίο, δεν είχε αναφορά στο πως κάνω εισαγωγή &lt;BR&gt;στοιχείων σε ΒΔ, παρά μόνο ανάσυρση δεδομένων!&lt;BR&gt;Με τα πολλά - με τα λίγα, ψάξιμο στο ίντερνετ, βρήκα τρόπο να βάζω αυτά τα &lt;BR&gt;datasets και να κάνω σύνδεση με τη ΒΔ, και να εισάγω στοιχεία.. &lt;BR&gt;Τώρα μου προέκυψε άλλο πρόβλημα :&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;-&amp;gt; Θέλω όταν βάζω το στοιχείο, το οποίο θα είναι κλειδί, πριν καταχωρηθεί στην βάση, να σαρώνονται οι &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; εγγραφές του πεδίου κλειδιού της βάσης με το string το οποίο εισάγω, και το μήνυμα &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; σφάλματος(διπλοεγγραφής), να πετάγεται από δικό μου&amp;nbsp;MsgBox και όχι από μήνυμα της SQL or .NET&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - πώς λοιπόν θα κάνω function(είναι αυτό που λέει stored procedures??) για να καλώ λειτουργία με&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ορίσματα τον πίνακα τον οποίο θέλω να σαρώσω, το πεδίο του και το string οποίο θέλω, για να την &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; έχω για όλο το πρόγραμμα, μιας και θα&amp;nbsp;χρειαστεί να την καλέσω πολλές φορές?&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Εσείς που ασχολείστε περισσότερο καιρό, έχετε κάτι καλύτερο να μου προτείνετε?&lt;/P&gt;
&lt;P&gt;Σας ευχαριστώ&lt;/P&gt;</description></item></channel></rss>