# Datenbank Theorie Fragen



## b1zarRe (25. Okt 2011)

Hi, ich habe mal ein paar Theoretische Fragen zu Datenbanken... ich hoffe mir kann hier weitergeholfen
werden, da unser Professor die Sachen nicht besprechen möchte und ich mit
Hilfe des Skripts hier und da nicht schlau werde...

btw. Hoffe ich hab das richtige Forum gewählt...ansonsten pls verschieben in Softwareentwicklung. danke.

1) Werden Daten in einem Datenbanksystem einmal oder zur Sicherheit mehrmals 
abgespeichert??? -> Ich hätte nun gesagt, dass prinzipiell das DBMS diese gespeicherten
verwaltet aber für die Speicherung egtl. direkt die Dateiverwaltung mithilfe einer
externen Festplatte/ oder mehrerer abzusichern.

2) Thema Datensatz: Meiner Meinung nach werden jedem User bestimmte Rechte
vergeben (nur Leserecht, oder Lese+Schreibrecht); der Admin darf auf alle
Daten zugreifen und wenn irgendetwas geändert wird am Datensatz kriegen die
anderen User eine Schreibsperre damit nicht mehrere Benutzer zeitgleich Daten
ändern können. Ein Datensatz darf aber während des Änderns von anderen
Benutzern gelesen werden.

3) Suchen in einer Datenbank -> Effizienz. Dauert es doppelt solange eine
Kennnummer in einem Datensatz von 20 000 gesicherten Daten zu suchen als
in einer von 10 000.? Ich würde sagen nein. Aus dem Grund, weil die "Liste" nicht
sukzessive abgearbeitet wird sondern beispielsweise mit einem Kennschlüssel sortiert
werden kann bzw. hier der Kennnummer und es sicherlich nicht immer
doppelt solange dauert... wenn überhaupt im worst case.

4) "Aus einer konventionellen Datenbank kann man nur die Daten zurückgewinnen,
die auch explizit eingespeichert wurden" - Das verstehe ich leider garnicht.

5) In einer Datenbank können nur wahre Informationen gespeichert werden. - Falsch,
ob die Daten "richtig" oder "korrekt" sind muss ansich der Nutzer entscheiden, aber
ein DBMS versichert eine konsistente Integritätsbedingungen.


----------



## homer65 (25. Okt 2011)

b1zarRe hat gesagt.:


> 1) Werden Daten in einem Datenbanksystem einmal oder zur Sicherheit mehrmals
> abgespeichert??? -> Ich hätte nun gesagt, dass prinzipiell das DBMS diese gespeicherten
> verwaltet aber für die Speicherung egtl. direkt die Dateiverwaltung mithilfe einer
> externen Festplatte/ oder mehrerer abzusichern.


Sie werden einmal abgespeichert. Zur Sicherheit macht man Backups.
Außerdem werden Änderungen in Logs abgelegt, so das man mithilfe von Backup und Log 
immer zum aktuellen Zeitpunkt recovern kann.


> 2) Thema Datensatz: Meiner Meinung nach werden jedem User bestimmte Rechte
> vergeben (nur Leserecht, oder Lese+Schreibrecht); der Admin darf auf alle
> Daten zugreifen und wenn irgendetwas geändert wird am Datensatz kriegen die
> anderen User eine Schreibsperre damit nicht mehrere Benutzer zeitgleich Daten
> ...


Da bieten Datenbanksysteme sehr ausgefeilte Konzepte, die den Rahmen hier sprengen werden.
Es ist erheblich komplizierter.


> 3) Suchen in einer Datenbank -> Effizienz. Dauert es doppelt solange eine
> Kennnummer in einem Datensatz von 20 000 gesicherten Daten zu suchen als
> in einer von 10 000.? Ich würde sagen nein. Aus dem Grund, weil die "Liste" nicht
> sukzessive abgearbeitet wird sondern beispielsweise mit einem Kennschlüssel sortiert
> ...


Sofern ein passender Index vorhanden ist, dauert es nicht doppelt so lange


> 4) "Aus einer konventionellen Datenbank kann man nur die Daten zurückgewinnen,
> die auch explizit eingespeichert wurden" - Das verstehe ich leider garnicht.


Ich auch nicht


> 5) In einer Datenbank können nur wahre Informationen gespeichert werden. - Falsch,
> ob die Daten "richtig" oder "korrekt" sind muss ansich der Nutzer entscheiden, aber
> ein DBMS versichert eine konsistente Integritätsbedingungen.


