Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Δομή SQL Database (SQL Server 2005)

Îåêßíçóå áðü ôï ìÝëïò Dataman. Τελευταία δημοσίευση από το μέλος Dataman στις 22-08-2008, 12:41. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  22-08-2008, 10:14 44212

    Δομή SQL Database (SQL Server 2005)

    Καλημέρα,
    Μερικά ερωτήματα από ένα νεο χρήστη του SQL Server

    1. Σε μία βάση είναι απαραίτητη η δημιουργία Indexes (έχει δηλαδή τις ιδιότητες των βάσεων που είχαμε με την access, πχ ταχύτητα στο view, καθυστέρηση στο Update);

    2. Για να ορίσουμε ένα πεδίο να μην επιτρέπονται διπλότυπες εγγραφές είναι με την γνωστή μέθοδο των Indexes ή...

    3. Όταν έχουμε δύο πίνακες:
         Table1(ID, Name, ID_Address, ...) το ID είναι bigint (Is Identity)
         Table2(ID_Address, NameAddress, ...) το ID_Address είναι bigint (Is Identity)
         το ID_Adress είναι κοινό και στους δύο πίνακες
    Λογικά θα κάνω καταχώρηση με μία SQL Command του πεδίου NameAddress του Table2, κατόπιν θα πάρω το ID_Address που έχει δημιουργηθεί και θα κάνω καταχώρηση στοιχείων στο Table1 με άλλη SQL Command.
    Είναι εφικτό όταν με ένα SQL Command να καταχωρίσω δεδομένα στο Table1 δίνοντας όμως και στοιχεία στο Table2. Δηλαδή να καταχωρήσω Name και NameAddress με μία SQL Command?

    4. Υπάρχει τρόπος ή άλλο εργαλείο που να μπορώ να βλέπω ΟΛΗ την δομή της Database και τις σχέσεις πινάκων με γραφικό περιβάλλον (κάτι σαν το Database Diagrams). Ο λόγος που δεν με βολεύει το Database Diagrams είναι ότι στη βάση υπάρχουν παρα πολλοί πινακες που έχω δημιουργήσει τις σχέσεις τους ξεχωριστά για κάθε κομάτι με το Database Diagrams (Diagram1, 2, 3, ...).

    5. Ποιες οι διαφορές των τύπων nvarchar, varchar και nchar και τι προτείνετε να χρησιμοποιούμε;
    Νομίζω η nvarchar(10) μπορεί να δεχτεί παραπάνω από 10 χαρακτήρες, ή κάνω λάθος;

    Και κάτι τελευταίο που αφορά την επικοινωνία των clients με τον Server
    Μετά από ψάξιμο κατάφερα και βρήκα ότι οι πόρτες που πρέπει να ανοίξω στο Windows Firewall προκειμένου να υπάρχει επικοινωνία των Clients είναι η 1433 TCP και 1434 UDP με κάποιες ρυθμίσεις στον SQL Server. Το ερώτημά μου είναι εάν ο SQL Server είναι σε άλλο κτήριο με Static IP και θέλω να συνδεθώ, ενώ έχω ρυθμίσει κανονικα το router και όλα τα σχετικά για πρόσβαση στο pc με τις port που αναφερω πιο πάνω, τελικά δεν συνδέεται.
    Υπάρχουν και άλλες πόρτες που πρέπει να ανοίξω;

    Ευχαριστώ πολύ και συγνώμη για το μακροσκελές ερώτημά μου.



  •  22-08-2008, 11:09 44213 σε απάντηση της 44212

    Απ: Δομή SQL Database (SQL Server 2005)

     

    Dataman:
    1. Σε μία βάση είναι απαραίτητη η δημιουργία Indexes (έχει δηλαδή τις ιδιότητες των βάσεων που είχαμε με την access, πχ ταχύτητα στο view, καθυστέρηση στο Update);

    Smile Απαραιτότατο!

    Βασικά με τα indexes έχεις ταχύτητα στο διάβασμα ωστόσο αν υπερφορτώσεις τους πίνακες με indexes, μειώνεται η ταχύτητα των updates/deletes


    Dataman:
    2. Για να ορίσουμε ένα πεδίο να μην επιτρέπονται διπλότυπες εγγραφές είναι με την γνωστή μέθοδο των Indexes ή...

    Δύο τρόποι: To ορίζεις ως Primary Key ή του βάζεις ένα unique constraint

    Dataman:
    3. Όταν έχουμε δύο πίνακες:
         Table1(ID, Name, ID_Address, ...) το ID είναι bigint (Is Identity)
         Table2(ID_Address, NameAddress, ...) το ID_Address είναι bigint (Is Identity)
         το ID_Adress είναι κοινό και στους δύο πίνακες
    Λογικά θα κάνω καταχώρηση με μία SQL Command του πεδίου NameAddress του Table2, κατόπιν θα πάρω το ID_Address που έχει δημιουργηθεί και θα κάνω καταχώρηση στοιχείων στο Table1 με άλλη SQL Command.
    Είναι εφικτό όταν με ένα SQL Command να καταχωρίσω δεδομένα στο Table1 δίνοντας όμως και στοιχεία στο Table2. Δηλαδή να καταχωρήσω Name και NameAddress με μία SQL Command?...

    Όχι δεν γίνεται, είτε το κάνεις με T-SQL command, είτε το κάνεις με ADO.NET Command, θα πρέπει να το κάνεις σε δύο βήματα. Ωστόσο αν παίζεις με DataSets τα πράγματα απλοποιούνται. Επίσης, αν χρησιμοποιείς κάποιο ORM, πάλι είναι εύκολο και δεν χρειάζεται να κάνεις κάτι.

    Dataman:
    4. Υπάρχει τρόπος ή άλλο εργαλείο που να μπορώ να βλέπω ΟΛΗ την δομή της Database και τις σχέσεις πινάκων με γραφικό περιβάλλον (κάτι σαν το Database Diagrams). Ο λόγος που δεν με βολεύει το Database Diagrams είναι ότι στη βάση υπάρχουν παρα πολλοί πινακες που έχω δημιουργήσει τις σχέσεις τους ξεχωριστά για κάθε κομάτι με το Database Diagrams (Diagram1, 2, 3, ...).

    Δεν σε κατάλαβα... Σε ένα diagram μπορείς να βάλεις όσους πίνακες θες, ακόμη και όλους.

    Dataman:
    5. Ποιες οι διαφορές των τύπων nvarchar, varchar και nchar και τι προτείνετε να χρησιμοποιούμε;
    Νομίζω η nvarchar(10) μπορεί να δεχτεί παραπάνω από 10 χαρακτήρες, ή κάνω λάθος;...

    • Char(X): Παίρνει μέχρι Χ χαρακτήρες, αν βάλεις λιγότερους, συμπληρώνει με κενά
    • VarChar(X): Παίρνει μέχρι Χ χαρακτήρες, αν βάλεις λιγότερους, δεν κρατάς τον χώρο τσάμπα
    • ΝChar, ΝVarChar: Όπως παραπάνω αλλά για κάθε χαρακτήρα κρατούνται 2 bytes γιατί αποθηκεύεται με την Unicode μορφή του. Αν χρησιμοποιείς αυτούς του τύπους γλυτώνεις από πολλούς πονοκέφαλους με τα Ελληνικά.

    Dataman:
    Και κάτι τελευταίο που αφορά την επικοινωνία των clients με τον Server
    Μετά από ψάξιμο κατάφερα και βρήκα ότι οι πόρτες που πρέπει να ανοίξω στο Windows Firewall προκειμένου να υπάρχει επικοινωνία των Clients είναι η 1433 TCP και 1434 UDP με κάποιες ρυθμίσεις στον SQL Server. Το ερώτημά μου είναι εάν ο SQL Server είναι σε άλλο κτήριο με Static IP και θέλω να συνδεθώ, ενώ έχω ρυθμίσει κανονικα το router και όλα τα σχετικά για πρόσβαση στο pc με τις port που αναφερω πιο πάνω, τελικά δεν συνδέεται.
    Υπάρχουν και άλλες πόρτες που πρέπει να ανοίξω;

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





    Vir prudens non contra ventum mingit
  •  22-08-2008, 11:44 44215 σε απάντηση της 44213

    Απ: Δομή SQL Database (SQL Server 2005)

    Πρώτα απ'ολα ευχαριστώ για την ταχύτατη απάντηση

    KelMan:

    Dataman:
    4. Υπάρχει τρόπος ή άλλο εργαλείο που να μπορώ να βλέπω ΟΛΗ την δομή της Database και τις σχέσεις πινάκων με γραφικό περιβάλλον (κάτι σαν το Database Diagrams). Ο λόγος που δεν με βολεύει το Database Diagrams είναι ότι στη βάση υπάρχουν παρα πολλοί πινακες που έχω δημιουργήσει τις σχέσεις τους ξεχωριστά για κάθε κομάτι με το Database Diagrams (Diagram1, 2, 3, ...).

    Δεν σε κατάλαβα... Σε ένα diagram μπορείς να βάλεις όσους πίνακες θες, ακόμη και όλους.


    Βασικά δουλεύω με το Database Diagrams, αλλά εάν βάλω όλους τους πίνακες (64) θα πρεπει να κάνω τέτοιο Zoom που δεν θα φαίνονται τα ονόματα των πεδίων (όσο κι εάν έπαιξα με την ανάλυση της οθόνης) .
    Αυτό που θέλω να κάνω είναι να "βγάλω" το σχεδιάγραμμα της δομής της Database σε image file προκειμένου να το έχω σε άλλο υπολογιστή για παρουσίαση προς του συνεργάτες μου προς συζήτηση.


  •  22-08-2008, 11:57 44216 σε απάντηση της 44215

    Απ: Δομή SQL Database (SQL Server 2005)

    Υπάρχουν διάφορα εργαλεία, πχ το Visio μπορεί να διαβάσει το schema της  βάσης και να σου φτιάξει ένα διάγραμμα. Το θέμα είναι ότι όποιο εργαλείο και να έχεις, αν οι πίνακες είναι πολλοί, τότε θα πρέπει να κάνεις zoom out το διάγραμμα, οπότε δεν θα φαίνεται σε μία οθόνη ή σε ένα χαρτί A4. Αυτό που κάνω εγώ είναι να οργανώνω τους πίνακες σε σχετικές ομάδες και να προσέχω ώστε να μην πέφτουν πάνω στα όρια της σελίδας. Κατόπιν εκτυπώνω το διάγραμμα και το έχω σε σελίδες που μπορώ να βάλω τη μία δίπλα στην άλλη.


    Vir prudens non contra ventum mingit
  •  22-08-2008, 12:41 44217 σε απάντηση της 44216

    Απ: Δομή SQL Database (SQL Server 2005)

    Είναι κι αυτός ένας τρόπος
    ΟΚ

    Ευχαριστώ
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems