Ik breek al een tijdje mijn hoofd over het opslaan van CRM (Customer Relationship Management) gegevens op een generieke manier. Met een systeem moeten verschillende partijen hun eigen CRM velden kunnen aanmaken, bewerken, verwijderen.
De vraag is; hoe sla je dit soort gegevens efficient op, zonder consessies te doen aan performance. Welke taal gebruikt wordt voor de implementatie maakt me op dit moment niet zoveel uit, en ook de DBMS is niet zo van belang. Ik ben meer geinteresseerd in de concepten.
Er zijn verschillende mogelijkheden die ik overwogen heb;
1.) fysieke tabel bijhouden per gebruiker, waarin ieder CRM veld een attribuut is van de tabel. Dit zorgt voor snelle performance, maar qua onderhoud lijkt het me niet echt verstandig; wat zijn de consequenties voor het verwijderen van kolommen, of het toevoegen; hoe snel gaat dat?
2.) Opslaan van velden en die koppelen aan instanties van velden die bij een enkele CRM kaart (gegevens van een persoon met daarin de attributen die aangemaakt zijn.) horen;
Dit heeft echter een nadeel; elk CRM veld wordt opgeslagen onder eenzelfde type, terwijl er in de praktijk verschillende types zijn; leeftijd moet altijd een getal zijn, een regelige invoer ga je niet in een longtext veld gooien, een prijs is een float, etc.
Ik vraag me af of mensen hier ideeen hebben hoe je CRM gegevens op een generieke manier op kan slaan. Wat discussie met betrekking tot dit onderwerp is misschien interessant, dus schiet mij maar lek.
De vraag is; hoe sla je dit soort gegevens efficient op, zonder consessies te doen aan performance. Welke taal gebruikt wordt voor de implementatie maakt me op dit moment niet zoveel uit, en ook de DBMS is niet zo van belang. Ik ben meer geinteresseerd in de concepten.
Er zijn verschillende mogelijkheden die ik overwogen heb;
1.) fysieke tabel bijhouden per gebruiker, waarin ieder CRM veld een attribuut is van de tabel. Dit zorgt voor snelle performance, maar qua onderhoud lijkt het me niet echt verstandig; wat zijn de consequenties voor het verwijderen van kolommen, of het toevoegen; hoe snel gaat dat?
2.) Opslaan van velden en die koppelen aan instanties van velden die bij een enkele CRM kaart (gegevens van een persoon met daarin de attributen die aangemaakt zijn.) horen;
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| table attribute --------------------- pk_attribute_id at_name table crmcard --------------------- pk_crmcard_id ... some general metadata about the card table crmcard_data --------------------- fk_attribute_id fk_crmcard_id da_value |
Dit heeft echter een nadeel; elk CRM veld wordt opgeslagen onder eenzelfde type, terwijl er in de praktijk verschillende types zijn; leeftijd moet altijd een getal zijn, een regelige invoer ga je niet in een longtext veld gooien, een prijs is een float, etc.
Ik vraag me af of mensen hier ideeen hebben hoe je CRM gegevens op een generieke manier op kan slaan. Wat discussie met betrekking tot dit onderwerp is misschien interessant, dus schiet mij maar lek.