|
|
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
======================= Роман Чемисов Тел.: +79149052257 ICQ: 157070721 Skype: gangabass ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 04:17 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Промахнулся с кнопкой :-( Вопрос в том, что заказчик хочет иметь возможность добавлять в будущем свои поля (а также сортировать результаты по этим полям). Например, есть таблица sites. В ней: name, url, lang, country. Заказчик в будущем может захотеть добавить ещё несколько полей (связать их с конкретным site_id): email для контактов, персона для контактов и т. д. Т. е. мне нужно как-то хранить имена добавленным полей и данные в них. Как это правильно сделать? ======================= Роман Чемисов Тел.: +79149052257 ICQ: 157070721 Skype: gangabass ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 04:24 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Roman V TchemisovПромахнулся с кнопкой :-( Вопрос в том, что заказчик хочет иметь возможность добавлять в будущем свои поля (а также сортировать результаты по этим полям). Например, есть таблица sites. В ней: name, url, lang, country. Заказчик в будущем может захотеть добавить ещё несколько полей (связать их с конкретным site_id): email для контактов, персона для контактов и т. д. Т. е. мне нужно как-то хранить имена добавленным полей и данные в них. Как это правильно сделать? ======================= Роман Чемисов Тел.: +79149052257 ICQ: 157070721 Skype: gangabass Как-как... Да очень просто: сделать свою IDE (типа Акцесса). Пользователь видит описание таблицы и может добавить/удалить поля. Для этого необходимо иметь описание всех таблиц Вашей БД, связей между ними, используемых триггеров и ограничений (констрэйнтов) и т.д. В общем, всё это называется метаданными... Когда пользователь нажмет на кнопку "Сохранить изменения", то IDE создаст новую таблицу (с измененной структурой), перекопирует туда данные (если есть) из старой таблицы, перенастроит существующие связи на новую таблицу и удалит старую таблицу. Естественно, что надо проверять работает ли кто-то с таблицей (блокированы записи/таблица или нет). Если кто-то работает, то модификация структуры должна быть отклонена... Геморройно? Да! Но если того хочет заказчик.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 07:18 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Станислав С...кий Roman V TchemisovКак это правильно сделать? сделать свою IDE (типа Акцесса) например www.simple-soft.ru (CookBook example) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 08:23 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Станислав С...кий Roman V TchemisovВопрос в том, что заказчик хочет иметь возможность добавлять в будущем свои поля (а также сортировать результаты по этим полям). Например, есть таблица sites. В ней: name, url, lang, country. Заказчик в будущем может захотеть добавить ещё несколько полей (связать их с конкретным site_id): email для контактов, персона для контактов и т. д. Т. е. мне нужно как-то хранить имена добавленным полей и данные в них. Как это правильно сделать? Как-как... Да очень просто: сделать свою IDE (типа Акцесса). Пользователь видит описание таблицы и может добавить/удалить поля. .... Геморройно? Да! Но если того хочет заказчик....Модифицировать таблицы - это не единственный и не самый лучший способ (IMHO). Для добавления и хранения значений динамических полей можно использовать EAV структуру. При этом надо не забывать, что при больших объемах хранимых данныхь и большом количестве динамических полей - может сильно страдать производительность. Если уж модифицировать таблицы, то я бы создал специально отдельные доп таблицы, в которых можно добавлять/удалять столбцы. Чтобы нерадивый администратор не угробил основную схему приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 10:42 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
А мне кажется здесь вопрос в том, что заказчик может захотеть. А может захотеть чего-то другого. Возможно, Вамне стоит предусматривать такую возможность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:14 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
На самом деле мне нужно только добавление полей (удаление слава богу не требуется). Это значит, что вариант с созданием временной таблицы (копии старой), добавлением туда поля, удалением старой таблицы и переименованием временной таблицы в старую подойдёт? ======================= Роман Чемисов Тел.: +79149052257 ICQ: 157070721 Skype: gangabass ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:21 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:25 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Ещё поступило предложение для каждого нового свойства таблицы создавать отдельную таблицу. Плюс создать ещё одну таблицу, в которой хранить параметры каждого свойства (имя свойства => имя таблицы). Как вам такой вариант? ======================= Роман Чемисов Тел.: +79149052257 ICQ: 157070721 Skype: gangabass ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:30 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
egorych Код: plaintext Мне нужно ещё где-то сохранить, что это поле на человеческом языке называется так-то... А так вообще идеальный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:36 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Roman V TchemisovНа самом деле мне нужно только добавление полей (удаление слава богу не требуется).После создания пары "левых" или "тестовых" полей - потребуется. Roman V TchemisovЕщё поступило предложение для каждого нового свойства таблицы создавать отдельную таблицу. Плюс создать ещё одну таблицу, в которой хранить параметры каждого свойства (имя свойства => имя таблицы). Как вам такой вариант?На каждое поле по таблице? Смешно Создайте ОДНУ таблицу под ВСЕ дополнительные поля. Еще видел следующий подход - в основной таблице было добавлено по 10 полей VARCHAR(1000), 10 полей FLOAT, 10 полей INTEGER, а в вспомогательной таблице хранилось описание - какое поле какое имеет название и какой контрол к нему пристыковать. Понятно, что этот вариант имеет ограничение по кол-ву доп. полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:37 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Roman V Tchemisov egorych Код: plaintext Мне нужно ещё где-то сохранить, что это поле на человеческом языке называется так-то... А так вообще идеальный вариант.Сохрание то что вам нужно в отдельной настроечной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:37 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Roman V TchemisovМне нужно ещё где-то сохранить, что это поле на человеческом языке называется так-то... А так вообще идеальный вариант.Вариант 1. Простой (но мне не нравится по религиозным соображениям) - сразу называть столбцы на человеческом языке Вариант 2. Посложней (но правильный, имхо, ессно) - дополнительная таблица с описаниями всех столбцов. что-то вида: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:45 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Я правильно понимаю, что в моём случае (необходимость редактирования только одной таблицы) будет достаточно только Код: plaintext ======================= Роман Чемисов Тел.: +79149052257 ICQ: 157070721 Skype: gangabass ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 11:51 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Roman V TchemisovЯ правильно понимаю, что в моём случае (необходимость редактирования только одной таблицы) будет достаточно только Код: plaintext ======================= Роман Чемисов Тел.: +79149052257 ICQ: 157070721 Skype: gangabass Для одной таблицы - да... Но если заказчик захочет модифицировать несколько таблиц БД, то придется сделать полноценную поддержку метаданных (практически: БД о структуре Вашей БД)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 12:09 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
И это если на новых полях не будет завязано никакой сложной логики, кроме добавления, удаления, редактирования, просмотра. Если же новое поле должно будет участвовать в каких-либо вычислениях (а это наиболее вероятно), то плакали все ваши "предусмотрения". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 17:44 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Вашему заказчику нужны поля только для того, чтобы создавать их, заполнять содержимым, а потом этим содержимым любоваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 17:45 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
goodronИ это если на новых полях не будет завязано никакой сложной логики...Угу. Даже такая простая вещ как "Выбор значения из справочника" становится не очень простой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 17:45 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
может надо с другой стороны подходить? либо отдавать исходники заказчику и типа "моя хата с краю" сопровождайте сами как хотите, либо садить их на авторское сопровождение и доработки отдельным прайсом ? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 17:53 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
BelyДаже такая простая вещ как "Выбор значения из справочника" становится не очень простой. Есть замечательный подход решать проблемы по факту из возникновения. Это ^^^ легко прикручивается, если не обгадиться с концепцией в начале. По теме - поля добавляют руками через alter table (небось не кухарки), данные тащат через вьюхи, которые сами же и правят (ситуация, когда с новой версией софта приходит новая версия старой поправленной юзером вьюхи, неприятная, но не более того, еще можно тащить данные их хранимой процы, если руки и сервер позволяют, еще можно вообще пользовательский обработчик на формирование селекта навесить, пусть извращаются как хотят, у нас практически везде так можно). Сортироваться стоит уметь по любым вытаскиваемым полям независимо от того, чьи это поля, Ваши или юзеров. Сделать соответствующий интерфейс при желании несложно. Человеческие имена полей можно хранить в одной отдельной таблице для всех таблиц, куда пописал заказчик, с этим проблем вообще никаких, там же хранить, изменяется ли поле, и прочие опции. Вопросы, связанные с используемыми пользовательскими полями и всякими справочниками, сильно связаны с используемым фреймворком, потому без конкретики рассуждать бессмысленно. Отвечу только, что мы это умеем, ничего сложного в этом нет. А вот сразу называть поля на "человеческом" языке противопоказано, слишком много телодвижений может потребоваться при изменении данного "человеческого наименования". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 18:23 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Roman V TchemisovПромахнулся с кнопкой :-( Вопрос в том, что заказчик хочет иметь возможность добавлять в будущем свои поля (а также сортировать результаты по этим полям). может xml попробовать, н будет же заказчик в SQLNavigator сортировать по полям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2008, 20:16 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
goodronВашему заказчику нужны поля только для того, чтобы создавать их, заполнять содержимым, а потом этим содержимым любоваться? Они нужны для сортировки результатов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2008, 08:21 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Наиценнейшее свойство. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2008, 08:32 |
|
||
|
Предусмотреть возможность добавления полей
|
|||
|---|---|---|---|
|
#18+
Roman V Tchemisov Они нужны для сортировки результатов. Excel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2008, 09:30 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35092704&tid=1544061]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
78ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 433ms |

| 0 / 0 |
