2009-11-25 3 views
0

У меня есть существующая база данных, для которой необходимы некоторые изменения. Мне нужно решить, нужно ли изменять таблицу для записи дополнительных данных или использовать существующую таблицу, которая уже записывает эти данные для отдельного теста и связывает ее с другой таблицей с новой таблицей.Alter table vs new table с внешними ключами

Существующее:

tSubTest(ixSubTest (pk), ixTest (fk)) 
tPressureVolume(ixPressureVolume (pk), ixSubTest (fk), ...data fields 1...) 
tMotorData(ixMotorData (pk), ixSubTest (fk), ...data fields2...) 

Вариант 1:

tSubTest(ixSubTest (pk), ixTest (fk)) 
tPressureVolume(ixPressureVolume (pk), ixSubTest (fk), ...data fields 1...) 
tMotorData(ixMotorData (pk), ixSubTest (fk), ...data fields2..., ...data fields 1...) 

Вариант 2:

tSubTest(ixSubTest (pk), ixTest (fk)) 
tPressureVolume(ixPressureVolume (pk), ixSubTest (fk), ...data fields 1...) 
tMotorData(ixMotorData (pk), ixSubTest (fk), ...data fields2...) 
tMDPVLink(ixMDPVLink (pk), ixMotorData (fk), ixPressureVolume (fk)) 

В принципе так оно и работал там был тест, чтобы проверить громкость давления один раз начало тестовой последовательности. Теперь они хотят записывать его каждые пять минут с другими электрическими данными. Они все еще будут выполнять начальный тест объема давления.

+0

Я не понимаю ваши поля данных ... ... ... ... ... 1 ... терминология –

+0

Я просто аббревиатура всех фактических полей данных. '... data fields 1 ...' имеет полдюжины полей, '... data fields2 ...' имеет более дюжины. В основном, что я имел в виду, добавляли поля данных от tPressureVolume до tMotorData – Tanj

+0

Это насос + эл. двигатель? tMotorData содержит el. данные от двигателя, а tPressureVolume описывает насос? Для оценки сущностей нужно «визуализировать» объекты - объясните. –

ответ

2

У меня есть существующая база данных, которая нуждается в . Мне нужно решить, нужно ли изменять таблицу для записи дополнительных данных или использовать существующую таблицу , которая уже записывает эти данные для отдельного теста и связывает его с другим столом с новой таблицей.

Я бы не поместил что-то в отдельную таблицу со ссылкой только на основании того, что она добавляется в конце проекта.

Попытайтесь сохранить эти биты информации вместе, которые принадлежат друг другу -> Я предпочел бы обновлять существующие таблицы дополнительным столбцом или двумя, чем создавать искусственную новую «связанную» таблицу.

Единственным исключением из этого правила может быть, если у вас имеется значительное количество столбцов (например, 10 или более), которые образуют логический объект и которые когда-либо будут присутствовать в вашем бизнес-случае менее чем за 10% случаев.

E.g. если у вас есть определенный тип клиента, которому нужно много дополнительных полей, но это действительно только несколько клиентов (например, ваши клиенты «Gold»), тогда было бы лучше помещать эти «кластеры» данных в отдельную таблицу и свяжите его, поскольку в противном случае целая куча полей будет пустой (NULL) для подавляющего большинства ваших объектов базы данных.

Надежда, что помогает немного - мои собственные 2 цента ;-)

+0

Я с Марком - если речь идет только о добавлении столбцов в существующую, то добавьте столбцы, так как в долгосрочной перспективе все остальное причинит вам боль. Единственная проблема будет заполнять новые столбцы для существующих данных. – Murph

1

Если все данные (двигатель + насос) отбирают в то же время, положить все в одну таблицу, как это:

pump_model_02

Если давление/объем пробы независимо друг от данных двигателя, использовать это:

pump_model_03