Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 2663 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 ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Humor (lol)
Der Unterschied zwischen USA und USB

Link von BirdyB zum Thema Humor (lol) ...

Windows Server
AD Replikation zwischen untergeordneten Domäne zwingend? (1)

Frage von Gien-app zum Thema Windows Server ...

Microsoft Office
Button für Wechseln zwischen den Tabellenblättern (6)

Frage von lupi1989 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...