2010-07-05 57 views
0

我正在写一个简单的游戏编辑器来管理生物之间的关系。 生物表设置了一个ID,名称等和一个布尔is_prey列; 我需要弄清楚如何在同一个表 之间定义一个ORM关系。b)如何限制'可用'其他节点只包括标记为is_prey的那些节点。引用同一张表

使用场景如下:生物表包含三个生物; 鲨鱼(ID 1),鲸鱼(ID 2)和金枪鱼(ID 3)。 金枪鱼是可食用的(由鲨鱼,并标记is_prey)。 现在,鲨鱼被加载到CMS中。应出现“可用猎物”复选框,仅列出金枪鱼作为选项。

这张猎物地图如何存储(表格结构)?

谢谢!

进出口使用酷crud_scaffolding模块的Kohana 2.3.4

回答

0

我认为你需要在这里两个表,一个生物表来表示捕食关系的表:

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) 
); 

这样,一个生物可以成为不止一个生物的牺牲品。

我不知道Kohana,所以你自己在那里。

+0

这是什么SQL语法?所有的NULLable列,没有键(如果没有键引用,FOREIGN KEY如何工作?),FOREIGN KEY不在列表中的列等 – onedaywhen 2010-07-06 09:35:48

+1

这并不意味着是一个黄金标准。这应该是一个人可以从事的工作。 – Kalium 2010-07-06 15:53:19