Announcement

Collapse
No announcement yet.

welches DB Schema für einen Bibel Handschrift

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • welches DB Schema für einen Bibel Handschrift

    Hallo,

    im Rahmen eines sozialen Einsatzes für einen gemeinnützigen Verein, habe ich mich bereit erklärt eine Anwendung für eine alte Bibelhandschrift zu erstellen.

    Ich komme mit PHP und MySQL gut zurecht, stehe mit diesem Projekt jedoch ein bissl auf dem Schlauch....

    Wäre super wenn mir jemand einen Tipp geben könnte.

    Welches Schema wäre dafür sinnvoll:

    In dieser alten Handschrift sind einige Bibelbücher teilweise enthalten.

    Nehmen wir z.B. das Evangelium Matthäus.

    Das ist soweit ich das gesehen habe in Kapitel und Verse unterteilt, also z.B. Matthäus Kapitel 1 Vers 1 bis Vers 20

    Jetzt sollte in der Anwendung die Möglichkeit bestehen sich einzelne Verse aufzurufen. Also z.B. sollte ein Anwender eingeben können -> ich möchte Matthäus 1 Vers 10 bis Vers 12 sehen.

    Nachdem ja eine Datenbank möglichst redunant sein sollte, macht es glaube ich nicht viel Sinn, zu jedem Vers den gesamten Adressteil (Matthäus 1 v 1) usw. abzuspeichern?

    Vielleicht kann mir hier jemand weiterhelfen, wie die Spalten/Tabellen hier sinnvoll zu wählen wären.

    Dann die nächste Herausforderung: bleiben wir bei dem Bsp. von vorher: Angenommen ein Kapitel hat 20 Verse. Was passiert jetzt, wenn ein Benutzer eingibt, er möchte die Verse 15 bis 30 angezeigt bekommen?

    Kann ich dann sicherstellen, dass er 15 bis 20 angezeigt bekommt ( die haben wir ja) aber dann ohne "fehlermeldung" evtl. mit Hinweis -> es gibt nur bis Vers 20 in diesem Kapitel?

    Ich hoffe ich habe mich einigermassen verständlich ausgedrückt....

    Vielen Dank für Eure Hilfe vorab.

  • #2
    Wenn der Anwender die Möglichkeit haben soll, einzelne Verse auswählen zu können, dann müssen die Verse auch einzeln gespeichert werden. Wegen der Redundanz würde ich mir da aber keine Sorgen machen, bei der heutigen Hardware ist das sowohl für den Platzbedarf als auch für die Geschwindigkeit egal, ob du eine Zwischentabelle verwendest oder immer den vollen Text im Schlüssel hast.
    Und das Programm muss so geschrieben werden, dass es bei der Anfrage nach nicht existierenden Versen den Anwender informiert, was nicht passt. Ist zwar ein Aufwand, aber ohne dem wird es für den Anwender mühsam - irgendein Fehlercode, den die Datenbank liefert (oder gar keine Meldung), hilft nämlich nicht wirklich weiter.

    bye,
    Helmut

    Comment


    • #3
      Hallo Helmut,

      Danke für deine Antwort!

      Verstehe ich dich richtig, du würdest das ganze sozusagen 2 spaltig aufbauen?

      Also z.B. Tabelle bibel, diese enthält 2 Felder.
      Feld 1 (primary key, unique) buchkapvers -> darin z.B. Matthäus 1 1 (im entsprechenden format)
      Feld 2 (Text oder Varchar) inhalt -> darin dann den jeweiligen Vers speichern

      Sorry für die Nachfrage.

      Comment


      • #4
        Naja, ein bisschen großzügiger würde ich es schon machen, zB in der Tabelle die Spalten 'Buch', 'Kapitel', 'Vers' und 'Inhalt' verwenden und nicht Buch, Kapitel und Vers in eine einzige Spalte stecken. Vers ist ja zB. numerisch und wenn dann einer Vers 10 - 30 wählt, lässt sich das viel leichter rauslesen als wenn man die Versnummer aus einem String rausholen muss.
        Und der primary key ist dann eben aus drei Spalten zusammengesetzt - aber das ist ja kein Problem.

        bye,
        Helmut

        Comment


        • #5
          Hallo,

          das ist mit Sicherheit die ungünstigste Variante. Da jedoch zu den Kapiteln und Versen ausser den Nummern keine weiteren Informationen gehören, könnte man hier auf die Zwischentabellen verzichten.

          Code:
          Tabelle buch
          id         int primary key
          name       varchar
          
          Tabelle vers
          id           int primary key
          buch_id int  foreign key zu buch.id
          kapitel      int
          vers         int
          text         text
          Ggfs. bilden buch_id, kapitel und vers zusammen noch einen unique key.

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment


          • #6
            Originally posted by hwoess View Post
            ...Und der primary key ist dann eben aus drei Spalten zusammengesetzt - aber das ist ja kein Problem.
            Dann schreibe bitte bis Morgen 500mal in dein SQL-Muttiheft:
            "Ich soll keine aus Nutzdaten zusammengesetzte Primärschlüssel verwenden!"

            Und bitte handschriftlich und nicht mit Copy & Paste .

            Gruß Falk
            Zuletzt editiert von Falk Prüfer; 29.07.2010, 15:01. Reason: Der Rechtschreibung zu ihrem Recht verholfen...
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Mal blöde Frage, warum wird hier Name in einer extra Tabelle gehalten. Warum nicht in einer Tabelle?
              Christian

              Comment


              • #8
                ok - cool

                vielen Dank für Eure Antworten und Eure Mühe!

                Comment


                • #9
                  Originally posted by Christian Marquardt View Post
                  Mal blöde Frage, warum wird hier Name in einer extra Tabelle gehalten. Warum nicht in einer Tabelle?
                  Weil ich davon ausgehe, dass es MEHRERE Bücher mit unterschiedlichem Namen gibt, die wiederum Kapitel und Verse enthalten.
                  Wenn Kapitel und Verse neben ihrer Nummer auch noch weitere Daten hätten (z.B. eine Kapitel- oder Versüberschrift), dann würde man auch diese noch in separaten Tabellen normalisieren.

                  Gruß Falk
                  Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                  Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                  Comment


                  • #10
                    ok,danke....
                    Christian

                    Comment


                    • #11
                      Originally posted by Falk Prüfer View Post
                      Dann schreibe bitte bis Morgen 500mal in dein SQL-Muttiheft:
                      "Ich soll keine aus Nutzdaten zusammengesetzten Primärschlüssel verwenden!"
                      Klaro, normalerweise mache ich das auch nicht, aber in Anbetracht der Anforderung (nur 1 Tabelle und schnell mal was für einen guten Zweck) habe ich mich dazu hinreißen lassen. Der Vorteil dabei wäre: keine RI zu verwalten.
                      Aber der Fragesteller kann ja nun aufgrund eurer Infos selber entscheiden, wie er's macht.

                      bye,
                      Helmut

                      Comment


                      • #12
                        Es muss entweder "keinen" oder "zusammengesetzte" heißen.

                        In diesem Sinne:

                        Romanes eunt domus
                        docendo discimus

                        Comment

                        Working...
                        X