У меня есть несколько таблиц от разных поставщиков, содержащих информацию о поставляемых ими продуктах. Форматы таблиц различаются - разные идентификаторы, различное описание и т.д. - поскольку каждый поставщик хранит отдельную информацию о своих продуктах. Некоторые продукты в разных таблицах могут быть одинаковыми, но я не знаю, что в то время, когда строки вставлены; Я должен пройти через них вручную, чтобы определить, какие продукты одинаковы.
Например, рассмотрим следующие таблицы (SQL Fiddle):
CREATE TABLE A (
id char(10)PRIMARY KEY,
name char(16),
color char(16),
weight float
);
CREATE TABLE B (
id int(11) PRIMARY KEY,
name varchar(60),
color char(3)
);
Каждая таблица может иметь разные значения ID, столбцы и четные значения для одного и того же столбца; например:.
Table A:
+------------+-----------------+---------------+-----------------+
| ID | NAME | COLOR | WEIGHT |
+------------+-----------------+---------------+-----------------+
| RFY-55-001 | Wagon, Classic | Red | 15.199999809265 |
| RFY-62-001 | Trike, My First | Red | 8.60000038147 |
| RFY-64-001 | Trike, 12 Inch | Red | 15.39999961853 |
| SWN-35-001 | Trike, Roadster | Metallic Blue | 20.700000762939 |
| SWN-35-002 | Trike, Roadster | Silver | 20.700000762939 |
| SWN-35-003 | Trike, Roadster | Cherry Red | 20.700000762939 |
+------------+-----------------+---------------+-----------------+
Table B:
+-------+--------------------------------------------+--------+
| ID | NAME | COLOR |
+-------+--------------------------------------------+--------+
| 10560 | Schwinn Roadster Tricycle | BLU |
| 10685 | Radio Flyer Classic Red Wagon | (null) |
| 10880 | Radio Flyer Classic Red Dual Deck Tricycle | (null) |
| 12008 | Fisher-Price I Can Play Basketball | (null) |
+-------+--------------------------------------------+--------+
Поставщик A хранит короткое имя продукта, но содержит подробную информацию о продукте в дополнительных столбцах. Поставщик B хранит более подробное название продукта, но не много дополнительной информации. В обоих случаях идентификатор производителя смешивается с другим полем.
Строки вставляются автоматически, и я не могу проверить каждый продукт до его вставки. Я могу только перебирать их время от времени и обновлять ссылки, которые я нахожу вручную. Например, небольшое исследование показывает, что трехколесный велосипед Radio Flyer Classic Red Dual Deck имеет 12-дюймовое переднее колесо и весит 15,4 фунта, что указывает на то, что элемент RFY-64-001
в таблице A является тем же продуктом, что и элемент 10880
в таблице B.
Какие отношения я использовал бы для привязки строк в разных таблицах, если они ссылаются на один и тот же продукт, когда-то после их вставки, чтобы у меня был один ключ для каждого уникального продукта?
Очевидным решением было бы добавить таблицу подключения с моим ключом и использовать триггеры при вставке в другие таблицы. Проблема с этим решением заключается в том, что процесс "sync" становится довольно ручным и подвержен ошибкам.