Ich möchte eine Art Vokabeltabelle anlegen, damit Asylbewerber Deutsch lernen können (soll natürlich auch umgekehrt und mit weiteren Sprachen funktionieren). Dazu sollen für Worte Symbolbilder verfügbar sein. Hat jemand Erfahrung mit Vocabeltrainer und Sqlalchemy (mir wurde nämlich gesagt, dass selbstreferentielle Many-to-Many-Tabellen nicht gerade etwas für Anfänger sind). Habe einmal folgende Modelle gemacht (VocWord wäre die Tabelle für Nomen). Mehrere Worteinträge könnten wie ich das sehe auf dasselbe Bild referieren, mehrere Bilder aber auch wieder auf dasselbe Wort. Benötige ich also analog eine Tabelle wie translation_by_image? Und wie ist das mit Dialekten? Im Arabischen werden Worte im Maghreb anders als in Agypten und wiederum sehr anders als in Syrien ausgesprochen (es gibt auch Worte, die nur in bestimmten Dialekten verfügbar sind). Offenbar kein sehr triviales Problem . Inwiefern Babelex da noch eine Vereinfachung sein könnte, weiss ich nicht. :
Code: Alles auswählen
translation_by_meaning = db.Table('voc_translation_by_meaning',
db.Column('voc_word_1', db.Integer, db.ForeignKey('voc_word.id')),
db.Column('voc_word_2', db.Integer, db.ForeignKey('voc_word.id'))
)
class VocWord(db.Model):
__tablename__ = 'voc_word'
id = db.Column(db.Integer, primary_key=True)
voc_language_id = db.Column(db.Integer, db.ForeignKey('voc_language.id'))
language = db.relationship('VocLanguage', backref="words")
translation = db.relationship('VocWord', secondary=translation_by_meaning,
backref=db.backref('backtranslation', lazy='dynamic'), primaryjoin=id == translation_by_meaning.c.voc_word_1, secondaryjoin=id == translation_by_meaning.c.voc_word_2)
created = db.Column(db.DateTime)
last_update = db.Column(db.DateTime)
word = db.Column(db.String)
word_latin = db.Column(db.String)
gender = db.Column(db.String)
defined_article = db.Column(db.String)
undefined_article = db.Column(db.String)
word_pl = db.Column(db.String)
defined_article_pl = db.Column(db.String)
undefined_article = db.Column(db.String)
voice_file = db.Column(db.String) # mp3
class VocImage(db.Model):
__tablename__ = 'voc_image'
id = db.Column(db.Integer, primary_key = True)
created = db.Column(db.DateTime)
filename = db.Column(db.String)
class VocLanguage(db.Model):
__tablename__ = 'voc_language'
id = db.Column(db.Integer, primary_key = True)
dialects = db.relationship('VocDialect', backref='language', lazy=False)
language = db.Column(db.String)
class VocDialect(db.Model):
__tablename__ = 'voc_dialect'
id = db.Column(db.Integer, primary_key = True)
language_id = db.Column(
db.Integer, db.ForeignKey('language.id'))
dialect = db.Column(db.String)