|
|
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
Добрый день! Вопрос новичка – ваяю БД: каждый день создается документ (назовем "таблица заказов") в него из справочников ("таблица клиентов") заносятся клиенты. Вопрос: лучше и правильнее хранить в таблице заказов: 1. Индексы клиентов 2. Самих клиентов(грубо говоря фамилии) Прошлые заказы не меняются, то есть если у меня у клиента сменился адрес, то надо чтобы в прошлых заказах остался старый. Общая инфа – повторяемость клиентов в среднем не больше 5. Длинна информации каждом о клиенте на больше 100 символов. Заказов в общей таблице до 100000. Просто вот думаю, может по второму варианту – он конечно не нормализован, но с другой стороны повторений клиентов не так много, за целостностью следить не надо, любые изменения можно делать, не боясь повредить прошлую инфу и тд… А минусы – размер, но для 100000 записей то пофиг;) Или это плохой вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 11:02 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
saya812Или это плохой вариант? Нормальный вариант если не требуется получать "все заказы данного клиента". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 12:09 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
saya812Прошлые заказы не меняются, то есть если у меня у клиента сменился адрес, то надо чтобы в прошлых заказах остался старый. Вариант 1. И вести историю изменения реквизитов клиентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 12:21 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! Мнения разделились))) Нормальный вариант если не требуется получать "все заказы данного клиента". Но даже если так - то я ведь буду этого клиента по фамилии искать, а не по индексу (пользователь ведь все равно будет фамилию вводить) - если несколько однофамильцев - значит надо по доп. полям искать. Если для поиска в справочнике выбирать будет - то сразу искать по нескольким полям... Вариант 1. И вести историю изменения реквизитов клиентов. А какая все-же основная цель этого усложнения? На самом деле начал делать по 1 варианту, даже написал пару сложных(для меня) запросов, но когда дошел до того что надо еще и изменения сохранять задумался об общей целесообразности... Ведь по второму варианту - сегодня вася пупкин с адрсом 1, завтра он адрес сменил, менеджер просто открыл его и поменял адрес - все просто, ни за чем следить не надо... А если по первому - менять нельзя, вся база поплывет, надо нового васю забивать, либо создавать еще 1 справочник с адресами для истории (типа последний=актуальный)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 12:36 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
saya812Но даже если так - то я ведь буду этого клиента по фамилии искать, а не по индексу (пользователь ведь все равно будет фамилию вводить) Ни у человека, ни у организации нет естественного ключа. Любой атрибут, включая фамилию и название может поменяться. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 12:53 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНи у человека, ни у организации нет естественного ключа. Любой атрибут, включая фамилию и название может поменяться. Признаком ключа является все же не неизменность, а уникальность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 13:00 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
vadiminfoПризнаком ключа является все же не неизменность, а уникальность. Теоретикам уникальности может и достаточно, на практике же требуется и неизменность. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 13:06 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
saya812А какая все-же основная цель этого усложнения? Если клиент у вас поменял фамилию (замуж вышел :)) - как Вы найдете его старые заказы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 13:28 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТеоретикам уникальности может и достаточно, на практике же требуется и неизменность. Скорей всего теории уникальности нет, но есть понятие ключа в нем имеет значение тока уникальность. Ну так его изобретатели придумали. Ниче не попишешь: оне не озаботились практическими потребностями "не теоретиков" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 13:37 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
Предлагаю для заказа хранить индекс клиента и адрес доставки, а не адрес клиента. Точнее ссылку на адрес доставки. По умолчанию адрес доставки = адрес клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 14:20 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
Любой атрибут, включая фамилию и название может поменяться. Если клиент у вас поменял фамилию (замуж вышел :)) - как Вы найдете его старые заказы? Ну все же если фамилия поменялась то это скорее другой клиент... Просто ключи операторам все равно не доступны. Или под таблицей клиентов еще таблицу фамилий делать? Тогда в основной таблице клиенты уже будут храниться не просто как индексы, а уже как целые конструкции(объекты) - клиент_ид.фамилия_ид. А я то надеялся обойтись без геморроя... А вообще, может тогда хранить в основной таблице просто фамилию, но сделать еще дополнительное поле(скрытое, назовем "индекс клиента") для хранения индекса карточки клиента. Тогда я смогу менять в карточке клиента что угодно, а главной таблице останется информация на момент заказа, а найти этого клиента я всегда смогу по "индексу клиента":) Может так сделать? (критика приветствуется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 14:26 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
alexxxx0101Предлагаю для заказа хранить индекс клиента и адрес доставки, а не адрес клиента. Точнее ссылку на адрес доставки. По умолчанию адрес доставки = адрес клиента. То есть фамилию клиента не хранить в заказе? но тогда при смене фамилии в карточке клиента, в старых заказах смениться фамилия... Может я что не так понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 14:36 |
|
||
|
организация БД (индексы или объекты)
|
|||
|---|---|---|---|
|
#18+
saya812А вообще, может тогда хранить в основной таблице просто фамилию, но сделать еще дополнительное поле(скрытое, назовем "индекс клиента") для хранения индекса карточки клиента. Тогда я смогу менять в карточке клиента что угодно, а главной таблице останется информация на момент заказа, а найти этого клиента я всегда смогу по "индексу клиента":) Может так сделать? (критика приветствуется) Да, это рабочий вариант, так делают - этакий дешевый вариант версионности данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2012, 14:53 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37869230&tid=1541620]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 342ms |

| 0 / 0 |
