繁体   English   中英

使用ORM在不在数据库中的表上的外键

[英]foreign-key on a table not in the database, with ORM

我有一个静态表entry ,由几个数据库/网站共享。 静态,我的意思是数据被读取但从未被网站更新。 目前,所有网站都是从同一台服务器提供的,但可能会发生变化。

我想最大限度地减少为每个网站创建/维护此表的需要,因此我考虑将其转换为存储在所有网站都可以访问的共享库中的变量。

问题是我使用ORM并使用外键约束来确保从静态表中使用的id的引用完整性,因此通过将该表从MySQL数据库中删除到变量中,我如何仍然获得引用的ID的引用完整性从那张桌子? 我是否必须完全以编程方式执行此操作,或者仍然有一个技巧仍然将数据视为来自真正的数据库表。

我的数据库定义(使用Propel)最初看起来像这样,其中refer表有一个字段linkto ,它引用了entry表的id 现在entry表在代码中,我不能再做外键技巧,或者我可以以某种方式获得相同的效果?

  <table name="entry">
    <column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
    <column name="title" type="VARCHAR" size="500" required="true" />
  </table>

  <table name="refer">
    <column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
    <column name="linkto" type="INTEGER"/>
     <foreign-key foreignTable="entry">
        <reference local="linkto" foreign="id" />
    </foreign-key>
  </table>

当然,还有其他任何有效的方法来做同样的事情吗? 我只是不想为几个网站重复那个表。

你可以创建一个约束 - 一个强大的冗长,如果你的id FK被一个链接替换了 - 但是你仍然可以为每个网站维护这个约束。 如果您想要其他处理方法的建议,将有助于了解这些表实际跟踪/正在使用的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM