Oracle
 sql >> Database >  >> RDS >> Oracle

Reverse Engineering di un modello di dati utilizzando Oracle SQL Developer

Introduzione

Questo tutorial introduce gli strumenti Oracle SQL Developer Data Model che possono essere utilizzati per decodificare uno schema di database esistente in un modello relazionale e logico. Si consideri un tipico processo di sviluppo del database che inizia con i requisiti degli utenti aziendali modellati come un modello di relazione tra entità costituito da entità, attributi, identificatori e relazioni. Questo modello E-R viene quindi trasformato in un modello relazionale composto da Relazioni, Attributi, Chiavi e Chiavi esterne. Il modello relazionale può essere implementato in un database relazionale come un insieme di tabelle, colonne e vincoli inclusi vincoli univoci, di chiave primaria e di chiave esterna.

Potremmo imbatterci in situazioni in cui abbiamo uno schema di database relazionale già implementato ma non abbiamo il modello relazionale originale o il modello Entity Relationship che è stato utilizzato per progettare il database. In queste situazioni, potremmo essere in grado di ricreare il modello E-R mediante reverse engineering il modello dallo schema del database. Per fare ciò, dobbiamo eseguire i seguenti passaggi:

  1. Collega lo schema del database e identifica tutte le tabelle esistenti, le relative colonne e i vincoli di chiave primaria ed esterna.
  2. Costruire il Modello Relazionale che corrisponde all'insieme esistente di tabelle e vincoli.
  3. Dedurre il modello E-R dal modello relazionale.

Terminologia del modello di dati

Oracle SQL Developer utilizza termini leggermente diversi da quelli normalmente utilizzati nei corsi di database accademici. Il modello fisico (con chiavi, relazioni di chiave esterna e indici) estratto dallo schema del database è denominato "Modello relazionale" da Oracle SQL Developer. L'insieme di entità con linee di relazione è chiamato "Modello logico" da Oracle SQL Developer.

Prerequisiti

Prima di iniziare questo tutorial, assicurati di lavorare con Oracle SQL Developer versione 4.x o successiva. Sfortunatamente, Oracle 12c potrebbe ancora essere distribuito con la versione 3.x di SQL Developer che non dispone degli strumenti di modellazione dei dati.

Se hai bisogno di ottenere e installare SQL Developer, o se desideri alcuni suggerimenti su come iniziare con SQL Developer, guarda il tutorial.

Avrai anche bisogno delle credenziali (nome host, porta, nome del servizio, nome utente e password) per lo schema di esempio "HR" (o altro) fornito con Oracle 11g e Oracle 12c.

I seguenti passaggi sono stati eseguiti utilizzando SQL Developer 4.1 su Windows 7 collegato allo schema di esempio 'HR' in un database Oracle 12c.

Reverse Engineering del Modello Relazionale da uno schema di database

  1. Esegui Oracle SQL Developer e crea una connessione allo schema del database con cui lavorerai. In questo esempio abbiamo creato una connessione allo schema "HR" che è il database di esempio delle risorse umane fornito con Oracle 11g e Oracle 12c.
  2. Apri il menu File, seleziona Data Modeler e quindi il sottomenu Importa. Fare clic sulla selezione Dizionario dati dal menu a comparsa come mostrato di seguito. Verrà avviata l'Importazione guidata del dizionario dei dati:
  3. Seleziona la connessione con cui desideri lavorare. Puoi anche fare clic sul pulsante Aggiungi per aggiungere una nuova connessione. Dopo aver evidenziato la connessione, fai clic sul pulsante Avanti> per continuare.
  4. Il passaggio successivo consiste nel selezionare lo schema da importare. Per questo esempio abbiamo selezionato la casella per lo schema "HR" come mostrato di seguito. Si noti che la selezione "Importa in:" mostra Nuovo modello relazionale e il tipo di database è Oracle 12c. Fare clic sul pulsante Avanti> per continuare:

La prossima serie di passaggi nella pagina successiva riguarda la selezione degli oggetti del database da importare nel modello.

  1. Il passaggio successivo consiste nel selezionare quali oggetti di database importare. Per questo esercizio, selezioneremo tutte le tabelle da importare. Si noti che esistono altri oggetti di database come viste, sequenze, ruoli, procedure archiviate e così via che potrebbero essere potenzialmente importati. Per questo esercizio, lo terremo semplice e guarderemo solo le tabelle. Dopo aver selezionato le tabelle, fare clic sul pulsante Avanti> per continuare.
  2. Il passaggio finale per l'importazione guidata è la revisione degli oggetti del database da importare. Se tutto sembra a posto, fai clic sul pulsante Fine per avviare l'importazione.
  3. A questo punto, a seconda del numero di tabelle che stai importando, potresti visualizzare una barra di avanzamento come:
  4. Al termine, verrà visualizzata una finestra del registro riepilogativo:

    Se sono presenti istruzioni non riuscite, salva questo registro per facilitare il debug.

  5. Presupponendo che il processo di importazione sia stato completato senza errori, nella finestra apparirà un nuovo modello relazionale. Potresti voler muoverti tra i tavoli per fare una bella sistemazione. Il modello utilizza la notazione "zampa di gallina" in cui la "zampa di gallina" rappresenta il lato "molti" della relazione. Quindi, ad esempio, una "regione" ha molti "paesi". Un "Paese" ha molte "Località" e così via.
  6. Puoi modificare il livello di dettaglio mostrato nel modello relazionale facendo clic con il pulsante destro del mouse sull'area di disegno e selezionando la voce di menu Visualizza dettagli.

