Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Wo liegen die Unterschiede zwischen mengenorientierten und navigationsorientierten Datenbankabfragen?

Frage Entwicklung Datenbanken

Mitglied: Mavico

Mavico (Level 1) - Jetzt verbinden

10.07.2011 um 14:58 Uhr, 2697 Aufrufe, 1 Kommentar

Hallo,

wie der Ttel schon aussagt, interessiert es mich, wo genau die Unterschiede zwischen mengenorientierten und navigationsorientierten Datenbankabfragen liegen.
Bisher dachte ich, dass Entwickler in ihre Applikationen einfach die SQL-Statements direkt einprogrammieren.

Beispielsweise so:

SLECT AdrNr, Name, PLZ, Ort
FROM ADRESSEN
WHERE Land = 'Deutschland'
ORDER BY AdrNr

Das Datenbankmanagementsystem erhält das SQL-Statement und liefert die entsprechenden Werte an die Applikation zurück. Was heißt es jetzt in der Praxis,
wenn man von navigationsorientierten Datenbankabfragen spricht? Programmiert man die Abfrage dann nicht mehr in SQL? Hat das eventuell etwas mit ISAM (Index Sequential Access Method) zutun?
Unter http://de.wikipedia.org/wiki/Index_Sequential_Access_Method kann man nachlesen, dass ISAM eine entwickelte Zugriffsmethode für Datensätze einer Datei von IBM ist. Leider konnte ich weitergehende
informationen zu diesem Thema nicht finden.

Über Antworten und Links/Verweise zur weiterführenden Literatur (gerne auch in Englisch) bin ich Euch sehr dankbar.

Gruß

Mavico
Mitglied: Biber
10.07.2011 um 23:20 Uhr
Moin Mavico,

"mengenorientierte" und "navigationsorientierte" Abfragen gibt es so in ausschliesslicher Reinform nicht - beides sind Designentscheidungen, die auch in "relationalen DBMSen" an bestimmten Stellen umgesetzt werden (können).

Der historische Klassiker ist in der Tat die ISAM, einfacher und durchaus genialer Grundgedanke dabei: Wenn ich logisch unahängige Teile des Gesamtdatenbestandes in einzelnen (physikailsch getrennten) Segmenten ablege, dann brauche ich im einzelnen Segment die Information, was dieses Segment enthält, NICHT mehr in jedem einzelnen Datesatz zu speichern.

Weniger abstrakt am Beispiel deines ADRESSEN-Statements oben:
01.
SELECT AdrNr, Name, PLZ, Ort 
02.
FROM ADRESSEN 
03.
WHERE Land = 'Deutschland' 
04.
ORDER BY AdrNr
Wenn wir uns diese Abfrage anschauen, dann wäre doch eine Argumentation:
"Hey, DIESE Abfrage macht ja dann Sinn, wenn im Fall "Land=Deutschland" ein 5-stelliges Feld "PLZ" abgefragt wird.
Macht denn diese Abfrage auf dieselbe Tabelle mit denselben Feldern auch Sinn, wenn das Land Brasilien, Ghana oder die Mongolei ist?
Gibt es da 5stellige Postleitzahlen? Wohl kaum. Warum dann also EINE Adresstabelle für alle Länder?"


Ebenfalls ein gutes Beispiel wäre eine Adresstabelle, die vielleicht für das Land "Deutschland" ein Feld "Bundesland" enthalten kann, aber bei Land =Schweiz sinnvoller ein Feld "Kanton" enthalten müsste, bei anderen Staaten dagegen vielleicht "Department" oder "Bezirk".

Wenn also im Fall "Land =Deutschland" ein separates physikalisches Segment (oder eine eigene Tabelle) abgefragt werden würde, dann braucht dieses "Segment" natürlich nicht mehr ein Feld "LAND" mit dem Wert "Deutschland" enthalten - und auch das "WHERE Land='Deutschland'" ist überflüssig.

Nachteil - eine Gesamtabfrage uber die "ADRESSEN" aus Deutschland, Ghana und der Mongolei wäre viel aufwändiger - die sind ja nicht nur physikalisch eigene Tabellen, sondern können auch ziemlich schnell unterschiedliche Strukturen, Felder und Feldlängen haben.
Und der größte Nachteil - natürlich kann es die "gleichen" Datensätze, zum Beispiel das "gleiche" Feld "AdrNr" mit dem Wert 4711 in mehreren "Segmenten" geben -why not.


Nichtsdestotrotz - "navigationsorientiertes Design" bleibt nicht aus in einer Frontend-Welt, die sehr oft von java-üblichen Hierarchie-Baumstrukturen geprägt ist. Wenn du bei einer beliebigen Registrierungsmaske für eine Evaluationssoftware die Standardfelder ausfüllst, dann siehst du genau dieses Konzept.

Du wirst ziemlich früh nach einem Heimatland gefragt - nach Eingabe von "Germany" geht es mit einer Unterabfrage nach den einzeln aufgeführten 16 "Bundesländern" weiter. Im Fall "Land=United States" kommen die Zipcodes der 50 Staaten. Einzelne Segmente, physikalisch unabhängig.

Nachteil - die Detailtabelle "Bundesländer" oder "Postalcode" trägt eben keine Information darüber, dass die Daten nur noch im Kontext "Deutschland" oder "United States" einen Sinn ergeben. Der Entwickler muss eben die richtigen Tabellen miteinander verknüpfen - eine Verknüpfung über mehrere gemeinsame Felder ist in der Regel nicht mehr möglich. Und eine "programmunabhängige Lesbarkeit/Interpretierbarkeit der Daten" ist de facto nicht mehr gegeben - ohne das Kopfwissen der Entwickler "Wenn Land=Deutschland, dann benutze Tabelle Bundesländer" oder eine penible Dokumention hast du verratzt, wenn du nur die Tabelleninhalte siehst.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Datenbanken
Hilfe bei Datenbankabfrage
gelöst Frage von e51bomagDatenbanken11 Kommentare

Hallo liebe Community, hab gerade ein Blackout bzgl. Realisierung einer Abfrage. Folgende Datenbank: noten: nid, loginname, fid, note, type ...

Batch & Shell
Datenbankabfrage Powershell
gelöst Frage von internet2107Batch & Shell3 Kommentare

Ich versuche auf eine Datenbank zuzugreifen, was auch soweit klappt. Jedoch möchte ich gerne alle Tabellen listen, die sich ...

Virtualisierung
VirtualBox: Gast kracht weg - woran kann es liegen?
Frage von QQR700Virtualisierung7 Kommentare

Hallo, ich habe VirtualBox auf einem ubuntu-server (14.04.2) installiert. Ziel ist es, verschiedene Systeme im HeadlessModus laufen zu lassen. ...

Windows Server
Mehrer Netzlaufwerke mappen die auf einem Server liegen
Frage von M.MarzWindows Server7 Kommentare

Hallo, ich möchte gerne mehrer Netzlaufwerke mit einem Anmeldeskript die auf dem DC 2008R2 liegen in meinem Windows Explorer ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 1 TagWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 1 TagSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Router & Routing
OpenWRT bzw. L.E.D.E auf Buffalo WZR-HP-AG300H - update
gelöst Frage von EpigeneseRouter & Routing11 Kommentare

Guten Tag, ich habe auf einem Buffalo WZR-HP-AG300H die alternative Firmware vom L.E.D.E Projekt geflasht. Ich bin es von ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.