Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / История одна дата vs две. Что лучше? / 25 сообщений из 129, страница 1 из 6
12.11.2008, 18:52:36
    #35650193
Novice22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
Добрый день!
Подскажите плз какой из двух вариантов ведения истории значения поля лучше выбрать:
Вариант1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    Tovar(
      id int,
      type varchar( 50 )
    )
    Tovar_history(
      id, FK(Tovar.id),
      Date,
      Name
    )
    id+Date - PK Tovar_history
Вариант2:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    Tovar(
      id int,
      type varchar( 50 )
    )
    Tovar_history(
      id, FK(Tovar.id),
      DateStart,
      DateEnd,
      Name
    )
    id+DateStart - PK Tovar_history

Что лучше и эффективней использовать?
Вариант1 быстрее для вставки и удаления записей, Вариант2 для выборок?
...
Рейтинг: 0 / 0
12.11.2008, 19:00:28
    #35650210
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
Novice22
Код: plaintext
1.
    id+Date - PK Tovar_history
Вот это зря, имхо.
Уже неоднократно обсуждалось, что чревато пытаться достичь уникальности на основе даты (даже со временем).
...
Рейтинг: 0 / 0
12.11.2008, 19:10:28
    #35650221
Novice22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
miksoftNovice22
Код: plaintext
1.
    id+Date - PK Tovar_history
Вот это зря, имхо.
Уже неоднократно обсуждалось, что чревато пытаться достичь уникальности на основе даты (даже со временем).

А можно ссылку на посты, где это обсуждалось, плз. А то при поиске как лучше организовать хранение изменений поля у меня наоборот сложилось впечатление, что этот вариант лучший :/ . http://rdbms.narod.ru/article/history/index.html
...
Рейтинг: 0 / 0
12.11.2008, 19:32:52
    #35650262
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
Novice22 пишет:

> Tovar(
> id int,
> type varchar(*50*)
> )
> Tovar_history(
> id, FK(Tovar.id),
> DateStart,
> DateEnd,
> Name
> )
> id+DateStart - PK Tovar_history
>
>
> Что лучше и эффективней использовать?

2-ой однозначно. Первый ты почти не сможешь обрабатывать запросами.
Т.е. сможешь, но очень сложно.
К тому же это нереляционно - данные в одной записи неявно зависят
от данных в другой записи, поскольку дата начала действия (или конца) записи
лежит в данной записи, а дату конца (или соотв. начала)
действия данной записи ты можешь узнать, только найдя не самым простым
запросом последующую (или соотв. предыдущую ) запись.

(на самом деле конечно не такой он и сложный, но если его вложить
в другие запросы которые уже реально с данными работать будут,
будет совсем невесело).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.11.2008, 19:38:14
    #35650270
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
Novice22,
а между диапазонами разрывы могут быть?
Т.е. может ли так оказаться, что между DateEnd одной записи и DateStart другой записи ничего не будет.?
...
Рейтинг: 0 / 0
12.11.2008, 19:41:02
    #35650274
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
MasterZivК тому же это нереляционноА дублировать (и не просто дублировать, а следить за непересечением и неразрывностью интервалов) данные лучше, что ли?
...
Рейтинг: 0 / 0
12.11.2008, 20:17:25
    #35650318
Novice22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
MasterZiv
Первый ты почти не сможешь обрабатывать запросами.


В первом варианте относительно запросов я вижу пока только одну проблему: каким образом отсекать, что с даты n история временно перестала вестись. Например:
Код: plaintext
1.
2.
3.
        1  Гвоздь  01 . 01 . 08 
        1  Большой гвоздь  15 . 02 . 08 
        1  Ржавый гвоздь    26 . 03 . 08 

Может понадобится "свернуть" историю по Товару с id = 1 с 30.05 он временно перестал выпускаться/покупаться/завозиться. Единственное, что пока придумалось добавление еще одной записи с пустым наименованием и датой, когда история временно прекращена.

miksoft
а между диапазонами разрывы могут быть?

Пересечений быть не должно разрывы могут. Товар может какое-то время отсутствовать по разным причинам на предприятии, на это время нужно прекратить вести историю, после появления товара историю нужно продолжить с даты появления.
...
Рейтинг: 0 / 0
12.11.2008, 20:28:28
    #35650334
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
Novice22Товар может какое-то время отсутствовать по разным причинам на предприятии, на это время нужно прекратить вести историю, после появления товара историю нужно продолжить с даты появления.А тогда как вы вообще собирались применять первый вариант?
...
Рейтинг: 0 / 0
12.11.2008, 21:03:18
    #35650369
