<?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>Υλοποίηση DataGridView με πεδία απο διαφορετικά tables και Wizards VS 2010 Express</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/63648.aspx</link><pubDate>Thu, 24 Feb 2011 19:04:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:63648</guid><dc:creator>sorak</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/63648.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=73&amp;PostID=63648</wfw:commentRss><description>&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-size:small;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-size:medium;"&gt;&lt;p class="MsoNormal"&gt;&lt;font class="Apple-style-span" face="Arial"&gt;Παιδιά καλημέρα.
Είμαι και εγώ ένας από τους νέους στο .net και C#  (Visual Studio Express 2010) 
και θα ήθελα να ρωτήσω για τον σωστό τρόπο υλοποίησης 
κάποιων πραγμάτων από προγραμματιστικής άποψης.

Αναφέρω ένα παράδειγμα (δεν αποτελεί πραγματική εφαρμογή) για να μπορέσουν οι ερωτήσεις μου 
να γίνουν κατανοητές.
Ας υποθέσουμε ότι έχω 3 tables 
Customers με πεδία 
- CustomerID (Primary Key)
 -CustomerName
Products 
- ProductID (Primary Key)
- ProductDescription
Orders με πεδία 
- OrderID  (Primary Key)
- OrderDate 
- CustromerID
- ProductID
Για ευκολία ας υποθέσουμε ότι κάθε order έχει μόνο ένα product.

Ξεκινώντας με το .net άρχισα να χρησιμοποιώ τα wizard θεωρώντας ότι υπάρχουν για να κάνουν τη ζωή μας εύκολη.  
Οπότε αναφέρω τι ήθελα να κάνω και πως το υλοποίησα με τις αντίστοιχες ερωτήσεις.

Αρχικά δημιούργησα τα tables με τον Database Explorer καθώς επίσης και τα relations μεταξύ των tables.
Customers.CustomerID  (1 σε πολλά) Orders.CustomersID
Products.ProductID  (1 σε πολλά) Orders.ProductID
&lt;/font&gt;&lt;span class="Apple-style-span" style="font-family:Arial;"&gt;
1.Ερώτηση: Έχει νόημα να δημιουργήσω αυτά τα relations με τον Database Explorer?&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;font class="Apple-style-span" face="Arial"&gt;Θέλω να έχω ένα Form Orders που θα έχει ένα DataGridView με τα περιεχόμενα του orders με όνομα DataGridViewOrders
Με drag and drop παίρνω το table Orders από το Data Source και το ρίχνω στη φόρμα.
Με αυτό τον τρόπο όμως το DataGridView δεν έχει το CustomerName ούτε και το  ProductDescription (όπως θα ήθελα) 
αλλά το CustomerID και το ProductID όπως είναι αναμενόμενο.
Οπότε μέσω του Data Sources και με τον Wizard δημιουργώ ένα νέο Table Adapter
 με όνομα OrdersJoinCustomerProduct (Add, Table adapters…) και με το Query Builder… παίρνω τα πεδία 
Orders.OrderID
Orders.OrderDate 
Products. ProductDescription
Customers. CustomerName
και στη φόρμα μου κάνω drag and drop τον νέο πίνακα και παίρνω το αποτέλεσμα που θέλω.
&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;font class="Apple-style-span" face="Arial"&gt;2. Ερώτηση: Είναι σωστή αυτή η υλοποίηση ή θα πρέπει να κάνω κάτι άλλο (ίσως με κώδικα) ?
3. Ερώτηση: Αν σε αυτό το DataGridViewOrder των παραγγελιών θέλω να μπορεί ο χρήστης 
&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;font class="Apple-style-span" face="Arial"&gt;να κάνει και αλλαγές σε κάποιο πεδίο θα μπορεί με αυτή την υλοποίηση, αν ναι, πώς?

Στo Form αυτό των Orders θέλω να έχω και ένα comboBox  με τα products (σαν list) ώστε να μπορώ να επιλέξω 
ένα product και να φιλτράρω τα περιεχόμενα του DataGridViewOrders.
Οπότε παίρνω ένα comboBox, κάνω check το Use Data Bound Items και ενημερώνω τα αντίστοιχα πεδία 
ώστε να πάρω στη λίστα του  ComboBox το ProductDescription.
Με την επιλογή του χρήστη από το comboBox ενημερώνω το odersJoinCustomerProduct.Filter 
για να ενεργοποιήσω το φίλτρο στο DataGridViewOrders.
&lt;/font&gt;&lt;span class="Apple-style-span" style="font-family:Arial;"&gt;
4. Ερώτηση: Είναι σωστή αυτή η υλοποίηση ?
&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family:Arial;"&gt;5. Ερώτηση: Υπάρχει διαφορετικός τρόπος αντιμετώπισης αν το table Orders έχει 50.000 εγγραφές.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;font class="Apple-style-span" face="Arial"&gt;Γνωρίζω ότι καλή τακτική είναι να ζητάς από τη βάση τις εγγραφές που χρειάζεσαι, 
δηλαδή να χρησιμοποιείς πρώτα το φίλτρο και όχι μετά. 

Ευχαριστώ εκ των προτέρων και συγνώμη αν κούρασα αλλά νομίζω ότι η σωστή αρχή είναι βασικό.

&lt;/font&gt;&lt;br&gt;&lt;/p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;</description></item></channel></rss>