|
|
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
Добрый день! Столкнулся с такой проблемой, как хранить в БД такой объект как константа (в данном контексте это пользовательская константа, короче то понятие, которое есть в 1С). С простыми типами этих констант вроде нет проблем, их можно в одной таблице легко поселить, а как быть если эта константа является ссылкой на другой объект, скажем справочник? Думаю делать для каждой ссылочной константы свою таблицу не выход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 16:33 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
так вы посмотрите как они реализованы в той же 1С: таблица с кучей полей и одной записью ну для пущего шика реализации синглтона можно сделать триггер на запрет добавление записей больше 1-й ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 16:37 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
Так в 1с там ссылка на нужные тип есть. Я не могу понять, как в класс, который будет с константами работать определить класс, который нужен если вдруг константу решили поменять. Как вариант думал хранить еще строку с типом и потом уже по этому типа создавать экземпляр нужного класса: switch (type) { case "sprContargent": CConta myContr; case "sprNomenkl": CNomenkl myNomenk; } и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 16:46 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
так ты про проектирование БД или про что? если хочешь контролировать, то можно сделать внешний ключ на поле или про что ты? если надо поменять тип константы, так это как бы равносильно изменению типа поля таблицы вы часто их собрались менять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 16:58 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
Изначально конечно про БД, но в итоге это скажется на само приложение. Если в константе будет хранится значение простого типа, то имеем: id | name | value 0000001 | Название фримы | Рога и копыта если у нас ссылочный тим 0000002 | Гл. бухгатер | 0000002 - это id из таблицы где сотрудники хранятся, получается что это уже внешний ключ при том следующая константа, будет ссылаться на другу табилцу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 17:08 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
Сейчас пришла мысль, что у таблиц справочников можно сделать поле вида "основное значение" - у кого оно Истина и будут той константой, останется повесить тот триггер, который не будет разрешать устанавливать Истину для более чем одной записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 17:10 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
почему сабж нельзя сделать с помощью какого-то аналога EAV ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 17:11 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
LSVпочему сабж нельзя сделать с помощью какого-то аналога EAV ? В плане хранения - это не проблема, меня смущает дальнейшая работа в приложении. Изначально стали работать с метаданными (МД), но потом погрязли в этом и решили, что проще сделать по стандартной схеме, но здесь эти константы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 17:15 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
я вам говорю - сделайте таблицу с количеством полей, равным количеству констант Таблица констант Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 17:20 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
Nafя вам говорю - сделайте таблицу с количеством полей, равным количеству констант Таблица констант Код: plaintext 1. 2. 3. а ведь действительно выход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 17:27 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
MSVS... как быть если эта константа является ссылкой на другой объект, скажем справочник? можно сделать тупо: отказаться от внешних ключей в таблице констант в одном поле хранить значение id объекта в другом - ссылку на таблицу-источник объекта (название таблицы в БД) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 18:59 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
Nafну для пущего шика реализации синглтона можно сделать триггер на запрет добавление записей больше 1-й Можно и без триггера (пример для Oracle): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2011, 19:37 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
Nafя вам говорю - сделайте таблицу с количеством полей, равным количеству констант За всех не скажу, но, например, в Oracle в таблице может быть не более 1000 полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 11:05 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
Nafя вам говорю - сделайте таблицу с количеством полей, равным количеству константчто делать, если в процессе работы придется убрать/добавить/изменить константу? менять каждый раз структуру БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 11:09 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
ChopNafя вам говорю - сделайте таблицу с количеством полей, равным количеству константчто делать, если в процессе работы придется убрать/добавить/изменить константу? менять каждый раз структуру БД?+500 Постоянная смена структуры - тупик. Что мешает сделать одну таблицу с полями всех типов (строка, дата, целое, флоат, булеан) ? Добавление константы = добавление строки. Главное найти правильный ключ поиска нужной константы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2011, 18:32 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
LSVChopпропущено... что делать, если в процессе работы придется убрать/добавить/изменить константу? менять каждый раз структуру БД?+500 Постоянная смена структуры - тупик. Что мешает сделать одну таблицу с полями всех типов (строка, дата, целое, флоат, булеан) ? Добавление константы = добавление строки. Главное найти правильный ключ поиска нужной константы. Если использовать SQL Server, то задача упрощается, потому что там имеется тип данных sql_variant, позволяющий хранить в одномй колонке данные разных типов (в Oracle для этой цели есть тип ANYDATA). Например, я использую такую таблицу для констант: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Колонка Parameter_Type, вообще говоря, не нужна, так как тип хранимого значения хранится в самом sql_variant, но используется для упрощения запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2011, 17:32 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
потому что там имеется тип данных sql_variantЕсли константы нужны только самому приложению, то можно, но если они нужны в т.ч. для SQL то это недопустимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2011, 18:21 |
|
||
|
Хранение констант
|
|||
|---|---|---|---|
|
#18+
LSVпотому что там имеется тип данных sql_variantЕсли константы нужны только самому приложению, то можно, но если они нужны в т.ч. для SQL то это недопустимо. Почему ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2011, 18:47 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37125377&tid=1542307]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
401ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 725ms |

| 0 / 0 |