Häh???


----------



## nillehammer (25. Okt 2011)

> 2) Thema Datensatz: Meiner Meinung nach werden jedem User bestimmte Rechte
> vergeben (nur Leserecht, oder Lese+Schreibrecht); der Admin darf auf alle
> Daten zugreifen und wenn irgendetwas geändert wird am Datensatz kriegen die
> anderen User eine Schreibsperre damit nicht mehrere Benutzer zeitgleich Daten
> ...


Stimmt, es ist etwas komplizierter. Stichwort ist hier Isolation Level (Isolation (database systems) - Wikipedia, the free encyclopedia ). Welche unterstützt werden, hängt von der jeweiligen Datenbank ab. Der von Dir beschriebene wird aber in jedem Fall unterstützt.


> 4) "Aus einer konventionellen Datenbank kann man nur die Daten zurückgewinnen,
> die auch explizit eingespeichert wurden" - Das verstehe ich leider garnicht.


Könnte in dieser Frage vielleicht verklausuliert sein, dass eine Transaktion committed sein muss, bevor die Daten wirklich gespeichert werden und damit auch zurück gewonnen werden können?


----------



## b1zarRe (26. Okt 2011)

@homer65

"1) 
Sie werden einmal abgespeichert. Zur Sicherheit macht man Backups.
Außerdem werden Änderungen in Logs abgelegt, so das man mithilfe von Backup und Log 
immer zum aktuellen Zeitpunkt recovern kann."

-> Stimmt! Das mit der Logdatei hatten wir auch in der Vorlesung... ich erinnere mich 


2) Kannst Du mir vllt. ein Link oder Ähnliches dazu nahe legen?

"3)
Sofern ein passender Index vorhanden ist, dauert es nicht doppelt so lange
"
-> Wie kann man die Indexe den vorteilsweise verteilen?

@nillehammer
4) "Könnte in dieser Frage vielleicht verklausuliert sein, dass eine Transaktion committed sein muss, bevor die Daten wirklich gespeichert werden und damit auch zurück gewonnen werden können?"
-> Ich glaube nicht daran... bzw. bin mir unsicher, da eine andere Frage lautete, was passiert, wenn ein Stromausfall in
einer Bank auftritt... Und das hat ja eher was mit mit Transaktion zutun(diese wird dann ja nicht vollständig abgearbeitet und somit zurückgesetzt).


Zu 5.) Ich glaube das stimmt echt:
"5) In einer Datenbank können nur wahre Informationen gespeichert werden. - Falsch,
ob die Daten "richtig" oder "korrekt" sind muss ansich der Nutzer entscheiden, aber
ein DBMS versichert eine konsistente Integritätsbedingungen."
-> Ich habe gerade bei Wiki gelesen, dass es logische und technische Fehler geben kann. (Ich würde auch noch semantische Fehler mit einbeziehen)...:
Und zwar beziehen die Integritätsbedingungen sich, wenn ich es richtig verstanden habe, darauf, dass ein DBMS überprüft und sicherstellt, wer welche Rechte zur Datenveränderung hat und zb. sicherstellt, dass wenn jemand eine Tabelle löschen möchte, eine andere Tabelle die im Kontext mit der zur löschenden Tabelle doch nicht gelöscht wird, weil die Daten
noch gebraucht werden.

Alle Fragen sollten sich egtl. auf das Relationale Datebankmodell beziehen, da wird die anderen 3 oder 4 Modelle die es so gibt nur kurz angesprochen habe und uns eher auf das relationale beziehen.


5) In einer Datenbank können nur wahre Informationen gespeichert werden. - Falsch,
ob die Daten "richtig" oder "korrekt" sind muss ansich der Nutzer entscheiden, aber
ein DBMS versichert eine konsistente Integritätsbedingungen.
Häh???


----------



## nillehammer (26. Okt 2011)

b1zarRe hat gesagt.:
			
		

> -> Wie kann man die Indexe den vorteilsweise verteilen?


Die Indexe werden von der Datenbank selbst verwaltet. Das einzige, was man als Administrator machen kann, ist die Datenbank anzuweisen, auf bestimmte Spalten einen Index zu legen. Bei Primary Keys macht es die DB automatisch. Ansonsten kommen Spalten in Frage, die als Suchbedingung in SQL-Statements benutzt werden.



			
				b1zarRe hat gesagt.:
			
		

