sql >> Database >  >> RDS >> Oracle

Reverse Engineering van een gegevensmodel met Oracle SQL Developer

Inleiding

Deze tutorial introduceert de Oracle SQL Developer Data Model-tools die kunnen worden gebruikt om een ​​bestaand databaseschema om te zetten in een relationeel en logisch model. Overweeg een typisch database-ontwikkelingsproces dat begint met de zakelijke gebruikersvereisten die zijn gemodelleerd als een entiteitsrelatiemodel bestaande uit entiteiten, attributen, identifiers en relaties. Dit E-R-model wordt vervolgens omgezet in een Relationeel model bestaande uit Relaties, Attributen, Sleutels en Foreign Keys. Het relationele model kan worden geïmplementeerd in een relationele database als een set tabellen, kolommen en beperkingen, inclusief beperkingen op het gebied van unieke, primaire en externe sleutels.

We kunnen situaties tegenkomen waarin we al een relationeel databaseschema hebben geïmplementeerd, maar het originele relationele model of het entiteitsrelatiemodel missen dat werd gebruikt om de database te ontwerpen. In deze situaties kunnen we het E-R-model mogelijk opnieuw maken door reverse engineering het model uit het databaseschema. Om dit te bereiken moeten we de volgende stappen ondernemen:

  1. Verbind het databaseschema en identificeer alle bestaande tabellen, hun kolommen en hun primaire en externe sleutelbeperkingen.
  2. Construeer het relationele model dat overeenkomt met de bestaande set tabellen en beperkingen.
  3. Leid het E-R-model af van het relationele model.

Terminologie datamodel

Oracle SQL Developer gebruikt termen die iets anders zijn dan wat doorgaans wordt gebruikt in academische databasecursussen. Het fysieke model (met sleutels, externe-sleutelrelaties en indexen) dat wordt geëxtraheerd uit het databaseschema wordt door Oracle SQL Developer het "Relationele Model" genoemd. De verzameling entiteiten met relatielijnen wordt door Oracle SQL Developer het "Logische Model" genoemd.

Vereisten

Voordat u aan deze zelfstudie begint, moet u ervoor zorgen dat u met Oracle SQL Developer versie 4.x of nieuwer werkt. Helaas wordt Oracle 12c mogelijk nog steeds geleverd met versie 3.x van SQL Developer die de tools voor gegevensmodellering mist.

Als u SQL Developer moet verkrijgen en installeren, of als u tips wilt hebben om aan de slag te gaan met SQL Developer, bekijk dan de tutorial.

U hebt ook de referenties (hostnaam, poort, servicenaam, gebruikersnaam en wachtwoord) nodig voor het 'HR' (of ander) voorbeeldschema dat wordt geleverd met Oracle 11g en Oracle 12c.

De volgende stappen zijn uitgevoerd met SQL Developer 4.1 op Windows 7 gekoppeld aan het voorbeeldschema 'HR' in een Oracle 12c-database.

Reverse engineering van het relationele model uit een databaseschema

  1. Voer Oracle SQL Developer uit en maak een verbinding met het databaseschema waarmee u gaat werken. In dit voorbeeld hebben we een verbinding gemaakt met het 'HR'-schema, de voorbeelddatabase van Human Resources die wordt geleverd met Oracle 11g en Oracle 12c.
  2. Trek het menu Bestand naar beneden, selecteer Data Modeler en vervolgens het submenu Importeren. Klik op de Data Dictionary-selectie in het vervolgmenu zoals hieronder weergegeven. Hiermee wordt de wizard Gegevenswoordenboek importeren gestart:
  3. Selecteer de verbinding waarmee u wilt werken. U kunt ook op de knop Toevoegen klikken om een ​​nieuwe verbinding toe te voegen. Nadat u uw verbinding heeft gemarkeerd, klikt u op de knop Volgende> om door te gaan.
  4. De volgende stap is het selecteren van het te importeren schema. Voor dit voorbeeld hebben we het vakje voor het 'HR'-schema aangevinkt, zoals hieronder weergegeven. Merk op dat de selectie "Importeren naar:" Nieuw relationeel model toont en dat het databasetype Oracle 12c is. Klik op de knop Volgende> om door te gaan:

De volgende reeks stappen op de volgende pagina behandelt het selecteren van de database-objecten die in het model moeten worden geïmporteerd.

  1. De volgende stap is om te selecteren welke database-objecten moeten worden geïmporteerd. Voor deze oefening selecteren we alle tabellen die geïmporteerd moeten worden. Merk op dat er andere database-objecten zijn, zoals views, sequenties, rollen, opgeslagen procedures, enz. die mogelijk ook geïmporteerd kunnen worden. Voor deze oefening houden we het simpel en kijken we alleen naar de tabellen. Klik na het selecteren van de tabellen op de knop Volgende> om door te gaan.
  2. De laatste stap voor de importwizard is het bekijken van de databaseobjecten die moeten worden geïmporteerd. Als alles er goed uitziet, klikt u op de knop Voltooien om het importeren te starten.
  3. Op dit punt, afhankelijk van het aantal tabellen dat u importeert, ziet u mogelijk een voortgangsbalk zoals:
  4. Als dit is voltooid, verschijnt er een venster Overzichtslogboek:

    Als er mislukte instructies zijn, sla dit logboek dan op om te helpen bij het opsporen van fouten.

  5. Ervan uitgaande dat het importproces zonder fouten is voltooid, verschijnt er een nieuw relationeel model in het venster. Misschien wilt u rond de tafels bewegen om een ​​mooi arrangement te maken. Het model gebruikt de notatie "Crow's Foot" waarbij de "Crow's Foot" de "Veel"-kant van de relatie vertegenwoordigt. Zo heeft bijvoorbeeld één 'regio' veel 'landen'. Eén "Land" heeft veel "Locaties", enzovoort.
  6. U kunt het detailniveau dat in het relationele model wordt weergegeven, wijzigen door met de rechtermuisknop op het canvas te klikken en het menu-item Details bekijken te selecteren.

