На работе мы создаем форму, позволяющую агентам недвижимости отправлять свои новые разработки. Упрощенная версия нашей формы:Два способа хранения одних и тех же данных
Bedrooms: [Enter a number]
Quantity: [Enter a number]
Add Another | Save
Мы разрешаем агентам добавлять несколько строк. Однако в настоящий момент мы имеем абсолютно нулевой проверки дубликатов, на мой взгляд, позволяет нашей базы данных для хранения идентичные данные в два способами:
| development_id | bedrooms | quantity |
|----------------|----------|----------|
| 1 | 3 | 1 |
| 1 | 3 | 1 |
| 1 | 3 | 3 |
Очевидно, что строка может представлять собой как один единицы или Группа единиц.
Я утверждаю, что мы должны хранить разработки либо в одном направлении от другого, но, конечно, не оба. К сожалению, сторонние разработчики — Я в основном front-end — утверждают, что это неважно, и для меня это кажется абсурдным.
Для простого примера, сохранив его, как указано выше, а COUNT
получить сколько события являются для продажи, которые имеют 3 спальни требует SELECT COUNT(*)
и рассмотрения quantity
поля.
Будучи разработчиком интерфейсов, в основном это логика представления, поскольку преобразование между их представлением как списком отдельных единиц или объединением их вместе должно быть задачей интерфейса/API, а бизнес-логика должна быть так или другой. В конечном итоге наша таблица, похоже, не нормализовалась вообще.
По моему скромному мнению, должен быть уникальный индекс на development_id, bedrooms
.
Я прав в своих аргументах? Или ужасно неправильно?
Edit:
В разъяснении все это возможно в настоящее время, все из которых представляют собой один и тот же факт, и мой аргумент должен быть только один путь:
| development_id | bedrooms | quantity |
|----------------|----------|----------|
| 1 | 3 | 1 |
| 1 | 3 | 1 |
| 1 | 3 | 1 |
Same как:
| development_id | bedrooms | quantity |
|----------------|----------|----------|
| 1 | 3 | 1 |
| 1 | 3 | 2 |
То же, что:
| development_id | bedrooms | quantity |
|----------------|----------|----------|
| 1 | 3 | 3 |
Вы правы, должен быть только один способ записи каждого факта в базу данных, и дублировать строки не следует. Однако я не уверен в вашем уникальном индексе. Что такое development_id for, и что это значит, когда у вас есть несколько строк с одинаковым значением для него? – reaanb
У нас также есть первичный 'id', поэтому он больше похож:' id (pk) | development_id (fk) | спальни | фаза | floor_area | цена | количество, но остается простой факт, что не должно быть дубликатов - с уникальным ограничением на 'development_id, спальни, фаза, floor_area, price'. – Wildhoney
«Очевидно, что строка может представлять как одну единицу, так и группу единиц». Мне непонятно, я не понимаю. И «два пути». – philipxy