【问题标题】:References to same table对同一张表的引用
【发布时间】:2010-07-05 22:37:46
【问题描述】:

我正在为游戏编写一个简单的编辑器,以管理生物之间的关系。 生物表设置有 id、name 等和布尔 is_prey 列; 我需要弄清楚如何 a) 可以在同一个表的 id 之间定义 ORM 关系 b) 如何将“可用”其他节点限制为仅包括标记为 is_prey 的节点。

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

这个猎物地图将如何存储(表结构)?

谢谢!

我在 Kohana 2.3.4 中使用了很酷的 crud_scaffolding 模块

【问题讨论】:

    标签: sql orm kohana crud


    【解决方案1】:

    我想你这里需要两张表,一张表,一张表来表示捕食者-猎物的关系:

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

    这样,一个生物可以成为多个生物的猎物。

    我不认识小花,所以你一个人在那里。

    【讨论】:

    • 这是什么 SQL 语法?所有 NULLable 列,没有键(如果没有键来引用,FOREIGN KEY 将如何工作?),FOREIGN KEY 的列不在括号中,等等。
    • 这并不是一个黄金标准。这是一个人可以工作的东西。
    猜你喜欢
    • 2018-09-03
    • 2016-04-07
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多