Toon posts:

Tool om relaties uit onbekende database analyseren

Pagina: 1
Acties:
  • 139 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hoi.

Ben gevraagd een database te analyseren die op dit moment slecht gedocumenteerd is en waarvan de gebruikers niet weten hoe deze is opgebouwd.
Heb wel een aantal vage ERD's, maar deze zijn erg brak (relaties die grafisch door elkaar lopen, onduidelijk hoe keys gekoppeld zijn, enz) kortom een documentatiezooitje.

Wat ik dus graag wil is een degelijk ERD met daarin duidelijk aangegeven hoe tabellen gekoppeld zijn. Nu zijn er zoveel tabellen dat het eigenlijk ondoenlijk is om alles manueel door te lopen (kijken met welke key een FK overeenkomt).
Mijn vraag aan jullie:

Hoe kan ik (op een efficiente wijze) dit probleem oplossen en een duidelijk erd maken? Iemand nog tips met welk progje ik het beste (snelste + beste leesbaar) een ERD maken?

Verwijderd

Begin eerst eens met aan te geven wat voor een database het is. Dan wordt het voor ons ook een stuk makkelijker om een antwoord te verzinnen. :)

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 22-12-2025

PhysicsRules

Dux: Linux voor Eenden

MS Visio kan aan sommige databases gekoppeld worden. iig aan MS SQL.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Vragen naar tooltjes kan in Development Tools & Environments en vragen over het opstellen van documentatie passen beter in Software Engineering & Architecture. Vooralsnog denk ik dat je topic in dat eerste forum het beste op zijn plaats is. :)

PRG>>DTE

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Freeware: http://www.fabforce.net/

Er zijn tools die de releaties automatisch kunnen gokken adh van veldnamen etc.

[ Voor 55% gewijzigd door Verwijderd op 10-07-2006 16:26 ]


Verwijderd

Topicstarter
Gaat om een grote Oracle database.
Heb geen authorisatie om direct toegang tot deze db te krijgen.

Krijg een datadump (hoeveel gb het is weet ik nog niet) waaruit ik dus koppelingen tussen tabellen kan halen.
Enige wat ik heb is een brak pdfje met daarin de ERD's en een uitleg over de tabellen (wat de PK is, wat de FK's zijn en welke vorm de veldnamen hebben).

Wat ik graag wil: duidelijke ERD's zodat ik makkelijk queries kan uitvoeren en niet eerst hoef uit te vissen hoe tabellen gekoppeld zijn (welke FK slaat waar op..)

  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
Bij mijn vorige stage heb ik DBVisualizer (http://www.minq.se/products/dbvis/) gebruikt om een zeer grote Oracle 9i database te reverse-engineeren en dat werkte eigenlijk heel goed. Ook Microsoft Visio heeft deze mogelijkheid (al moet je wel even kijken in welke versies van Visio dit zit want ik meen dat de simpelere varianten dit niet of in beperkte mate kunnen).

DBVisualizer was toen ik het gebruikte nog gratis maar tegenwoordig is er zo te zien een free en een enterprise edition (die niet gratis is) dus ik zou niet kunnen zeggen wat de mogelijkheden van de gratis versie nou precies zijn. Maar ik zou zeggen, probeer het eens uit.

Het voordeel van DBVisualizer ten opzichte van Visio is wel dat in DBVisualizer wat meer geavanceerde layout generatie methodes zitten (zo kan je in DBV een orthogonaal diagram genereren). De versie van Visio die ik op dit moment gebruik kan dat niet en maakt er soms nogal onoverzichtelijke diagrammen van bij grote databases.

[Edit: als je niet direct toegang hebt tot de DB dan weet ik niet of dit mogelijk is. Maar kan je niet gewoon aan de sysadmin een read-only account vragen ofzo? Als ze willen dat jij voor hun een hele database gaat zitten reverse engineeren mag je toch van hun kant ook wel enige medewerking verwachten neem ik aan.]

[ Voor 17% gewijzigd door ReverendBizarre op 10-07-2006 16:32 ]


Verwijderd

Zelf gebruik ik Toad van Quest. Daar ben ik er tevreden over. Het is een zeer uitgebreid pakket waar onderandere reverse engineering mee mogelijk is.

Verwijderd

Topicstarter
Ben er mee bezig en kom al aardig in de richting. De producten die jullie aanprezen heb ik doorgecommuniceerd en blijkbaar is er al eerder een poging gewaagd. ERD's die eruit voortkomen zijn jammergenoeg niet veel beter dan de oorspronkelijke documentatie.

Lastig hoor, database doorgronden waar je echt geen fuck van af weet. Helemaal omdat ik nou niet echt een topper qua databases ben.
N00b vraagje hierover: de termen PK, FK zijn me bekend, maar wat stelt de term AK voor? Alternative key? En wat wordt precies met deze term bedoeld?

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 15-02 10:41
Als het een Oracle database is, dan is het met Oracle JDeveloper 10.1.3 (vrij te downloaden via otn.oracle.com) vrij eenvoudig op te lossen.
Maak met JDeveloper een connectie met de database. Vervolgens kun je een Offline Database Project aanmaken, waarin je alle tabellen uit je connectie sleept. Als het goed is worden de relaties ertussen getekend.
Vervolgens kun je je ERD door JDeveloper laten uitlijnen, waarna je zoiets krijgt:
Afbeeldingslocatie: http://www.xs4all.nl/~stiege/jeroen/GoT/erd.gif

[ Voor 30% gewijzigd door JeroenTheStig op 12-07-2006 11:44 ]


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Verwijderd schreef op maandag 10 juli 2006 @ 16:26:
Freeware: http://www.fabforce.net/

Er zijn tools die de releaties automatisch kunnen gokken adh van veldnamen etc.
Uhm relationale databases slaan relaties op in Metadata (meestal system tables), het is dus geen questie van gokken, maar gewoon het parsen van deze metadata.

Kortom het werkt iets nauwkeuriger als gokken ;)

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 14:02

