Datenbank Konzeptionierung / Logikfrage

mikedb

Neuer Benutzer
Beiträge
2
Hallo,
ich habe vor eine Datenbank mit Vornamen und deren Bedeutung aufzubauen. Nun möchte ich aber gleich zu Beginn ein vernünftiges Fundament legen und nicht gleich schwerwiegende Logikfehler einzubauen.

Also wie gesagt geht es um Vornamen.

Ich würde eine Tabele mit folgenden Daten erstellen:
Jeder Vorname ist Unique und würde sich daher meiner Meinung nach als Primary Key anbieten und NOT NULL.
Jeder Vorname besitzt (kein muss) noch folgende Daten: Wortzusammensetzung, Weitere Info, Bedeutung, Herkunft, Sprachen, Themengebiete, Geschlecht

Bis dahin, verstehe ich noch alles, jetzt wird es leider ein wenig kniffelig für mich:
Jeder Vorname kann(wieder kein muss, da nicht für jeden bekannt) einen oder mehrere Namenstage haben.

Jeder Vorname kann einen oder mehrere Spitznamen haben, der selbe Spitzname kann für mehrere Vornamen gelten.

Jeder Vorname kann einen oder mehrere ähnliche Vornamen haben.


Nun wäre meine Frage wie ich dieses Konzept am besten umsetze, anbei noch das Datenbankmodell, das ich dazu erstellt habe. Bin für konstruktive Einwände, Kritik und Hilfe dankbar!

IMG_20150513_115657.jpg
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Tipp 1:
Du solltest es dir Tabellarisch darstellen.
In etwa so:

Tabelle: vorname
Spalten:
- Vorname (Dein Datentyp) (Constraints)
- Sprachen (Dein Datentyp) (Constraints)
...

Spätestens bei 10+ Tabellen wirst du deine Mindmap verdammen :)

Jetzt zum eigentlichen Beitrag:
- Themengebiete deutet schon an das es sich um eine n:m-Beziehung handelt. Also -> Eigene Tabelle mit FK zur Vornamen-Tabelle
- Bei Wortzusammensetzung bin ich mir nicht ganz sicher was da drin steht... Aber wahrscheinlich sollte das auch eine eigene Tabelle werden?
- Bedeutung sollte in eine eigene Tabelle... Oder hat jeder Vorname in jeder Sprache immer die selbe Bedeutung? (Generell nur eine Bedeutung?)
- Herkunft sollte wahrscheinlich auch in eine eigene Tabelle. Oder gibt es immer nur einen Herkunftsort ?
- Bei deiner "Ähnlichkeitstabelle" bin ich mir nicht ganz so sicher... Jenachdem wie du Ähnlich definierst werden da recht schnell ein paar Millionen Datensätze drauß ? Wahrscheinlich wäre eine Volltextsuche einfacher? (Wie gesagt... Ich weiß nicht was du damit bezwecken willst.)
 
Hallo,
vielen Dank für die Antwort. Ich habe den Entwurf nun angepasst und drei Verknüpfungstabellen hinzugefügt.
CCI14052015_00000.jpg

-Themengebiete wird eigentlich, wenn überhaupt nur eine Verknüpfung haben. Von Daher lautet meine Frage, ist es sinnvoll in diesem Fall eine eigene mit Tabelle mit Themengebieten als Primary Key zu erstellen und dieste anschließend als Fremdschlüssel in der Tabelle Vornamen hinzufügen oder einfach als Text zu jedem Vornamen dazu? Gibt das Geschwindigkeitsgewinn/einbußen (mehr abfragen an die db?)?
Ähnlich ist es wie auch schon erwähnt bei Herkunft; Geschlecht wird überhaupt nur ein Char sein (lohnt die Textbegrenzung für diese Spalte, bzw ist diese überhaupt möglich? Varchar, Charakter, Native Character?)

-In Wortzusammensetzung kommt zum Beispiel bei Michael "miy = wer (Hebräisch); el = der Mächtige, Gott (Hebräisch); Hebräisch: mi = wer, ke = wie, ha = Artikel, el = Gott" bei Abeba "amharisch: abeba = die Blume" von daher ist die Information nicht unbedingt nur aus Silben bestehend und von daher eher als Textblock in Vornamen geeignet ist?

-bei Sprache kommt die Herkunft rein, zb. Aaltje "Deutsch, Englisch, Skandinavisch, Holländisch, Finnisch", bei Aurel "Lateinisch"

-Herkunft:Wurde schon bei Themengebiete gefragt/eingegangen

-Die Ähnlichkeitstabelle hat sagen wir so bis zu 10-20 Einträge pro Vorname, also keine millionen Datensätze ;)
ich möchte dabei direkt auf andere Vornamen zeigen können die ähnlich sind, zb bei Michael "Maclou; Mowgli; Maxwell; Micael; Michael; Michail; Michal; Micheal; Michel". Gibt es dafür theorethisch eine eigene Suchabfrage, die zvon der Logik her so funktionieren würde, dass man in der Vornamentabelle nach Ergebnisse die ähnlich wie Michael sind, dabei aber nur die ersten 10 ergebnisse ausgibt?
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
1. Ja, die Themengebiete in eine eigene Tabelle zu schreiben und dann nur einen FK der ID zu hinterlegen macht Sinn. Redundanzen möchte man ja vermeiden.
Der "Geschwindigkeitsverlust" ist eigentlich vernachlässigbar. Wenn denn überhaupt ein "merkbarer" Unterschied vorhanden ist...

2. Sollte mMn in eine eigene Tabelle. Aus dem einfachen Grund das ich mir abfragen wie "welche Namen enthalten das hebräische Wort mi" vorstellen kann... Aber dafür könnte man auch eine Volltextsuche machen? Deine Entscheidung... (Man müsste sich dann allerdings auch noch Gedanken über den Tabellenaufbau machen... Dafür weiß ich leider zu wenig über Wortzusammensetzung... Und ALLE möglichen Informationen, die man ja auch abbilden müsste)

3. Extra Sprachentabelle und dann nur via FK auf die ID verweisen.

4. Von 2. abhängig

5. Ja... Solltest dir mal Volltextindizierung ansehen :) Beide Methoden sind Möglich... (Hängt natürlich auch von der Datenbank ab, die du später verwenden willst...)
 
Zurück
Oben