View Issue Details

IDProjectCategoryView StatusLast Update
0000227GORM[Adventure PHP Framework] Neues Feature // New Featurepublic2018-08-25 21:43
ReporterGeneral CrimeAssigned To 
PrioritynormalSeverityfeatureReproducibilityN/A
Status newResolutionopen 
Product Version[Adventure PHP Framework] 2.1 
Target VersionFixed in Version 
Summary0000227: Verbesserungen der Beziehungstabellen durch Einführung von Objekten mit 2 beziehungs IDs
DescriptionHallo wollte mal dieses Projekt in Erinnerung rufen:

Objekte die mit 2 oder gern auch mehr anderen Objekten verbunden sind und nie ohne diese existiert benötigt keine ID es würde reichen die IDs der anderen Objekte in diesem mit einzubinden.

Vor allem bei Tabellen die sehr viel unter Nutzung sind kann eine falsche Konfiguration des Typs der ID zum absturz führen dies kann mit dem Projekt verhindert werden und "BESSERE ÜBERSICHT" für solche Tabellen schaffen.
Additional InformationHier der Link zu dem Thema:
http://forum.adventure-php-framework.org/viewtopic.php?f=10&t=1467
Tagsconfiguration, database, gorm
Codereferenz: ([Datei]:[Zeile])

Activities

dingsda

2014-07-20 13:09

developer   ~0000463

Ich bin mir nicht sicher ob ich verstehe, was du meinst.

ich glaube du möchstest für 1:1 beziehungen oder 1:n beziehungen, dass dann die IDs der relationen direkt in der tabelle für das object drin sind. sodass man tabellen und joins sparen kann.

das fände ich selbst auch ganz sinnvoll und bin aktuell auch dabei etwas in der art umzusetzen, um zu sehen, ob/wie sich das machen lässt.

was ich in deinem beitrag nicht nicht verstehe:
- inwiefern macht es die ID des objektes selbst überflüssig?
- was meinst du mit "falscher konfiguration des Typs der ID"? imho sollte die id als primary key wohl immer ein integer-typ sein und für alle tabellen gleich, wenn man das gorm-management-tool nutzt.

dingsda

2014-07-20 17:37

developer   ~0000464

so sieht bei mir aktuell eine konfiguration aus

objects.ini

[User]
Username="varchar(50)"

[Status]
StatusType="varchar(50)"

relations.ini

[Status2User]
Type="ASSOCIATION"
Multiplicity="n:1"
SourceObject="User"
TargetObject="Status"

Durch die angabe der multiplizität weiß der gorm, welche art der beziehung es ist.

so wird dann intern als tabelle der relation nicht rel_status2user eingetragen sondern ent_user. und in der tabelle ent_user wird vom gorm-manager ein feld Target_Status angelegt.
Beim eintragen der beziehung macht der gorm kein insert sondern ein update in der entsprechenden spalte der user-tabelle.

Man kann wie gewohnt auch weitere Beziehung zum User angeben. und wenn man wieder als multiplizität 1:1 oder n:1 angibt, so wird auch die weitere beziehung in der user-tabelle abgebildet.

der zugriff auf die objekte und die verknüpfung über die API des gorm ist aber gleich geblieben. Es handelt sich ja dennoch um eine beziehung und die ID vom Status ist keine Objekt-eigenschaft vom User.

Ich weiß nicht, inwiefern es soetwas ist was du dir vorgestellt hast.

@all: wer vorschläge oder kritik dazu hat immer her damit

General Crime

2014-07-20 19:41

developer   ~0000465

Ich beschreibe es mal steht eigentlich auch im Link:

Bsp:
1. Tabelle Resource
2. Tabelle Base

nun habe ich eine 3 Tabelle:
3. BaseResource
RessourceID
BaseID
Amount
Modi..
Creat..

um das nun optimal auf den GORM zu packen werden aus den 3 Tabelle 5 Tabellen
cmp_resource2baseresource
cmp_base2baseresource

die dritte BaseResource hat dann:
BaseResourceID
Amount
Modi..
Creat..

da ich sie aber nie alleine lade sondern immer in Verbindung der anderen ist es blödsinn eine eigene ID zu haben sonden einfach nur nen Unique über (BaseID und ResourceID)

und dann hab ich ne andere tabelle wo viel passiert da hab ich das problem gehabt das meine spalteneinstellung zu klein war und er plötzlich keine daten mehr geschrieben hat!

General Crime

2014-12-06 16:53

developer   ~0000525