Novice22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
miksoftА тогда как вы вообще собирались применять первый вариант?

Путем вставки записей с пустым наименованием и датой
Код: plaintext
1.
2.
3.
4.
5.
6.
        1  Гвоздь  01 . 01 . 08 
        1  Большой гвоздь  15 . 02 . 08 
        1  Ржавый гвоздь    26 . 03 . 08 
        1                            30 . 05 . 08  -- разрыв 
        1  Ржавый гвоздь    01 . 08 . 08 

В случае Варианта2:
Код: plaintext
1.
2.
3.
4.
        1  Гвоздь  01 . 01 . 08   14 . 02 . 08 
        1  Большой гвоздь  15 . 02 . 08   25 . 03 . 08 
        1  Ржавый гвоздь    26 . 03 . 08   30 . 05 . 08 
        1  Ржавый гвоздь    01 . 08 . 08   01 . 01 . 2999 

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

Пока складывается ощущение, что второй вариант лучше по реализации(простоте) select, но более громоздкий для insert/delete (при вставке/удалении не последнего значения надо изменять даты у "соседних записей"), первый наоборот. Или я не прав?
...
Рейтинг: 0 / 0
12.11.2008, 22:47:47
    #35650443
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
MasterZivК тому же это нереляционно - данные в одной записи неявно зависят
от данных в другой записи, поскольку дата начала действия (или конца) записи
лежит в данной записи, а дату конца (или соотв. начала)
действия данной записи ты можешь узнать, только найдя не самым простым
запросом последующую (или соотв. предыдущую ) запись.Ничуть. Скорее, такая зависимость есть именно во втором случае. В первом случае, данные в одной записи никак не зависят от данных в другой записи, во всех записях дата начала точки отсчета. А вот во втором случае, данные в одной записи как раз зависят от данных в другой записи, так как подразумевается, если я правильно понял, непересекающиеся промежутки. И если меняем, например, дату конца периода в первой записи, то обязательно надо корректировать дату в следующей, второй по порядку, записи. Хуже того, при неверном указании даты окончания в одной записи, все последующие могут оказаться в противоречивом состоянии, когда дата их окончания неожиданно станет меньше даты окончания первой записи. Но и это еще не все, во втором случае еще и появляется зависимость между полями. Значение в одном из них обязательно должно превышать значение в другом, и наоборот. Таким образом, именно второй случай следует считать проявлением нереляционности, а точнее, денормализации, выполняемый с целью оптимизации некоторых видов запросов.

P.S. То, что любой факт должен меняться только в одном месте, является косвенным признаком нормальности решения модели.
...
Рейтинг: 0 / 0
13.11.2008, 01:39:24
    #35650507
korda
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
2 ChA
ChAMasterZivК тому же это нереляционно - данные в одной записи неявно зависят
от данных в другой записи, поскольку дата начала действия (или конца) записи
лежит в данной записи, а дату конца (или соотв. начала)
действия данной записи ты можешь узнать, только найдя не самым простым
запросом последующую (или соотв. предыдущую ) запись.Ничуть. Скорее, такая зависимость есть именно во втором случае. В первом случае, данные в одной записи никак не зависят от данных в другой записи, во всех записях дата начала точки отсчета. А вот во втором случае, данные в одной записи как раз зависят от данных в другой записи, так как подразумевается, если я правильно понял, непересекающиеся промежутки. И если меняем, например, дату конца периода в первой записи, то обязательно надо корректировать дату в следующей, второй по порядку, записи. Хуже того, при неверном указании даты окончания в одной записи, все последующие могут оказаться в противоречивом состоянии, когда дата их окончания неожиданно станет меньше даты окончания первой записи. Но и это еще не все, во втором случае еще и появляется зависимость между полями. Значение в одном из них обязательно должно превышать значение в другом, и наоборот. Таким образом, именно второй случай следует считать проявлением нереляционности, а точнее, денормализации, выполняемый с целью оптимизации некоторых видов запросов.

P.S. То, что любой факт должен меняться только в одном месте, является косвенным признаком нормальности решения модели.

