C'est du demi-troll. La conception est intéressante à faire.
Par contre, ce n'est pas ce que tu décris dans ton premier paragraphe. On garde complétement les système de tables classique : une table = un type de données (Voiture, Personne, etc). Au boulot on a un ORM pour travailler (symfony pour le framwork, propel pour l'orm), conclusion, quand je décide de faire une table Voiture (décrit dans un fichier de conf yml ou xml), une (plusieurs en fait) classe est générée et permet de modéliser par de l'objet cette table : c'est basiquement le rôle d'un ORM.
Pour un projet, mais ça a été utilisé dans d'autres, on a eu besoin d'avoir un outil pour lier plein de données entre elle sans maitriser au départ leur type. En effet, entre deux projet, on aura de nouvelle tables et donc de nouvelles classes et ça parait débile de développer un outil trop spécifique et non réutilisable.
J'ai donc développer un widget (et un slot) Symfony pour faire ça. On décrit dans un fichier de configuration les classes qui identifie un modèle taggable. On lui assigne au passage un titre (la classe "Car" a comme titre "Voiture" par exemple). Ensuite, on a pensé une table permettant de faire du relationnel 1:1 entre un tag et un objet (c'est le tagging). On a deux type de tag : les tag visibles ("informatique", "coup de gueule", "pour de lol") et les tags invisibles (ma_class_id_element). Quand un objet est taggé, on est capable de savoir tout les objets en relation avec lui via les tagging (et les tag en commun). J'ai également typé le tag tagging pour gérer des niveaux relationnels : ainsi, si A et lié à B niveau 1, alors B est lié à A niveau 1, mais si on ne souhaite pas connaitre le lien de A vers B (dans ce sens) car on affiche les données (par exemple), on tag dans un autre niveau. Exemple : on a un menu qui peut faire pointer des liens vers n'importe quel élément de la base de données. Pour ce faire, on utilise le système de tag avec le niveau "menu", ainsi, si on affiche la donné lié à l'élement de menu et qu'on souhaite afficher l'ensemble des élements liés, on va définir de ne pas afficher les tag de niveau "menu" (osef de savoir que Foo est lié à un node de menu).
Un des sites ouvre demain donc je montrerai en live, mais par exemple, dans une de nos fiches spectacles, on a lié des éléments affichés sous cette forme : http://upload.deblan.fr/u/2011-09/4e6683bd.png . En backoffice, on a ça : http://upload.deblan.fr/u/2011-09/4e66845c.png