Как правильно перенести данные?

235
28 марта 2017, 10:23

У меня есть база данных с такой структурой, каждый раз как приходит пациент, допустим тот же самый, каждый раз приходится о нем заполнять информацию, что не очень удобно, проще сделать "карточку" пациента и добавлять в нее приемы

Я переделал вот в такую структуру

В таблице PatientsImages для хранения изображений используется filegroup-а. Вопрос заключается в следующем, как мне перенести данные,из одной структуры в другую,учитывая что в первой таблице "Patients",записи повторяются,пример ниже,а во второй структуре эти повторения нужно перенести в "приемы", я не имею большого опыта в работе с БД, не могли бы пожалуйста направить?

Id | FullName | DateOfBirth | DateOfReceipt | Menstrual

5180 | Абдиева | 13.05.1976 | 2014-05-13 | NULL

5642 | Абдиева | 13.05.1976 | 2016-03-04 | NULL

5372 | Абдиева | 13.05.1976 | 2015-03-05 | NULL

Answer 1

Т.к. первоначальная таблица Patients по сути представляет приемы, я бы начал с переименования ее в "Приемы" и добавил бы nullable поле PatientID, указывающее на таблицу Patients. Тогда в PatientImages ничего менять не надо - она будет указывать на новую таблицу Приемы, что нам и нужно.

На этом можно было бы и остановиться и добавить в код логику: если FullName / DateOfBirth есть в таблице "Приемы", брать оттуда, иначе - из Пациентов. Но можно пойти дальше и нормализовать данные.

Т.к. в исходной схеме пациенты никак не идентифицировались, можно идентифицировать их по фамилии и дате рождения:

INSERT INTO Patients (PatientID, FullName, DateOfBirth) 
SELECT ROW_NUMBER() OVER(ORDER BY FullName, DateOfBirth) as PatientID, FullName, DateOfBirth from Receptions
GROUP BY FullName, DateOfBirth 

Затем нужно заполнить поле PatientID:

UPDATE Receptions SET Receptions.PatientID=Patients.PatientID
FROM Receptions INNER JOIN Patients WHERE Receptions.PatientID=Patients.PatientID

Затем убрать флаг NULLABLE с поля Receptions.PatientID.

READ ALSO
Работа в массивом

Работа в массивом

Дан такой массив: как мне избавится от foreach'ов чтобы не писать их оч много а просто указать длинну строки?

233
Как обновить DataGrid.ItemsSource без фризов (C# WPF .NET 4.5)?

Как обновить DataGrid.ItemsSource без фризов (C# WPF .NET 4.5)?

Приветствую всех, увы попытки найти 'велосипеды' в гугле закончились безрезультатноПроблема такова:

397
Переключение страниц в wpf по архитектуре mvvm

Переключение страниц в wpf по архитектуре mvvm

Всем доброго времени сутокМоя проблема заключается в следующем, как реализовать в WPF переключение между страницами используя MVVM

377