リレーショナル (sqlite) データベースで継承を模倣するいくつかのテーブルを実装しようとしています。私の目標は、一般的なフィールドを持つ 1 つのマスター テーブルと、特殊なフィールドを持ついくつかの子テーブルを持つことです。マスター テーブル内のすべてのレコードは、特定のテーブルの 1 つだけに対応するものを 1 つだけ持ちます。私が欲しいものは次のようになります:
マスターテーブル:
id (PK) #Your average web2py unique auto-incrementing int field
#Some general fields
子テーブル:
id (PK, FK referencing the PK of the master table)
#Some specialized fields
子テーブルごとにデフォルトの「id」PKを持っていても、私には役に立ちません。必要なのは、子テーブルの PK として機能するマスター テーブルへの FK 参照だけです。これは、子テーブルの PK が一意になることを意味しますが、ギャップが含まれます。これは、子テーブルがマスター テーブルの一部のレコードのみを参照するためです。
これを行う (子テーブルに通常の「id」PK を与えない) ことは、Web2py のやり方に反するという印象を受けます。だから私の質問は次のとおりです:
- これはBad Idea™ですか? もしそうなら、なぜですか?
- これをどのように実装しますか?Web2py は、PK として自動インクリメント int を持たないテーブルを処理できますか?
コードを書くときに正しいスタイルと練習を適用することは、私にとって非常に重要です。私は代替アプローチを受け入れます。
ご協力ありがとうございました。