> Und zwar beziehen die Integritätsbedingungen sich, wenn ich es richtig verstanden habe, darauf, dass ein DBMS überprüft und sicherstellt, wer welche Rechte zur Datenveränderung hat und zb. sicherstellt, dass wenn jemand eine Tabelle löschen möchte, eine andere Tabelle die im Kontext mit der zur löschenden Tabelle doch nicht gelöscht wird, weil die Daten
> noch gebraucht werden.


Die Rechteüberprüfung macht eine Datenbank natürlich auch. Aber (Referentielle) Integrität mein etwas anderes. Daten haben untereinander Beziehungen (Relationen) z.B. Mitarbeiter ist Abteilung zugeordnet. Du hättest also in der Tabelle Mitarbeiter eine Spalte AbtId mit Fremdschlüssel auf die Tabelle Abteilung. Wenn jetzt jemand versucht, eine Abteilung (und zwar eine Zeile und nicht die ganze Tabelle) zu löschen, in der noch Mitarbeiter zugeordnet sind, würde referentielle Integrität verletzt und die Datenbank würde das nicht zulassen.


----------



## b1zarRe (26. Okt 2011)

Ok vielen dank dafür!!!

Noch 2-3 kleinere Fragen auf die ich im Netz bisher noch nichts gefunden habe(leider auch im Skript nicht weiter erläutert...):

1) Definition IB
2) Defition AWP (nicht die Waffe, sondern natürlich in DB Kontext :b)
3) Wir haben eine Tabelle im Skript die zeigt, wie man bei einer Synchronisation vorgehen kann
(mithilfe von sperren):

         Read  Write
Read    +       -
Write    -        -

Irgendwie kann ich nur die erste Zeile deuten. Also wenn jemand nur Leserecht hat, dann kann er natürlich nur lesen und nicht schreiben... Aber warum bei Write zweimal ein - oO?! Hätte er gedacht 2 +e ??


----------



## nillehammer (26. Okt 2011)

> Read Write
> Read + -
> Write - -
> 
> Irgendwie kann ich nur die erste Zeile deuten. Also wenn jemand nur Leserecht hat, dann kann er natürlich nur lesen und nicht schreiben... Aber warum bei Write zweimal ein - oO?! Hätte er gedacht 2 +e ??



So ohne Formatierung ist sehr schwer zu erkennen, was die Tabelle bedeuten soll. Deswegen habe ich sie nochmal in Code-Tags gepackt:

```
Read   Write
Read   +         -
Write  -         -
```
Ich interpretiere das so: Wenn jemand lesend zugreift (Zeile Read: ), dann bekommt er eine Read-Sperre. Hier können nun auch andere lesend zugreifen (also weitere Read-Sperren anfordern). Das hat keine negativen Auswirkungen. Während gelesen wird, darf nicht geändert werden, weil dann die Daten möglicherweise inkonsistent gelesen werden.

Wenn jemand schreibt (Zeile Write: ), darf kein anderer schreiben, weil sich sonst die Datenänderungen überholen könnten und nur Mist geschrieben wird. Es darf aber zu der Zeit auch niemand lesen, weil der Schreibvorgang ja noch läuft und deswegen möglicherweise inkonsistente Daten gelesen würden.

Es geht hier also nicht um Lese- / Schreibrechte im Sinne von ein Admin vergibt diese, sondern im Sinne von "Ich fordere das Recht an und gebe es wieder ab." In dem Zusammenhang ist Recht auch ein blöder Begriff. Besser wäre "Sperre"


----------



## b1zarRe (26. Okt 2011)

Danke!

dann wären nurnoch diese Fragen offen:

1) Definition IB
2) Defition AWP (nicht die Waffe, sondern natürlich in DB Kontext :b)
3) Kann ein Admin wirklich alle Datensätze(auch von anderen Usern erstellt) bearbeiten, verändern etc.?


----------



## nillehammer (26. Okt 2011)

Zu 1) und 2): Hab ich beides noch nicht gehört. Ich würde hier also nur Links aus dem Web zitieren können. (Das bringt Dich ja nicht wirklich weiter)
Zu 3) Ich kenne nur Oracle, MySql und HSQLDB. Hier ist es so, dass der Administrator (SYSTEM, root, sa) volle Rechte hat, also auch Daten änder darf.


----------

