Hallo,
hat jemand eine Idee zu folgendem Problem:
Eine Extension soll die Daten in mehreren Tabellen speichern, die in einer 1:1-Relation zueinander stehen.
Das ist aus Größengründen erforderlich (die Tabellen werden später nicht immer alle gleichzeitig gebraucht, so dass bei einer Aufteilung der Daten deutlicher Performance-Vorteil vorliegt).
Die Datenstruktur sieht also verkürzt so aus:
Tabelle1:
Spalte1: uid
Spalte2: datensatzname
Tabelle2:
Spalte1: uid
Spalte2: daten1
Tabelle3:
Spalte1: uid
Spalte2: daten2
Die uid ist bei allen Tabellen identisch, zu jeder uid existiert exakt ein Gegenstück in allen drei Tabellen.
Die Daten sollen über das Backend eingebbar sein.
Aktuell behelfe ich mich im TCA mit "inline"-Typen.
Das funktioniert, aber ich bekomme im BE jeweils den Papierkorb und das Hinzufügen-Icon angezeigt. Nachdem das halbwegs narrensicher werden soll, möchte ich das natürlich nicht, dass da jemand den Datensatz aus einer Tabelle löschen kann.
Auch "maxitems" und "minitems" auf "1" ändert daran nichts.
Daher die Frage:
Kann man
- entweder bei IRRE verhindern, dass die Hinzufügen-/Löschen-Icons erscheinen?
- oder eine Verknüpfung im TCA definieren, die mir von allen beteiligten Tabellen jeweils die passenden "Unterdatensätze" zum "Hauptdatensatz" öffnen bzw. ändern/anlegen?
Vielen Dank für Eure Hilfe!
Ciao
Stefan
Hallo,
eine Zwischenfrage (bin nur neugierig):
Warum benutzt Du 3 Tabellen? 1:1 Relation, gleiche uid...
Wieso nicht gleich alles in eine Tabelle?
Es widerspricht eigentlich dem Sinn einer relationalen DB, Datensätze mit 1:1 Relation in verschiedene Tabellen zu packen (weil es sind ja keine verschiedenenn Datensätze, sondern ein und derselbe).
Das mit der Performance kannst du auch lösen, indem Du Indexe für die einzelnen Spalten anlegst.
Gruß,
Vince.
@vince:
das Problem war die Größe.
Es handelt sich um ca. 5...7 Mio. Datensätze. Diese bestehen pro Datensatz erst mal aus sehr schlanken Basisdaten (das sind auch die, die ständig benötigt und abgefragt werden) und drei Feldern, die nicht so oft gebraucht werden, dafür aber um so größer sind.
Damit kommen diese Tabellen auf ca. 10 GB Datenbestand.
Zumindest als ich die erstellt habe (ist schon eine Weile her, aktuell läuft das noch nicht mit Typo3, sondern proprietär), liefen die Zugriffe deutlich schneller, als ich die platzraubenden Felder "ausgelagert" hatte...
Ich lasse mich aber gerne belehren!
Hallo,
Also das mit dem aufteilen wird in typo3 soweit ich weiß nicht sehr einfach (da müsstest Du ewig an der tca.php rumbasteln, wenn's überhaupt so geht...)
Meines Wissens kann man in Typo3 dem Eintrag nur Einträge zuweisen, die bereits existieren, sprich es wird schwer, ein Formular zu erstellen, dass die Einträge in 3 verschiedene Tabellen packt.
Ich Würde es an Deiner Stelle erstmal mit einem Index versuchen.
Hm 10 GB... Stehen da Texte in der DB?
Die zu durchsuchen dürfte bei so vielen Einträgen generell schwierig sein...
Bei Integer Werten oder varchars würd ich den BTREE index von MySQL nehmen, hab ich selbst schon benutzt, funktionniert wunderbar.
(Für Texte gibt's auch FULLTEXT indexe).
Gruß,
Vince.