Zum Inhalt springen

db references erzwingen?

Erstellt am 3. Januar 2006 · 5 Antworten · letzte Antwort am 4. Januar 2006

Tags: Frage

xtensionar ·

hi,

ich hab eine extension geschrieben, wobei im kickstarter die tabellenstruktur definiert wurde.

in der db hab ich verschiedene felder. Was supi ist: man kann bei Strings "required" definieren, sodass man bei einem db-Eintrag gezwungen wird, dieses auch wirklich einzugeben. Bei anderen Feldern, in diesem Fall Referenzen auf andere Tabelleneintraege, geht das leider nicht, oder etwa doch? Waere in diesem Fall sehr sinnvoll.

Danke im voraus! ;-)

woida ·

Da Typo ziemlich wenige Datenbankfunktionen nutzt, kannst du das im Kickstarter nicht einstellen.

Wenn du deine Extension veröffentlichen willst, würde ich dir sowieso abraten, Referenzielle Integrität zu verwenden; MySQL unterstützt dieses Feature nur mit der InnoDB, die wohl bei den meisten Nutzern nicht aktiviert sein dürfte.
MyISAM erlaubt zwar im CREATE Statment das REFERENCES Schlüßelwort, ignoriert es aber.

Wenn du die Extension nur für dich einsetzt, kannst du ja manuelle die ext_tables.sql editieren und die Integritätsbedingungen selbst einsetzten. Und nicht vergessen: InnoDB verwenden!

xtensionar ·
woida schrieb

Wenn du deine Extension veröffentlichen willst, würde ich dir sowieso abraten, Referenzielle Integrität zu verwenden;

Hi und danke.

die extension wird veroeffentlicht :-/, was gibt es denn fuer andere moeglichkeiten, "vorgefertigte werte" einzubinden?, heisst: was ist die alternative?

nochmal danke ;-)

xtensionar ·

ich habe eine tabelle mit kategorien und eine tabelle mit ereignissen, wobei jedes ereignis einer kategorie zugeordnet ist.

dies wurde wie beschrieben realisiert, wovon du mir allerdings abgeraten hast. mit den "vorgefertigten werten" habe ich mich auf die tabelle mit den kategorien bezogen...

die frage ist, was die alternative waere sowas aufzubauen, da eben eine referenz mit typo3 nicht erzwungen werden kann..?

woida ·

Du kannst im Kickstarter ja beim anlegen eines Datenbankfelds den Typ "Database relation" verwenden, um eine Referenz auf eine andere Spalte zu erzeugen (auch n:m Beziehungen sind möglich). Das ist dann eine "weiche" Referenz: In BE achtet Typo daruf, daß die Integritätsbedingung nicht verletzt wird; Im Gegensatz zu "harten" Integritätsbedingung kannst du aber per INSERT die Referenzen verletzen; die Datenbank wird keinen Fehler melden.