私は次のような問題があります。顧客は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. rdfのようなmysqlテーブルへの参照整合性?
- 3. 参照整合性を持つSQLの一括コピー
- 4. EF 4.1参照整合性エラー
- 5. db2参照整合性問題
- 6. Railsと参照整合性は
- 7. レコードを実際に削除しないで参照整合性を維持する
- 8. React.cloneElementでコンポーネント参照を維持する
- 9. 自己参照テーブルの複合キー
- 10. heroku db:push - テーブル:レコードIDの整合性が維持されていますか?
- 11. 外部データとのデータ整合性を維持するExcel
- 12. Entity Frameworkとデータベースの整合性を維持する方法
- 13. マテリアライズド・パスで参照整合性を強制しますか?
- 14. facebox要素への参照の維持
- 15. ストアドプロシージャの参照整合性を確認する
- 16. SQLテーブル整合性
- 17. アクセス:リンクテーブルに参照整合性を課す
- 18. mysqldumpと参照整合性を使用して
- 19. Play framework onetoone参照整合性を削除する
- 20. Android 2.2 + SQLite +参照整合性制約の定義
- 21. 参照整合性のない顧客口座EDT
- 22. 参照整合性 - SQLAlchemyの設定方法?
- 23. FK更新時の参照整合性制約違反
- 24. Doctrineで参照/参照テーブルへの結合を避ける2
- 25. 参照整合性制約違反が発生しました
- 26. DataBase参照整合性ログテーブルに関するご意見
- 27. スプリングデータMongoDBはバルク更新でデータの整合性を維持しています
- 28. 別の(一意の)フィールドを持つ複数のテーブルのプライマリIDを参照
- 29. iPhone上で複数のsqliteテーブルを参照できますか?
- 30. JPAを使用した関係性と参照整合性制約
このスキーマでは、 'Domains'と' Servers'のどちらかが 'customer_id'参照を持っていると思われますか? – McNets
サーバーは複数の顧客または1人の顧客のみが使用できますか? – Renzo
@McNetsはい正しいです。 – unlink