2010-07-05 7 views
0

Im écrit un éditeur simple pour un jeu, pour gérer les relations entre les créatures. La table des créatures est configurée avec un identifiant, un nom, etc. et une colonne booléenne is_prey; ce dont j'ai besoin est de comprendre comment a) une relation ORM peut être définie entre les id de la même table b) comment limiter les autres nœuds «disponibles» pour inclure uniquement ceux marqués comme is_prey. Un scénario d'utilisation serait comme: La table de créatures contient trois créatures; un requin (ID 1), une baleine (ID 2) et un thon (ID 3). Le thon est comestible (par le requin, et marqué is_prey). Maintenant, le requin est chargé dans le CMS. Des cases à cocher pour "proies disponibles" devraient apparaître, listant seulement le thon en option.Références à la même table

Comment cette carte de proie serait-elle stockée (structure de table)?

Merci!

Im en utilisant le module crud_scaffolding cool avec Kohana 2.3.4

Répondre

0

Je pense que vous avez besoin de deux tables ici, une table de créatures et une table pour représenter la relation prédateur-proie:

CREATE TABLE creature (
    id INT, 
    name tinytext 
); 

    CREATE TABLE prey (
    predator INT, 
    prey INT, 
    FOREIGN KEY predator REFERENCES creature (id), 
    FOREIGN KEY prey REFERENCES creature (id) 
); 

De cette façon , une créature peut être la proie de plus d'une créature. Je ne connais pas Kohana, donc vous êtes seul ici.

+0

Quelle syntaxe SQL est-ce? Toutes les colonnes NULLables, pas de clés (comment les touches FOREIGN KEY fonctionneraient sans les clés à référencer?), Les colonnes des clés étrangères ne sont pas en parens, etc. – onedaywhen

+1

Ceci n'était pas censé être une référence. Cela devait être quelque chose qu'une personne pourrait travailler. – Kalium

Questions connexes