Mysql、手書きの封筒メモ、Excel スプレッドシート、完全に欠落しているレコード (質問しないでください) の不浄な組み合わせを開始したときのデータベースを整理する際に、次の問題があります。続く。
私は非常に単純化された形式で4つのテーブルを持っています:-
customers
---------
id int not null primary key,
name varchar(50)
users
---------
id2 int not null primary key,
name varchar(50)
address
-------
id int,
id2 int,
country varchar(50)
product
-------
id int,
id2 int,
item varchar(50)
サンプルデータ:
例 select * from customers;
+----+------+
| id | name |
+----+------+
| 1 | Fred |
+----+------+
ユーザーから * を選択します。
+----+---------+
|id2 | name |
+----+---------+
| 1 | Wilma |
| 2 | Pebbles |
+----+---------+
select * from address;
+----+-----+---------+
| id | id2 | country |
+----+-----+---------+
| 1 | 1 | Bedrock |
| 1 | 2 | Bedrock |
+----+-----+---------+
商品から*を選択してください。
+----+-----+---------+
| id | id2 | item |
+----+-----+---------+
| 1 | 1 | Item1 |
| 1 | 2 | Item2 |
+----+-----+---------+
customers.id は主キーで、address.id と product.id へのリンクです
users.id2 は主キーで、address.id2 と product.id2 にリンクしています
複数のユーザーが 1 人の顧客とアドレスを共有している場合、この配置は失敗します。現時点でこれを回避する唯一の方法は、アドレスのレコードを複製し、id2 番号を変更することです。現在、これはデータベース内の 1 つのケースにのみ影響します。
ユーザーが顧客とアドレスを共有していない場合、顧客の名前、顧客の住所、ユーザーの名前、およびユーザーの住所を見つける select ステートメントを実行できません。この状況は、レコードの約 30% に当てはまります。
この混乱を整理する方法についての提案は大歓迎です。
リチャード