С таким же успехом можно сказать, что в первом случае существует зависимость между любыми соседними записями, так как дата в предыдущей должна быть меньше, чем в последующей. Но мне кажется, что подобные зависимости, как в первом, так и во втором случае являются надуманными. Т.е. зависимости конечно есть, но их наличие не означает, что данное решение плохое. Например, в таблице с полями Пол, Беременность, второе поле для женщин может принимать значения TRUE или FALSE, а для мужчин - NULL, следовательно можно говорить, что поля Беременность и Пол находятся в зависимости. Что в этом плохого?

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

> То, что любой факт должен меняться только в одном месте, является косвенным признаком нормальности решения модели.
Это, конечно, в пользу первого варианта.

Я уже было решил, что буду использовать второй вариант, но теперь увидев эту тему и Ваш ответ засомневался в правильности выбора.
В свое время Вы написали примеры запросов ко второму варианту. См.: http://sql.ru/forum/actualthread.aspx?tid=599398
Не могли бы Вы написать, как будет выглядеть запрос для превого варианта?
...
Рейтинг: 0 / 0
13.11.2008, 02:39:03
    #35650525
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
kordaС таким же успехом можно сказать, что в первом случае существует зависимость между любыми соседними записями, так как дата в предыдущей должна быть меньше, чем в последующей. Но мне кажется, что подобные зависимости, как в первом, так и во втором случае являются надуманными.Нельзя так сказать, потому что в первом варианте есть только дата начала. Если поменять эту дату, то просто измениться историческая последовательность. И она может быть верной. Нет явной зависимости между записями. Нормализация не отвечает за Ваши умопостроения, она занимается только аномалиями данных и поиском функциональных зависимостей в модели данных.

kordaНапример, в таблице с полями Пол, Беременность, второе поле для женщин может принимать значения TRUE или FALSE, а для мужчин - NULL, следовательно можно говорить, что поля Беременность и Пол находятся в зависимости. Что в этом плохого?Только то, что мужчина может оказаться беременным, а женщина - в неизвестном медицине состоянии. Вы можете использовать такое решение, но не удивляйтесь сюрпризам. В общем случае, это неправильный подход.

kordaЯ уже было решил, что буду использовать второй вариант, но теперь увидев эту тему и Ваш ответ засомневался в правильности выбора.
Можно использовать любой из этих вариантов, но второй будет явно сложнее реализовывать. Много телодвижений по проверке корректности. Зато запросы на конкретную дату будут чуть проще. В большинстве случаев, я бы предпочел 1 способ.

kordaВ свое время Вы написали примеры запросов ко второму варианту. См.: http://sql.ru/forum/actualthread.aspx?tid=599398 Простите, но Вам не хотелось бы самому над этим поразмышлять ? Теория, это, конечно, хорошо, но без практики - толку от неё маловато.
...
Рейтинг: 0 / 0
13.11.2008, 08:23:26
    #35650650
Michael_N
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
ChA
Можно использовать любой из этих вариантов, но второй будет явно сложнее реализовывать. Много телодвижений по проверке корректности. Зато запросы на конкретную дату будут чуть проще. В большинстве случаев, я бы предпочел 1 способ.


+1
Зачем усложнять себе жизнь? Если дата окончания Вам не нужна - не делайте так. У Вас же периоды не перекрываются! Для упрощения запросов сделайте sp/view с датой окончания периода.

Второй вариант имеет право на существование только если периоды не будут редактироваться. А это маловероятно. Если будут - за&@&сь потом с проверкой корректности.

Всегда лучше то решение, которое проще. :-)
...
Рейтинг: 0 / 0
13.11.2008, 09:34:43
    #35650759
KOT MATPOCKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
Michael_NChA
Можно использовать любой из этих вариантов, но второй будет явно сложнее реализовывать. Много телодвижений по проверке корректности. Зато запросы на конкретную дату будут чуть проще. В большинстве случаев, я бы предпочел 1 способ.


+1
Зачем усложнять себе жизнь? Если дата окончания Вам не нужна - не делайте так. У Вас же периоды не перекрываются! Для упрощения запросов сделайте sp/view с датой окончания периода.

Второй вариант имеет право на существование только если периоды не будут редактироваться. А это маловероятно. Если будут - за&@&сь потом с проверкой корректности.

Всегда лучше то решение, которое проще. :-)

