【发布时间】:2010-12-27 13:20:32
【问题描述】:
我有一个静态表 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>
当然,这些还有其他有效的方法来做同样的事情吗?我只是不想为多个网站重复该表。
【问题讨论】:
标签: php mysql orm doctrine propel