Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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, 2693 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
Batch & Shell
gelöst Datenbankabfrage Powershell (3)

Frage von internet2107 zum Thema Batch & Shell ...

Firewall
gelöst Unterschied Source Port und Service (5)

Frage von sandisk1 zum Thema Firewall ...

Windows Server
Mehrer Netzlaufwerke mappen die auf einem Server liegen (7)

Frage von M.Marz zum Thema Windows Server ...

Windows Server
gelöst Aufgabenplanung - Unterschiede bei der Option Konfigurieren für (2)

Frage von scout71 zum Thema Windows Server ...

Neue Wissensbeiträge
Windows 10

Erneutes Starten eines Programmes mit Admin-Rechten

Tipp von Estefania zum Thema Windows 10 ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(3)

Information von thomasreischer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (16)

Frage von Lynkon zum Thema TK-Netze & Geräte ...