g私は、次の構造を持つ Web アプリケーションに取り組んでいます。「顧客」がいて、これらの顧客のそれぞれに独自の「ユーザー」がいます。各顧客 (ユーザーおよびその他のデータを含む) は、他の顧客から完全に分離されており、顧客間でデータが共有されることはありません。
さらに、各「顧客」には異なるサブ Web サイトがあり、そこからのすべてのクエリ (顧客またはユーザーによるもの) は常に単一の customer.id を参照します。
データベースは次の方法で構築されます。
CREATE TABLE `customer` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT
) ENGINE=InnoDB;
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`customerID` int(11) unsigned
) ENGINE=InnoDB;
CREATE TABLE `blogPost` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`userID` int(11) unsigned
) ENGINE=InnoDB;
ユーザーを介して顧客に接続されている「blogPost」のようなテーブルがたくさんあります。
一般的なクエリは次のようなものです。
SELECT *
FROM `blogPost` bp
INNER JOIN `user` u
ON bp.userID=u.id
WHERE u.customerID = 324
これらの結合は高価であり、実際には不要であることは注目に値します。2 番目にサブ Web サイトに入ると、特定の顧客に関連付けられているデータにのみ関心があるためです。
問題は、データベースをどのように改善できるかということです。このテーマについて読めば読むほど、私
は混乱していきます。
顧客ごとに 1 つずつ、多数の異なるデータベースを作成することをお勧めしますか? に冗長customerID
フィールドを追加するかもしれませblogPost
んか?他のアイデア?モンゴDB?!