私は次のような問題があります。顧客は2種類のリソースを持つことができます:サーバーとドメイン。サーバーは複数のドメインに対応することができ、ドメインは複数のサーバーに割り当てることができますが、顧客には固定のサーバーとドメインが割り当てられています。顧客は、ドメインサーバーマッピングテーブルを直接編集できます。顧客が自分に属していないサーバーを割り当てないようにするにはどうしたらいいですか。つまり、ドメインとサーバーマッピングに挿入されたドメインとサーバーが同じ顧客のプライマリキーを持つことを確認するにはどうすればいいですか?
私の愚見で
0
A
答えて
0
のためにあまりにも多くの冗長化(と危険なこの理由のために)を追加する必要はありませんあなたの問題を解決するための外部キー。例えばのように、正規化されたスキーマを使用するのに十分である:
create table Customers
(
customer_id int primary key
);
create table Domains
(
domain_id int primary key,
customer_id int references Customers
);
create table Servers
(
server_id int primary key,
customer_id int references Customers
);
create table Domain_Server_Mapping
(
domain_id int references Domains,
server_id int references Servers,
primary key(domain_id, server_id)
);
その後、あなたは異なる顧客に属しているサーバーやドメインとテーブルDomain_Server_Mapping
の挿入または更新を防ぐためのトリガと同様に、チェックを追加することができます変更されたサーバーとドメインが現在の顧客に属している場合は、アプリケーション内部で
0
とあなたのスキーマに従って、あなたはどちらかのマルチカラムFKを追加する必要がありますCustomer/Servers
とCustomer/Domains
create table Customers
(
customer_id int primary key
);
create table Domains
(
customer_id int references Customers(customer_id),
domain_id int,
primary key(customer_id, domain_id)
);
create table Servers
(
customer_id int references Customers(customer_id),
server_id int,
primary key(customer_id, server_id)
);
create table DomainsServers
(
customer_id int references Customers(customer_id),
domain_id int,
server_id int,
primary key(customer_id, domain_id, server_id),
foreign key fk_domains (customer_id, domain_id) references Domains(customer_id, domain_id),
foreign key fk_servers (customer_id, server_id) references Servers(customer_id, server_id),
);
関連する問題
- 1. Realm.ioと "参照整合性"
- 2. 参照整合性によるテーブルの結合?
- 3. Oracleの参照整合性の子テーブルのインデックス・カラム
- 4. rdfのようなmysqlテーブルへの参照整合性?
- 5. 参照整合性を持つSQLの一括コピー
- 6. $ wpdbとMySQLの参照整合性
- 7. Railsと参照整合性は
- 8. db2参照整合性問題
- 9. EF 4.1参照整合性エラー
- 10. レコードを実際に削除しないで参照整合性を維持する
- 11. React.cloneElementでコンポーネント参照を維持する
- 12. 自己参照テーブルの複合キー
- 13. heroku db:push - テーブル:レコードIDの整合性が維持されていますか?
- 14. Reduxの非同期状態の整合性を維持する
- 15. 外部データとのデータ整合性を維持するExcel
- 16. Entity Frameworkとデータベースの整合性を維持する方法
- 17. ZipArchiveModeフォルダの整合性を維持する
- 18. マテリアライズド・パスで参照整合性を強制しますか?
- 19. facebox要素への参照の維持
- 20. ストアドプロシージャの参照整合性を確認する
- 21. SQLテーブル整合性
- 22. JSON整数属性を参照できますか?
- 23. mysqldumpと参照整合性を使用して
- 24. アクセス:リンクテーブルに参照整合性を課す
- 25. Play framework onetoone参照整合性を削除する
- 26. Android 2.2 + SQLite +参照整合性制約の定義
- 27. 参照整合性 - SQLAlchemyの設定方法?
- 28. ファクトテーブルの外部キー参照整合性 - T-SQL
- 29. 参照整合性のない顧客口座EDT
- 30. FK更新時の参照整合性制約違反
このスキーマでは、 'Domains'と' Servers'のどちらかが 'customer_id'参照を持っていると思われますか? – McNets
サーバーは複数の顧客または1人の顧客のみが使用できますか? – Renzo
@McNetsはい正しいです。 – unlink