Hey wollte mal Fragen ob sich was dabei getan hat?
Oder soll ich mal schauen das ich ein Beispiel generieren kann!?

ChristianAchatz

2014-12-12 08:02

administrator   ~0000526

Ich denke das ist eine gute Idee.

General Crime

2016-03-08 09:55

developer   ~0000681

Sitze grad bei der GFN und mache meinen Web-Developer, langersehntes Ziel.
Mal sehen was ich neues lerne da mir dieser ISSUE doch recht wichtig ist.

ChristianAchatz

2016-03-08 16:25

administrator   ~0000682

Danke für deine Rückmeldung! Ich warte auf dein Input!

General Crime

2018-03-27 13:41

developer   ~0000817

So lang ist es her.
Nu sitze ich @Home (Krank), Arbeite mittlerweile als Programmierer (Juhu) und hab Zeit mal hier bei meinem Issue bei zu gehen.
@Christian bitte mich als Entwichker eintragen.

Derzeit bin ich soweit das mir mit dem ManagementTool entsprechende Tabellen generiert werden ohne eigene ID.
Dies tätige ich mit der SubSection "RelObjects" in der objects.ini in der Section für die benötigte Tabelle.

RelObjects.1 = "Base"
RelObjects.2 = "Resource"
......

Beim generieren der Daten wird bei der ID geprüft ob es diese SubSection gibt und dann diese Werte als ID hinzugefügt und nicht der Standard.
Somit ist die ID ab hier kein "string" mehr wie normal sondern ein array mit x beliebigen Daten.
Bei "getIndices()" wird hier nun die ID mit übergeben um zu prüfen ob es nen Array ist oder nicht wenn ja wird hier der primary Key nicht erstellt dafür aber zur "mappingIndexTable" der Unique über alle Objekte hinzugefügt bzw. eingefügt was somit zum erstellen des Unique Indexes führt.

Somit bin ich nun beim austesten bzw. anpassen alle Funktionen zum laden und speichern. Je nachdem erstelle ich für einige Anwendungsfälle neue Funktionen oder nicht. Nach Möglichkeit versuche ich beim alten zu bleiben und dies nur variabler zu gestalten.

ChristianAchatz

2018-03-29 11:49

administrator   ~0000818

Hi,

schön wieder von dir zu hören! :) Habe dich nun als Entwickler eingetragen und du kannst direkt loslegen. Solltest du noch Berechtigungen für GitHub brauchen, melde dich einfach.

Die Änderung klingt gut. Vielleicht kannst du direkt bei der Implementierung noch ein paar Unit Tests hinzufügen im GORM-Bereich ist die Test-Abdeckung noch nicht so richtig gut. :)

ChristianAchatz

2018-08-25 15:14

administrator   ~0000843

@General Crime Hast du schon Feedback für mich?

General Crime

2018-08-25 17:46

developer   ~0000848

Ich hatte mal angefangen jedoch ergaben sich da einige Hürden (kann grad nicht mehr sagen welche genau) und dann kam mein RL dazwischen da ich nun selber in der Wochen Arbeite und am WE nun hauptächlich meine Projekte pflege.

Ich versuche mir da demnächst nochmal zeit abzuzweigen.

ChristianAchatz

2018-08-25 21:43

administrator   ~0000849

Danke dir für dein Feedback! Hat keine Eile, wollte nur kurz einen Status einholen. :)

Melde dich einfach, wenn du Zeit hast und dich gerne um das Feature kümmern möchtest.

Issue History

Date Modified Username Field Change
2014-07-12 22:53 General Crime New Issue
2014-07-13 01:05 General Crime Tag Attached: configuration
2014-07-13 01:05 General Crime Tag Attached: database
2014-07-13 01:05 General Crime Tag Attached: gorm
2014-07-20 13:09 dingsda Note Added: 0000463
2014-07-20 17:37 dingsda Note Added: 0000464
2014-07-20 19:41 General Crime Note Added: 0000465
2014-12-06 16:53 General Crime Note Added: 0000525
2014-12-12 08:02 ChristianAchatz Note Added: 0000526
2016-03-08 09:55 General Crime Note Added: 0000681
2016-03-08 16:25 ChristianAchatz Note Added: 0000682
2018-03-27 13:41 General Crime Note Added: 0000817
2018-03-29 11:49 ChristianAchatz Note Added: 0000818
2018-08-25 15:14 ChristianAchatz Note Added: 0000843
2018-08-25 17:46 General Crime Note Added: 0000848
2018-08-25 21:43 ChristianAchatz Note Added: 0000849