私は多くの種類の認証を行っているため、1 つのベース postgres テーブル (「authentications」と呼ばれる) があり、他の種類の認証はそこから派生しています。たとえば、パスワードを使用して認証されるエンティティは「password_authentications 」と呼ばれ、 postgres を使用して「 authentications 」テーブルから継承します。したがって、スキーマは次のとおりです。
CREATE TABLE authentications (
id
)
CREATE TABLE password_authentications (
id
password
) inherits (authentications)
認証テーブルへの外部キーを持つ「Users」というテーブルもあるため、これは非常にエレガントです。
CREATE TABLE users (
id
username
authentications_id
)
したがって、ユーザーは、認証から継承するものによって認証できます。したがって、将来、(たとえば) RSA を使用してユーザーを認証する必要がある場合、RSA 認証を説明した認証から基本クラスを作成するだけです。
ここで、SQLAlchemy を使用して、Python クラスとこの構造の間のマッピングを作成したいと考えています。具体的には、「User」というクラスを「users」というテーブルにマップしたい (これは簡単にできます) が、(認証ではなく) password_authentication の関係が必要です。実際、私はこの関係を動的に構築しようとしているので、1 人のユーザーがパスワードを使用して認証されると、SQLAlchemy は "Users" テーブルを "Password_Authentications" テーブルにリンクします。別のタイプの認証がある場合は、代わりにユーザーをそのテーブルにリンクする必要があります。User がリンクするすべてのテーブルに共通する唯一のことは、それらが Authentications テーブルから派生していることです。したがって、「Users」テーブルには、このテーブルへの外部キーがあります。
上記をどのように達成できますか?それは可能ですか?