Ter herinnering:de meeste beoefenaars zouden dit doorgaans een 'fysiek databasemodel' noemen, omdat het de gegevenstypen, sleutels, externe sleutels en indexen omvat die in het databaseschema zijn geïmplementeerd.

Stappen voor het opslaan van het model worden gepresenteerd op de volgende pagina.

  1. Op dit punt krijgt het model een tijdelijke naam, zoals Untitled_1. Om dit model in de "Browser" te bekijken, trekt u het menu Beeld naar beneden, selecteert u Data Modeler en vervolgens Browser. Open het Untitled_1-ontwerp en open vervolgens de relationele modellen en tenslotte het model dat naar uw verbinding is genoemd, zoals hieronder weergegeven:
  2. Klik met de rechtermuisknop op het Untitled_1-ontwerp en klik op het menu-item Ontwerp opslaan. Navigeer naar een geschikte map om uw werk op te slaan en geef het ontwerp een bestandsnaam. Klik op de knop Opslaan zodra dit klaar is:

Op dit punt hebben we nu (wat Oracle noemt) een relationeel model dat in wezen een spiegel is van het relationele databaseschema dat we zojuist hebben geïmporteerd. In feite houdt SQL Developer deze twee gesynchroniseerd, zodat als het databaseschema verandert, dit wordt weerspiegeld in het relationele model, en als er wijzigingen worden aangebracht in het relationele model, deze kunnen worden doorgevoerd in (geïmplementeerd in) het databaseschema.

Dit model toont alle tabellen (relaties), sleutels, externe sleutels, controlebeperkingen en indexen die al dan niet uniciteit afdwingen. De onderstaande EMPLOYEES-relatie heeft bijvoorbeeld een primaire sleutel EMPLOYEE_ID, drie externe sleutels (JOB_ID, MANAGER_ID en DEPARTMENT_ID) en één unieke beperking op de EMAIL-kolom:

De volgende reeks stappen op de volgende pagina behandelt hoe u het reverse engineering-proces kunt voortzetten om een ​​logisch model te produceren.

Reverse engineering van het entiteitsrelatiemodel

Op dit punt hebben we een databaseschema reverse-engineered naar een relationeel model, wat een vrij eenvoudig proces is. De laatste stap is om door te gaan met reverse engineering om het Entity Relationship-model te produceren. Merk op dat Oracle dit het "logische model" noemt.

  1. Keer terug naar de datamodelbrowser en open de mappen voor relationele modellen en logisch model zoals hieronder weergegeven:
  2. Klik met de rechtermuisknop op het relationele model (het onze heet sfscdb_pdb2_hr) en selecteer Engineer naar logisch model in het pop-upmenu zoals hieronder weergegeven:
  3. Het Ingenieur naar Logisch Model dialoogvenster zou moeten verschijnen zoals hieronder. Elk van de tabellen en verwijzingen moet worden gecontroleerd. Elke tabel wordt toegewezen aan een entiteit en elke refererende sleutelreferentie moet worden toegewezen aan een relatie tussen entiteiten. Zodra alle relevante elementen uit het linkervenster zijn geselecteerd, klikt u op de knop Engineer om het logische (ER) model te maken.
  4. Het nieuwe Entity Relationship-model zou er als volgt uit moeten zien. Standaard wordt de "Crow's Foot" of Barker's notatie gebruikt.

Details van de relaties (die Oracle verwarrend "relaties" noemt) kunnen worden bekeken door te dubbelklikken op de relatieregel. In het onderstaande voorbeeld is de relatie tussen de entiteiten Werknemers en Vacatures open. Door werkwoordzinnen op te geven voor de velden 'Naam op bron' en 'Naam op doel', kan elke relatie volledig worden gespecificeerd in een groot detailniveau.

De onderstaande afbeelding toont de volledig gedefinieerde relatie die zou luiden:

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

De standaardnotatie voor het ER-model is de Crow's Foot- of Barker-notatie. Als u de notatie wilt wijzigen in Bachman- of Information Engineering-notatie, klikt u met de rechtermuisknop ergens in het diagram en markeert u het menu-item Notatie. Selecteer een van de beschikbare notaties in de lijst die verschijnt.

U kunt een titel en andere details aan het ER-model toevoegen met de tool Nieuwe notitie


  1. Verbinding maken met Vertica in IRI Workbench

  2. Retourneer de huidige werkstationnaam die is verbonden met SQL Server (T-SQL)

  3. De 8 meest populaire databases

  4. MyBatis Lijstwaarden invoegen