Выскажусь:
Согласен вышесказанным:
1 вариант проще в заполнении, сложнее в выборках, проверок корректности (почти) не требует
2 вариант сложнее в заполнении, проще в выборках, требует проверок корректности данных при корректировке.

Можно выбрать промежуточный вариант: структура - как во 2 варианте, но пользователь может корректировать только поле DateStart. Триггер пусть корректирует поле DateEnd в соответствующих записях. Результат: простота заполнения 1 варианта, простота выборок 2 варианта, отсутствие проверок корректности 1 варианта + триггер нада написать.
...
Рейтинг: 0 / 0
13.11.2008, 09:38:13
    #35650767
KOT MATPOCKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
Ну и АВТОРу (начинает вроде):
DateStart = NULL - значит - "от царя гороха" или испокон веков (кому как нравится)
DateEnd = NULL - значит - пожизненно, т.е. всегда
...
Рейтинг: 0 / 0
13.11.2008, 09:47:19
    #35650798
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
KOT MATPOCKuHНу и АВТОРу (начинает вроде):
DateStart = NULL - значит - "от царя гороха" или испокон веков (кому как нравится)
DateEnd = NULL - значит - пожизненно, т.е. всегдаДля выборок по индексу - очень неудачное решение. Имхо, лучше использовать константы, гарантированно выходящие за диапазон обрабатываемых данных.
...
Рейтинг: 0 / 0
13.11.2008, 10:05:53
    #35650849
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
miksoft пишет:

> А дублировать (и не просто дублировать, а следить за непересечением и
> неразрывностью интервалов) данные лучше, что ли?
Вы во-первых сами подняли тему о разрывах. Т.е. это не всегда и нужно.
а во-вторых - да, ЛУЧШЕ следить за этим. Это делается в ОДНОМ запросе
на изменение. А всё остальное надо делать во многих запросах на чтение.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.11.2008, 10:17:24
    #35650884
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
MasterZiv> А дублировать (и не просто дублировать, а следить за непересечением и
> неразрывностью интервалов) данные лучше, что ли?
Вы во-первых сами подняли тему о разрывах. Т.е. это не всегда и нужно.
а во-вторых - да, ЛУЧШЕ следить за этим. Это делается в ОДНОМ запросе
на изменение. А всё остальное надо делать во многих запросах на чтение.
Следить за этим констрейнтами мало в какой СУБД получится. Если следить запросами - сложно и/или накладно уберечься от одновременной вставки в разных сессиях. Кроме того, существует вероятность невыполнения этой проверки.
Имхо, лучше иметь надежные данные в базе и совершенстовать (исправлять ошибки) выборки, нежели наоборот.
...
Рейтинг: 0 / 0
13.11.2008, 10:22:01
    #35650895
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
ChA пишет:

> Ничуть. Скорее, такая зависимость есть именно во втором случае. В первом
> случае, данные в одной записи никак не зависят от данных в другой
> записи, во всех записях дата начала точки отсчета.

Да зависимость-то есть в любом случае, если она есть в предметной области.
Если один товар "сменяет" другой - они зависимы. Вопрос в том, как эту
зависимость более удобно представить в БД.

А вот во втором
> случае, данные в одной записи как раз зависят от данных в другой записи,
> так как подразумевается, если я правильно понял, непересекающиеся
> промежутки.

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

И если меняем, например, дату конца периода в первой записи,
> то обязательно надо корректировать дату в следующей, второй по порядку,
> записи.

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

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

вы во-первых путаете денормализацию и ненормализованность,
а во-вторых, говорите вообще ерунду. Кортежи нормализуются независимо
друг от друга - вся таблица целиком нормализуется. Функциональная зависимость--
это отношение между полями таблицы. У КАЖДОГО товара должен
быть срок его действия. Есть товар. Есть о нём запись в таблице(ах).
Все данные ЭТОГО товара должы быть самодостаточными для приложения.
Все остальные товары я могу удалить напр. Вот понадобится мне
почистить эту таблицу истории -- и КАК ? Последнюю запись перед
первой удаляемой придётся оставить, так ? Придётся. Но она БУДЕТ
НЕВАЛИДНОЙ, потому что срок начала её действия будет находится
в предыдущей удалённой записи. Тут пример немного надуманный, правда,
потому что можно считать дату в записи датой начала действия записи,
и тогда всё как бы в порядке. Но в общем это всё равно -
с такими проблемами вы всегда будете встречаться, если будете
раскладывать данные одной записи по нескольким.

