我有一个由多个数据库/网站共享的静态表 entry
。静态,我的意思是数据被网站读取但从未更新。目前,所有网站都由同一台服务器提供服务,但这可能会发生变化。
我想尽量减少为每个网站创建/维护此表的需要,因此我考虑将其转换为存储在所有网站都可以访问的共享库中的变量。
问题是我使用 ORM 并使用外键约束来确保从该静态表中使用的 id 的引用完整性, 因此通过将该表从 MySQL 数据库中删除到一个变量中,我如何仍然获得引用完整性从该表中引用的 ID?我是否必须完全以编程方式完成它,还是有一种技巧仍然可以将数据视为来自真实的 db 表。
我的数据库定义(使用 Propel)最初看起来像这样,其中 refer
表有一个字段 linkto
引用了 id
表的 entry
。现在 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 被链接替换,那么你仍然可以为每个网站维护这个约束。如果您需要其他处理方式的建议,那么了解这些表实际跟踪/使用的内容会有所帮助。