# 1

Σπίγγος Δημήτρης
dmtrs32@gmail.com 2012
Τσιβίκης Βασίλης
undersec.tr3los@gmail.com 2010
Μαρία Θουκυδίδου
marablack3@gmail.com 2014

# Συσχέτιση συνδέσεων (δηλ. εικονικές συνδέσεις)

Η συσχέτιση σύνδεσης είναι ένα γνώρισμα που επιτρέπει τη "συσχέτιση" πολλών συνδέσεων και/ή εισαγόμενων συνόλων δεδομένων σε μια μοναδική σύνδεση, που μπορεί να χρησιμοποιηθεί σχεδόν όπως η κανονική σύνδεση.

Αυτό το γνώρισμα είναι χρήσιμο όταν κάποιος χρειάζεται την εκτέλεση μιας εντολής SQL (για παράδειγμα εξαγωγή δεδομένων) λαμβάνοντας υπόψη δεδομένα αποθηκευμένα στην πραγματικότητα σε διαφορετικές βάσεις δεδομένων. Χωρίς αυτό το γνώρισμα, ο τρόπος εκπλήρωσης του ίδιου αποτελέσματος είναι με εξαγωγή των απαραίτητων δεδομένων από κάθε βάση δεδομένων και επεξεργασία στα δεδομένα έξω από τις βάσεις δεδομένων.

Για δημιουργία μιας νέας "δεσμευμένης" σύνδεσης (ή "εικονικής" σύνδεσης), χρησιμοποιήστε το μενού σύνδεση συσχέτιση σύνδεσης, ή τη συντόμευση Ctrl i. Αυτό αναδύει ένα νέο παράθυρο διαλόγου από το οποίο μπορούν να οριστούν στοιχεία για συμπερίληψη στην "δεσμευμένη" σύνδεση όπως φαίνεται παρακάτω.

# Διάλογος για δημιουργία μιας νέας εικονικής σύνδεσης

Εδώ η τρέχουσα σύνδεση (c1) θα δεσμευτεί στο σχήμα "c1"

Χρησιμοποιήστε το κουμπί προσθήκη συσχέτισης για είτε:

συσχέτιση μιας σύνδεσης για συμπερίληψη όλων των πινάκων αυτής της σύνδεσης: χρήση της επιλογής συσχέτιση μιας σύνδεσης. Αυτή η επιλογή προσθέτει απλά ένα νέο στοιχείο στο διάλογο, για ορισμό ονόματος σχήματος και επιλογή μιας υφιστάμενης σύνδεσης

συσχέτιση ενός συνόλου δεδομένων για εισαγωγή δεδομένων από αρχείο κειμένου ως μοναδικού πίνακα: χρήση της επιλογής συσχέτιση συνόλου δεδομένων. Δείτε την παρακάτω ενότητα για περισσότερες πληροφορίες.

# Χρήση περίπτωσης για εικονικές συνδέσεις

Για επεξήγηση της χρήσης εικονικής σύνδεσης, ας ορίσουμε την περίπτωση απλής χρήσης και ας δούμε τη χρησιμότητά της. Ας υποθέσουμε ότι έχετε μια βάση δεδομένων που περιέχει τη λίστα των εξυπηρετητών για τους οποίους είσαστε υπεύθυνος. Για απλοποίση, ας υποθέσουμε ότι η βάση δεδομένων περιέχει έναν πίνακα με όνομα "εξυπηρετητή" με τον παρακάτω ορισμό:

Εξυπηρετητές CREATE TABLE (συμβολοσειρά ονόματος, συμβολοσειρά θέσης)·

Ας υποθέσουμε ότι αυτός ο πίνακας περιέχει την παρακάτω πληροφορία:

> select * from servers · name | location ---------+--------- moon | room1 darkstar | room2 flag | room3 alf | room2 vador | room3 (5 rows) >

Τώρα ας υποθέσουμε ότι έχετε ένα πρόγραμμα τρίτου που δίνει μια λίστα εξυπηρετητών για τους οποίους ίσως υπάρχει πρόβλημα, η έξοδος αυτού του προγράμματος είναι ένα αρχείο CSV με μια στήλη για το όνομα του εξυπηρετητή, μια στήλη για τον κώδικα σφάλματος και μια στήλη που περιγράφει το πρόβλημα. Ας υποθέσουμε ότι το αρχείο CSV έχει τα παρακάτω περιεχόμενα:

$ cat problems.csv Server name,Error code,Error description darkstar,0,file system full vador,1,outdated AV signature darkstar,2,overloaded flag,0,file system full $

Ας υποθέσουμε τώρα ότι θέλετε να μάθετε για όλους τους εξυπηρετητές, πού βρίσκονται, πού υπάρχει πρόβλημα με κώδικα σφάλματος 0. Η λύση είναι η συσχέτιση της σύνδεσης με τη βάση δεδομένων (για παράδειγμα στο σχήμα "c1"), εισαγωγή του αρχείου CSV προβλημάτων (για παράδειγμα στον πίνακα "καρτέλα") και εκτέλεση της παρακάτω εντολής SQL:

SELECT "server name", location FROM tab INNER JOIN c1.servers AS s ON (tab."server name" = s.name) WHERE "Error code"=0

που επιστρέφει τα αναμενόμενα αποτελέσματα όπως φαίνονται στην παρακάτω εικόνα:

## Αναμενόμενα αποτελέσματα από εικονική σύνδεση

# Εισαγωγή συνόλου δεδομένων στην εικονική σύνδεση

Για εισαγωγή ενός συνόλου δεδομένων σε έναν πίνακα στην εικονική σύνδεση (για παράδειγμα για εισαγωγή του αρχείου "problems.csv" από τη χρησιμοποιούμενη περίπτωση), χρησιμοποιήστε την επιλογή συσχέτιση συνόλου δεδομένων από τον διάλογο δημιουργίας εικονικής σύνδεσης:

## Εισαγωγή συνόλου δεδομένων στην εικονική σύνδεση -1

Από εκεί χρησιμοποιήστε το κουπί εισαγωγή που επιτρέπει την επιλογή αρχείου για εισαγωγή και ορίστε επίσης κάποιες επιλογές εισαγωγής (κωδικοποίηση αρχείου, τύπο αρχείου, ...). Μετά από αυτό το βήμα, η εικονική σύνδεση είναι έτοιμη για χρήση:

## Εισαγωγή συνόλου δεδομένων στην εικονική σύνδεση -2

Η τελική εικονική σύνδεση, ταυτοποιούμενη ως "c2" εδώ είναι ανοικτή στο δικό της νέο παράθυρο:

## Νέα ανοικτή εικονική σύνδεση

# Χρήση SQL με εικονικές συνδέσεις

Μπορείτε να χρησιμοποιήσετε το SQL που εννοείται από το SQLite σε κάθε εικονική σύνδεση. Να γνωρίζετε όμως ότι εάν ορίσετε αντικείμενα βάσης δεδομένων (έξω από το εκτεταμένο SQL που παρουσιάζεται στην επόμενη ενότητα), θα χαθούν την επόμενη φορά που η εικονική σύνδεση θα ανοίξει.

Δείτε την ενότητα SQL που εννοείται από συνδέσεις LDAP και εικονικές συνδέσεις για περισσότερες πληροφορίες.