BCC

raptorix schreef op vrijdag 14 juli 2006 @ 16:33:
[...]

Uhm relationale databases slaan relaties op in Metadata (meestal system tables), het is dus geen questie van gokken, maar gewoon het parsen van deze metadata.
Kortom het werkt iets nauwkeuriger als gokken ;)
Jij gaat er vanuit dat de aanwezige relaties ook werkelijk netjes gedefineerd zijn :). Ik ken menig Mysql database waar dat zeker niet het geval is en waarbij dat "gokken" zeker handig is.

[ Voor 5% gewijzigd door BCC op 14-07-2006 16:41 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Verwijderd

raptorix schreef op vrijdag 14 juli 2006 @ 16:33:
[...]

Uhm relationale databases slaan relaties op in Metadata (meestal system tables), het is dus geen questie van gokken, maar gewoon het parsen van deze metadata.

Kortom het werkt iets nauwkeuriger als gokken ;)
Niet alle databases doen dit.

Bovendien niet iedere getekende relatie hoeft een echte fysieke relatie in een DB te zijn (zeker niet als de DB de relatie niet opslaat in z'n metadata).

Zou wel moeten zeggen dat het gokken dan meestal wel gaat op Veldnamen en de combinatie van veldnamen in indexen

[ Voor 31% gewijzigd door Verwijderd op 14-07-2006 16:49 ]


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Zelfs als de database(-engine) het ondersteund betekend dat niet dat de ontwikkelaars van de database ook van die functionaliteit gebruik maken (spreek helaas uit ervaring :'()

Verwijderd

TheRookie schreef op vrijdag 14 juli 2006 @ 16:49:
Zelfs als de database(-engine) het ondersteund betekend dat niet dat de ontwikkelaars van de database ook van die functionaliteit gebruik maken (spreek helaas uit ervaring :'()
Kan goede redenen hebben.
Wij ontwikkelen onze software tegen Oracle/MS-SQL/Progress/ (vroeger ook nog DB2),
origineel was de software alleen in Progress. Omdan ff de software om te gooien en per
DB type bekijken wat wel en niet in de DB gedefinieerd kan worden kost (lees de managers) te veel tijd en geld (de ontwikkelaars zouden natuurlijk graag de meest optimale en best presterende oplossingen zien ;) )

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Verwijderd schreef op vrijdag 14 juli 2006 @ 16:42:
[...]


Niet alle databases doen dit.

Bovendien niet iedere getekende relatie hoeft een echte fysieke relatie in een DB te zijn (zeker niet als de DB de relatie niet opslaat in z'n metadata).

Zou wel moeten zeggen dat het gokken dan meestal wel gaat op Veldnamen en de combinatie van veldnamen in indexen
Ik had het ook over relationale database, en tjah als er geen relaties zijn gedefinieerd dan wordt het wel heel lastig om iets te reverse engineren.

Verwijderd

Topicstarter
Ben nu al een tijdje bezig, maar mag geen van de genoemde applicaties installeren ivm beveiliging. Op zich is dat allemaal uit te leggen, maar das voor nu niet interessant.

Waar ik dus mee zit en jullie hulp voor inroep is het volgende;
ik wil graag weten waar bepaalde informatie in de database wordt opgeslagen, en hoe tabellen gekoppeld zijn (zie eerste posts).
Heb nu globaal het proces getekend hoe informatie wordt verkregen, en wat (imho) een logische database opbouw zou zijn. Kom hierdoor wat verder, maar onduidelijke veldnamen zorgen voor ergenis..

Wat is volgens jullie de manier om een database verder uit te pluizen zonder gebruik te maken van externe applicaties. Wil graag weten hoe jullie het zouden aanpakken. Kan ik vervolgens mijn voordeel weer mee doen.

[extra info]
Wil graag info over de database om zo beter queries er op uit te kunnen voeren. De database maakt onderdeel uit van een groter systeem dat gekoppeld is met een extern systeem (systeem van ons bedrijf). Ben bezig te onderzoeken of deze verbinding adequaat is en of de data tussen beide systemen overeenkomt (goed wordt overgezet). Mijn onderzoek hangt samen met een grotere audit naar de kwaliteit van de verbinding tussen beide systemen.
[\extra info]

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Verwijderd schreef op zondag 16 juli 2006 @ 21:42:
ik wil graag weten waar bepaalde informatie in de database wordt opgeslagen, en hoe tabellen gekoppeld zijn
Wat ik gedaan heb met de db waar ik in geïnteresseerd was (MS Sql based) met behulp van de profiler kijken wat voor queries de front-end uitvoerd als er bepaalde info werd opgevraagd, dat heeft mij igg een hoop trial-and-error bespaard.

Ik neem aan dat Oracle een vergelijkbare tool heeft en dat die niet als 'externe applicatie' beschouwd wordt...
Ben nu al een tijdje bezig, maar mag geen van de genoemde applicaties installeren ivm beveiliging. Op zich is dat allemaal uit te leggen, maar das voor nu niet interessant.
[..]
Mijn onderzoek hangt samen met een grotere audit
[..]
Op het moment dat er een audit plaats moet vinden en jij maakt onderdeel uit van het audit team zal je toch ook de tools tot je beschikking moeten hebben om die audit naar behoren uit te kunnen voeren ?

  • T-8one
  • Registratie: Oktober 2001
  • Laatst online: 15-02 11:42

T-8one

take it easy, take a sisi

Verwijderd schreef op zondag 16 juli 2006 @ 21:42:
Ben nu al een tijdje bezig, maar mag geen van de genoemde applicaties installeren ivm beveiliging. Op zich is dat allemaal uit te leggen, maar das voor nu niet interessant.

Waar ik dus mee zit en jullie hulp voor inroep is het volgende;
ik wil graag weten waar bepaalde informatie in de database wordt opgeslagen, en hoe tabellen gekoppeld zijn (zie eerste posts).
Heb nu globaal het proces getekend hoe informatie wordt verkregen, en wat (imho) een logische database opbouw zou zijn. Kom hierdoor wat verder, maar onduidelijke veldnamen zorgen voor ergenis..

Wat is volgens jullie de manier om een database verder uit te pluizen zonder gebruik te maken van externe applicaties. Wil graag weten hoe jullie het zouden aanpakken. Kan ik vervolgens mijn voordeel weer mee doen.

[extra info]
Wil graag info over de database om zo beter queries er op uit te kunnen voeren. De database maakt onderdeel uit van een groter systeem dat gekoppeld is met een extern systeem (systeem van ons bedrijf). Ben bezig te onderzoeken of deze verbinding adequaat is en of de data tussen beide systemen overeenkomt (goed wordt overgezet). Mijn onderzoek hangt samen met een grotere audit naar de kwaliteit van de verbinding tussen beide systemen.
[\extra info]
Wat mag je wel met die database dan?

mbv bijvoorbeeld TOAD kun je heel makkelijk de relaties tussen de tabellen bekijken, maar als je dat niet mag gebruiken zou ik het even niet weten.
Misschien SQLplus en dan van elke tabel een describe doen :X

Ze kunnen op de database toch gewoon een user aanmaken die geen mutatierechten heeft, dan kun je ook niets verknallen aan de data.

GP 32 the most powerfull handheld in the world :P


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 15-02 10:41
@Tizzwat

Voor het installeren van JDeveloper 10.1.3 heb je geen extra rechten nodig. Als je de zip van otn.oracle.com uitpakt op je persoonlijke share, kun je hem al opstarten.
Pagina: 1