Come promemoria, la maggior parte dei professionisti lo chiamerebbe in genere un "modello di database fisico" poiché include i tipi di dati, le chiavi, le chiavi esterne e gli indici implementati nello schema del database.

I passaggi per salvare il modello sono presentati nella pagina successiva.

  1. A questo punto al modello viene assegnato un nome temporaneo come Untitled_1. Per visualizzare questo modello nel "Browser", apri il menu Visualizza, seleziona Data Modeler e poi Browser. Apri il design Untitled_1, quindi apri i Modelli relazionali e infine il modello che prende il nome dalla tua connessione come mostrato di seguito:
  2. Fai clic con il pulsante destro del mouse sul design Untitled_1 e fai clic sulla voce di menu Salva design. Passare a una cartella adatta per salvare il lavoro e assegnare al progetto un nome file. Fai clic sul pulsante Salva quando questo è pronto:

A questo punto ora abbiamo (ciò che Oracle chiama) un modello relazionale che è essenzialmente uno specchio dello schema del database relazionale che abbiamo appena importato. In effetti, SQL Developer mantiene questi due sincronizzati in modo che se lo schema del database cambia, ciò si rifletterà nel modello relazionale e se vengono apportate modifiche al modello relazionale, possono essere inserite (implementate) nello schema del database.

Questo modello mostrerà tutte le tabelle (relazioni), chiavi, chiavi esterne, verificherà i vincoli e gli indici che possono o meno imporre l'unicità. Ad esempio, la relazione EMPLOYEES di seguito ha una chiave primaria EMPLOYEE_ID, tre chiavi esterne (JOB_ID, MANAGER_ID e DEPARTMENT_ID) e un vincolo univoco sulla colonna EMAIL:

La prossima serie di passaggi nella pagina successiva illustra come continuare il processo di reverse engineering per produrre un modello logico.

Reverse engineering del modello di relazione tra entità

A questo punto abbiamo decodificato uno schema di database in un modello relazionale che è un processo abbastanza semplice. L'ultimo passaggio consiste nel continuare il reverse engineering per produrre il modello Entity Relationship. Nota che Oracle chiama questo il "modello logico".

  1. Tornando al browser del modello di dati, apri le cartelle per i modelli relazionali e il modello logico come mostrato di seguito:
  2. Fai clic con il pulsante destro del mouse sul modello relazionale (il nostro si chiama sfscdb_pdb2_hr) e seleziona Engineer to Logical Model dal menu a comparsa come mostrato di seguito:
  3. Il Ingegnere al Modello Logico la finestra di dialogo dovrebbe apparire come di seguito. Ciascuna delle Tabelle e dei Riferimenti dovrebbe essere controllata. Ogni tabella verrà mappata a un'entità e ogni riferimento di chiave esterna deve essere mappato a una relazione tra entità. Una volta selezionati tutti gli elementi appropriati dalla finestra di sinistra, fare clic sul pulsante Engineer per creare il modello logico (ER).
  4. Il nuovo modello Entity Relationship dovrebbe apparire come mostrato di seguito. Per impostazione predefinita viene utilizzata la "Piede di gallina" o la notazione di Barker.

I dettagli delle relazioni (che Oracle chiama in modo confuso "relazioni") possono essere visualizzati facendo doppio clic sulla riga della relazione. Nell'esempio seguente la relazione tra le entità Impiegati e Lavori è aperta. Specificando le frasi verbali per i campi "Nome sulla fonte" e "Nome sulla destinazione", ogni relazione può essere completamente specificata con un livello di dettaglio elevato.

La figura seguente mostra la relazione completamente definita che leggerebbe:

One JOB may be a job performed by One or More EMPLOYEES
One EMPLOYEE must be performing One and Only One JOB

La notazione predefinita per il modello ER è la notazione Zampa di gallina o Barker. Per modificare la notazione in Bachman o in quella di Ingegneria dell'Informazione, fare clic con il pulsante destro del mouse in un punto qualsiasi del diagramma ed evidenziare la voce di menu Notazione. Seleziona una delle notazioni disponibili dall'elenco che compare.

Puoi aggiungere un titolo e altri dettagli al modello ER utilizzando lo strumento Nuova nota