我在整理数据库时遇到以下问题,当我开始混合 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)
样本数据:
示例从客户中选择 *;
+----+------+
| id | name |
+----+------+
| 1 | Fred |
+----+------+
从用户中选择 *;
+----+---------+
|id2 | name |
+----+---------+
| 1 | Wilma |
| 2 | Pebbles |
+----+---------+
从地址中选择 *;
+----+-----+---------+
| 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
这种安排在多个用户与客户共享地址的情况下失败,目前解决此问题的唯一方法是复制地址中的记录并更改 id2 号码。目前这只影响数据库中的一个案例。
在用户不与客户共享地址的情况下,我无法制定一个选择语句,该语句将找到客户姓名、客户地址、用户姓名和用户地址。这种情况适用于大约 30% 的记录。
任何关于如何解决这种混乱的建议都将受到欢迎。
理查德