Как хранить данные «так же, как»? - PullRequest
6 голосов
/ 14 октября 2010

У меня есть одна модель с 3 адресами: пикап, выпадение и выставление счетов. Я полагаю, что адрес для выставления счета, как правило, будет либо адресом получения, либо возврата, поэтому с точки зрения пользовательского интерфейса у меня должна быть опция «то же, что и». Но с точки зрения БД, следует ли мне сохранять поле «как» или дублировать данные?

Ответы [ 4 ]

4 голосов
/ 14 октября 2010

У вас должен быть один и тот же идентификатор строки из таблицы адресов в двух разных столбцах, PickUp и DropOff.Таким образом, вы не дублируете адрес, не используете какой-либо сторожевой адрес и можете легко запросить, совпадает ли адрес PickUp с DropOff.Если в будущем произойдет одно из этих изменений, вы всегда можете изменить значение Id, сохраненное в соответствующем столбце, на новый адрес.

2 голосов
/ 14 октября 2010

Тот факт, что адрес является одним и тем же физическим адресом, не означает, что это тот же концептуальный адрес. Действительно, адрес Джона Доу может быть «123 Elm St.», но концептуально его адрес - «почтовый адрес Джона Доу».

В частности, для адресов я бы сказал, может и должен дублироваться в базе данных из-за этого простого случая: рассмотрим двух человек, которые живут по одному адресу. Теперь один из них движется. Если вы сохраняете адрес только один раз, обновление адреса «движителя» также обновит адрес исходного соседа по комнате.

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

2 голосов
/ 14 октября 2010

Вы можете создать таблицу с именем 'Address' и создать FK для Pickup, Dropoff, Billing для этой таблицы Address.

1 голос
/ 14 октября 2010

alt text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...