Я разрабатываю систему, в которой предыдущему разработчику понравилось хранить несколько значений в отдельных ячейках. См. DDL ниже:Плохой дизайн базы данных
create table visits (id int, values varchar(100))
INSERT INTO visits values (1, '01/01/2000, 1')
INSERT INTO visits values (2, '01/01/2000, 2')
INSERT INTO visits values (3, '01/01/2000, 3')
В строке 1 указано, что на 01/01/2000 клиент 1 посетил магазин. Строка 2 говорит, что на 01/01/2000 клиент 2 посетил магазин и т. Д.
Я знаю, что это плохо. Я не могу придумать разумный способ разрешения этого, потому что приложение имеет множество массивов, которые разделяют содержимое «значений». Я хотел бы, чтобы это:
create table visits (id int, visitdate datetime, customerid int)
Однако, делая это приводит к ошибкам, так как массивы, расщепляющие столбец значений содержит только одно значение вместо двух. Я считаю, что мне нужно реорганизовать всю базу кода, чтобы обойти это, например, удаление массивов. Однако есть ли другой способ?
Добавить новые столбцы для даты и customerid в таблицу посещений. Перемещаясь вперед, начните вставлять в новые столбцы, продолжая вставлять предыдущий столбец. Затем вы можете добавить функцию, которая будет использовать новые столбцы. – Matt
Вы также упоминали, что существует множество методов получения данных в виде массива ... попробуйте реорганизовать так, чтобы у вас была одна функция, которая анализирует данные из таблицы посещений. – Matt
Очевидно, что вам понадобится эта книга: http: // www. amazon.com/Refactoring-Databases-Evolutionary-Addison-Wesley-ebook/dp/B001QAP36E/ref=sr_1_1?s=digital-text&ie=UTF8&qid=1372109272&sr=1-1&keywords=refactoring+databases – HLGEM