> P.S. То, что любой факт должен меняться только в одном месте, является
> косвенным признаком нормальности решения модели.

Нет. Здесь нет никакой ненормальности. Это -- бизнес логика в
чистом виде -- вам нужно чтобы периоды сроков действия товаров не
пересекались.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.11.2008, 10:24:10
    #35650904
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
korda пишет:

> Я уже было решил, что буду использовать второй вариант, но теперь увидев
> эту тему и Ваш ответ засомневался в правильности выбора.
> В свое время Вы написали примеры запросов ко второму варианту. См.:
> http://sql.ru/forum/actualthread.aspx?tid=599398
> Не могли бы Вы написать, как будет выглядеть запрос для превого варианта?

вот именно. Надо написать список нужных запросов и попытаться реализовать
их в двух вариантах. Потом посмотреть, какой лучше. Я вас уверяю, второй
выиграет.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.11.2008, 10:26:54
    #35650912
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
miksoft пишет:

> Для выборок по индексу - очень неудачное решение. Имхо, лучше
> использовать константы, гарантированно выходящие за диапазон
> обрабатываемых данных.

Да не пугайте народ. Ничего страшного.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.11.2008, 10:29:47
    #35650922
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
KOT MATPOCKuH пишет:

> Можно выбрать промежуточный вариант: структура - как во 2 варианте, но
> пользователь может корректировать только поле DateStart. Триггер пусть
> корректирует поле DateEnd в соответствующих записях. Результат: простота
> заполнения 1 варианта, простота выборок 2 варианта, отсутствие проверок
> корректности 1 варианта + триггер нада написать.

Так , стоп.

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

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

Вообще, ещё раз, это бизнес-логика в чистом виде.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.11.2008, 10:45:42
    #35650964
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
MasterZiv
miksoft пишет:

> Для выборок по индексу - очень неудачное решение. Имхо, лучше
> использовать константы, гарантированно выходящие за диапазон
> обрабатываемых данных.

Да не пугайте народ. Ничего страшного.
Тогда придется писать
Код: plaintext
1.
SELECT * FROM Tovar_history
WHERE (DateStart<NOW() OR DateStart IS NULL) AND (NOW()<DateEnd OR DateEnd IS NULL)
На мой взгляд, индексы тут неприменимы.

Хотя, если записей сто штук, то, конечно, ничего страшного...
...
Рейтинг: 0 / 0
13.11.2008, 12:29:33
    #35651341
KOT MATPOCKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
MasterZiv
...
Тут надо разобраться периоды могут пересекаться, или нет.
...


Не могут однозначно, т.к. это история значения некоторого параметра. Одновременно не может быть двух значений у параметра (если только значение параметра не является списком, но это - другая история).

MasterZiv
...
будут ли дырки или нет?
...

Во-первых: сам автор уже ответил на этот вопрос - вполне нормально.
Только смысла в дырках я не вижу.
Функциональность отвечает (я так понял) только за историю значения параметра. Отсутствие значения однозначно всеми (мне известными) СУБД реализовано одним способом: значение = NULL, что в некотором смысле - тоже значение (в нашем случае строка в таблице истории). Отсутствие же доступа к параметру решается не на этом уровне, т.е. не этими сущностями, а попытка в одну сущность впихнуть несколько разных функциональностей еще никогда не приводила к хорошему результату.
Пример последнего: если с 01.01.2008 по 10.01.2008 небыло сковородок, то значение цены на сковородки должно существовать (старое, например), только показывать его смысла нет.
...
Рейтинг: 0 / 0
13.11.2008, 12:34:10
    #35651361
KOT MATPOCKuH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
История одна дата vs две. Что лучше?
MasterZiv
Вообще, ещё раз, это бизнес-логика в чистом виде.

Вопросы, задаваемые в этом форуме редко относятся только к структуре БД.
Большей частью требуется подсказать вариант бизнес-логики и уже под нее структуру БД.

Даже если некто спрашивает про структуру, то отвечающие обычно пытаются догадаться о его бизнес-логике и ответить на вопрос.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / История одна дата vs две. Что лучше? / 25 сообщений из 129, страница 1 из 6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]