
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
21.08.2013, 02:42:18
|
|||
|---|---|---|---|
|
|||
Декомпозиция большой таблицы на несколько мелких |
|||
|
#18+
Привет всем! Я не большой спец. в БД и MySQL в частности - учусь, поэтому могу немного путаться в терминологии. Скорее всего подобный вопрос уже был на форуме, но именно поэтому не нашел. У меня есть внутренняя БД организации, которая досталась на новом месте работы. Одна ОГРОМНАЯ таблица товаров, категорий и кучи различных свойств. Свойства в этой таблице повторяются много раз(т.е. не уникальные). Каждая позиция - отдельная строка этой таблицы. Нужно ее разделить на несколько мелких(сделать декомпозицию), чтобы выделить названия, категории и свойства в отдельные таблицы с уникальным содержимым. Скорее всего и так понятно, чего я хочу, но все же приведу структуру. 1. - Структура существующей БД - только нужные в данной случае поля. ГЛАВНАЯ ТАБЛИЦА id int(10) unsigned NOT NULL AUTO_INCREMENT - (уникальный ИД позиции товара) prod_name varchar(255) NOT NULL - название позиции(неуникальное) prod_cat varchar(64) NOT NULL - название категории(неуникальное) prod_prop01 varchar(64) NOT NULL - название свойства1(неуникальное) prod_prop02 varchar(64) NOT NULL - название свойства2(неуникальное) 2. - Хотелось бы получить след. структуру ГЛАВНАЯ ТАБЛИЦА id int(10) unsigned NOT NULL AUTO_INCREMENT - (уникальный ИД позиции товара) prod_name int(10) - ИД названия позиции(уникальный) prod_cat int(10) - ИД категории(уникальный) prod_prop01 int(10) - ИД свойства1(уникальный) prod_prop02 int(10) - ИД свойства2(уникальный) ТАБЛИЦА НАЗВАНИЙ id int(10) unsigned NOT NULL AUTO_INCREMENT - (уникальный ИД Названия) name varchar(64) NOT NULL - название позиции(уникальное!) И такие же таблицы для - категории, свойства1 и свойства2. Возможно ли это сделать только с помощью MySQL ? Если нет, то подскажите общий алгоритм решения такой задачи. Всем спасибо за внимание к этой банальщине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2013, 07:52:12
|
|||
|---|---|---|---|
|
|||
Декомпозиция большой таблицы на несколько мелких |
|||
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2013, 07:55:44
|
|||
|---|---|---|---|
|
|||
Декомпозиция большой таблицы на несколько мелких |
|||
|
#18+
Забыл алиасы полей в SELECT DISTINCT :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2013, 08:03:30
|
|||
|---|---|---|---|
|
|||
Декомпозиция большой таблицы на несколько мелких |
|||
|
#18+
Cygapb-007, Если не сложно хотя бы эту строчку подправьте. Почти понял в общих чертах как это делается - SQL очень интуитивный. Приеду на работу, буду пробовать на тестовой БД. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.08.2013, 08:09:38
|
|||
|---|---|---|---|
|
|||
Декомпозиция большой таблицы на несколько мелких |
|||
|
#18+
Cygapb-007 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2013, 16:17:35
|
|||
|---|---|---|---|
|
|||
Декомпозиция большой таблицы на несколько мелких |
|||
|
#18+
Cygapb-007, Честно говоря не удалось собрать работающий запрос на основе вашего шаблона. Если есть возможность помогите разобраться. Мне кажется вы тут напутали со скобками и вложенностью? Или сделали это намеренно для обучающих, скажем так, целей;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2013, 17:06:14
|
|||
|---|---|---|---|
|
|||
Декомпозиция большой таблицы на несколько мелких |
|||
|
#18+
coderus, Оки, вместо конструкции с одной командой create table ... (...) select...; можно использовать 2 команды: create table...(...); insert into...(...) select...; . Вместе с тем, хотел бы посмотреть на структуру вашего варианта деления таблицы и причину, по которой он «не работающий» (например, сообщения об ошибках, или другая мотивация). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.10.2013, 21:58:30
|
|||
|---|---|---|---|
|
|||
Декомпозиция большой таблицы на несколько мелких |
|||
|
#18+
Cygapb-007, огромное спасибо, полностью разобрался. Пришлось наскоком вспоминать основные моменты SQL. Удалось подогнать под свои данные, но только после того как разобрался в сути. Это того стоило, теперь не так страшно за данные. Ваш схематичный ответ получился концептуальным для такой задачи. Чуть позже выложу листинги со всеми шагами по переезду на новую структуру БД. Написал также для подстраховки, проверочные SQL-запросы - сверка ID в новых таблицах:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1835918]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 308ms |

| 0 / 0 |
