2010-12-27 15 views
4

私はいくつかのデータベース/ウェブサイトで共有されている静的テーブルentryを持っています。静的なことは、データが読み込まれたがウェブサイトによって更新されなかったことを意味する。現在、すべてのウェブサイトは同じサーバーから配信されますが、変更される可能性があります。データベースにないテーブルの外部キーORM

ウェブサイトごとにこのテーブルを作成/保守する必要性を最小限に抑えたいので、すべてのウェブサイトにアクセスできる共有ライブラリに格納されている変数に変更することを考えました。

私はORMを使用して、外部テーブルの制約を使用して、静的テーブルから使用されるIDの参照整合性を保証します。そのテーブルをMySQLデータベースから変数に取り除きます。そのテーブルから参照されるIDの参照整合性?私は完全にプログラムでそれをやらなければならないのか、それとも本当のdbテーブルからのものであるかのようにデータを扱うというトリックがありますか? refer表がentryテーブルのidを参照されたフィールドlinktoを持っていたところ(にPropelを使用して)

私のデータベースの定義は元々、このように見えました。 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> 

そしてもちろん、これらは同じことを行うために、他の効率的な方法がありますか?私はちょうどいくつかのウェブサイトのためにそのテーブルを繰り返す必要はありません。

答えて

1

id FKがリンクで置き換えられている場合は、おそらく冗長な制約を作成できますが、それでも各Webサイトに対してこの制約を維持する立場にあります。これらのテーブルが実際に追跡/使用されていることを知ることは、他の処理方法の提案が必要な場合に役立ちます。

+0

私はポストにあったにもかかわらず、SOは私のテーブル定義を表示していないようです。私はコードとしてこれを強調していますので、今は表示しています。これは少し物事を明確にすることを望む。 – sami

+0

@サミ - それはまだそれが何のために使われているかを知るのに役立ちます。 – tvanfosson

関連する問題