|
|
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
Товарищи, всем доброго дня! Допустим есть таблица в бд, в которой нужно хранить последовательность колонок другой таблицы этой же базы. Важно чтобы была последовательность чтобы иметь представление какая колонка за какой идет, при удалении колонки, связь соединяла две соседние. Что-то типа queue ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 12:31 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometr, А можете рассказать, зачем вам нужен такой механизм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 13:34 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometrТоварищи, всем доброго дня! Допустим есть таблица в бд, в которой нужно хранить последовательность колонок другой таблицы этой же базы. Важно чтобы была последовательность чтобы иметь представление какая колонка за какой идет, при удалении колонки, связь соединяла две соседние. Что-то типа queue По теории у колонок нет "порядка хранения" (хотя в действительности это не совсем так). А порядок вывода колонок в таблице определяется запросом (Если не брать ALL или *, но это как бы плохая практика). А так, практически у всех БД есть таблицы с метаинформацией. В которых можно узнать всю информацию о колонках в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 13:45 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometrТоварищи, всем доброго дня! Допустим есть таблица в бд, в которой нужно хранить последовательность колонок другой таблицы этой же базы. Важно чтобы была последовательность чтобы иметь представление какая колонка за какой идет, при удалении колонки, связь соединяла две соседние. Что-то типа queue Если я верно понял то, что вы хотите сделать, то можно сделать такое извращение. Создаем таблицу в которой будут такие атрибуты, ID/Table_Name/Column_Name/Order_Column ID - уникальный идентификатор; Table_Name - наименование таблицы, для которой хранятся колонки; Column_Name - наименование атрибутов это таблицы; Order_Column - поле типа "int". В него пишем просто цифры от 1 и так далее. Это будет порядок колонок, такой, какой нужен вам. Если удаляем строку, то просто берем следующую колонку по счету, удалили номер 6, теперь после 5 идет 7, т.е они соседи. Если добавляем, то max(Order_Column) + 1. Но опять таки, смотря для чего вам нужен механизм. Если узнаем предназначение, то можно попробовать сделать что-то более стоящее, чем то, что предложено выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 14:23 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometrТоварищи, всем доброго дня! Допустим есть таблица в бд, в которой нужно хранить последовательность колонок другой таблицы этой же базы. Важно чтобы была последовательность чтобы иметь представление какая колонка за какой идет, при удалении колонки, связь соединяла две соседние. Что-то типа queue на поля в таблицах в РСУБД нельзя ссылаться динамическими именами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 21:39 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
думаю, что это довольно частая задача. И придумать примеров можно много. Но мне это нужно для сравнения информации текстового файла с данными в базе данных. Данные в текстовый файл записываются последовательно, не структурировано - не xml, а что-то типа csv. При таком раскладе я могу полагаться только на последовательность, которую собираюсь определить в бд. Например, 1 элемент последовательности текстового файла поле customer_id в таблице customers, следующее customer_name, следующее customer_contact и т.п. таких полей может быть от 4 до 75, количество полей в файле может меняться, добавляться новые, удалятся старые (причем как в конце последовательности, так и в середине) Если из 75 полей, 10 полей (часть в начале, часть в середине) были удалены или добавлены, я должен пробегаться по всем элементам, и перебивать порядковые номера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 23:01 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometrдумаю, что это довольно частая задача. Ты ошибаешься. PS: У CSV файлов первая строка это, как правило, имена полей, по которым значения в файле и связываются со значениями в БД. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2016, 23:16 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovgolovonometrдумаю, что это довольно частая задача. Ты ошибаешься. PS: У CSV файлов первая строка это, как правило, имена полей, по которым значения в файле и связываются со значениями в БД. Что касается csv то это не правило, это опция - csv с заголовком или без. У меня данные в файле хранятся подобно csv формату. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 07:15 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometr, Если Вам надо просто хранить порядок полей - wizli Вам описал неплохой механизм ("на вырост" туда можно добавить идентификатор типа входного файла, на случай когда данные одной и той же таблицы в одном типе файлов будут лежать так, а в другом - этак) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 11:44 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинgolovonometr, Если Вам надо просто хранить порядок полей - wizli Вам описал неплохой механизм ("на вырост" туда можно добавить идентификатор типа входного файла, на случай когда данные одной и той же таблицы в одном типе файлов будут лежать так, а в другом - этак) Наверно это будет велосипед с одним квадратным колесом, я согласен на велосипед, но при условии что все колеса круглые. В предложенном "механизме", при удалении 6 элемента, да можно 5 и 7 считать соседями - все ок. Но при добавлении после 6 элемента нового, все последующие элементы придется перенумеровывать, новые элементы не обязательно должны добавляться в конец, могут и в середину, хуже в начало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 15:47 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometr, товарищ! вы можете внятно рассказать, для чего вам фсё это надо? саму первоначальную задачу (а не своё решение) изложить можете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 15:49 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometr, Если Вы считаете вставку в середину значимым кейсом - можете хранить вместо sortorder NextID - ссылку на следующее поле. Но при этом запрос "все поля в нужном порядке" конечно просядет, бесплатно ничего не бывает. вообще у Вас записей в таблице будет от силы тысячи - что там оптимизировать-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 16:09 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometr, В предложенном "механизме", при удалении 6 элемента, да можно 5 и 7 считать соседями - все ок. Но при добавлении после 6 элемента нового, все последующие элементы придется перенумеровывать, новые элементы не обязательно должны добавляться в конец, могут и в середину, хуже в начало. - можно сделать свой счетчик элементов с шагом 10, 100, 1000 и пиши в -между- без переименований, например в набор элементов 100, 200, 300,... можно вставлять 101-199, 201-299 и т.д. - можно прикрутить дроби, имхо между целыми 6 и 7 количество дробей с целой частью 6 почти бесконечно :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 16:55 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинgolovonometr, Если Вы считаете вставку в середину значимым кейсом - можете хранить вместо sortorder NextID - ссылку на следующее поле. Но при этом запрос "все поля в нужном порядке" конечно просядет, бесплатно ничего не бывает. вообще у Вас записей в таблице будет от силы тысячи - что там оптимизировать-то? Вот это мне нравится, и если честно - первое что мне пришло на ум на этапе разбора задачи, но я не смог реализовать. Как должен выглядеть запрос, который вернет мне поля в нужном порядке? А так это идеальный вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 21:37 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometr, это СУБД-specific. В Oracle это будет connect by, в SQL Server - рекурсивный CTE, и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 21:54 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometrВ предложенном "механизме", при удалении 6 элемента, да можно 5 и 7 считать соседями - все ок. Ага. Осталось только напрячь телепатер чтобы угадать: после пятого элемента идёт седьмой или уже удалённый шестой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2016, 22:12 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинgolovonometr, это СУБД-specific. В Oracle это будет connect by, в SQL Server - рекурсивный CTE, и т.п. Спасибо дружище! Вот это бомба, считай что обеспечил меня чтивом на выходные! Вопрос можно считать закрытым - всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2016, 08:09 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometrвсем спасибои тебе спасибо, добрый человек, позабавил народ своими замутами (так и не открыв тайну подводного велосипеда с треугольными колёсами) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2016, 08:26 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometrВот это мне нравится, и если честно - первое что мне пришло на ум на этапе разбора задачи, но я не смог реализовать. Как должен выглядеть запрос, который вернет мне поля в нужном порядке? А так это идеальный вариант Еще раз, вы пытаетесь найти порядок, там где он не предусмотрен "by design". Универсального решения для вашей задачи не будет. Решается данная "задача" в каждом случае индивидуально. Не спорю, что для некоторого множества случаев можно будет сделать общее решение, но не для всех. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2016, 08:57 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometr, А как вы выставить последовательность из цифр, кроме как в ручную? Как я понял, вам нужно сортировать по только вам известному методу, как вы передадите эту информацию СУБД? Вот пример: У вас было, 1- Client_ID, 2 - Client_Name Вы добавляете в начало еще одно поле, например Client_RK. Как вы пронумеруете ваши записи в автоматическом режиме? Чтобы в итоге было, 1 - Client_RK, 2 - Client_ID, 3 - Client_Name. Лично мне не знаком этот способ сортировки в СУБД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 10:42 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
wizligolovonometr, А как вы выставить последовательность из цифр, кроме как в ручную? Как я понял, вам нужно сортировать по только вам известному методу, как вы передадите эту информацию СУБД? Вот пример: У вас было, 1- Client_ID, 2 - Client_Name Вы добавляете в начало еще одно поле, например Client_RK. Как вы пронумеруете ваши записи в автоматическом режиме? Чтобы в итоге было, 1 - Client_RK, 2 - Client_ID, 3 - Client_Name. Лично мне не знаком этот способ сортировки в СУБД заметьте, что я ничего не говорил про "пронумеруете". Нумерацию предлагали вы. Я говорил про хранение последовательности в базе. И сейчас мне кажется очевидным способом это идентификация последнего и предыдущего элемента для каждого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 12:22 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometr_, Хорошо, я понял. Вы хотите поле, типо Next_ID, способ, что предлагали выше. В это поле вы записываете, что должно идти дальше. Но вопрос не изменился, как вы сможете автоматически заполнять это поле, если у вас уже есть последовательность и вам нужно добавить новый элемент в середину. Хотя, тут уточню, вам нужен автоматический механизм добавления элементов в последовательность или вы будуте делать это вручную? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2016, 12:37 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
wizliХорошо, я понял. Вы хотите поле, типо Next_ID, способ, что предлагали выше. В это поле вы записываете, что должно идти дальше. Но вопрос не изменился, как вы сможете автоматически заполнять это поле, если у вас уже есть последовательность и вам нужно добавить новый элемент в середину. при добавлении нового элемента в середину нужно в его Next_ID прописать Next_ID элемента "ДО", а в Next_ID элемента "ДО" прописать ID нового вставляемого элемента... но это будет ужас... типа своя СУБД в другой БД ибо для полноценной работы тут явно будет не хватать минимум ещё одного поля Previous_ID (у первого элемента =0, у последнего (возможно) ссылка на первый или null) ибо алгоритмы поиска в будущем могут быть не предсказуемыми, и если есть возможность крутить руль вправо, то почему не должно быть возможности крутить его влево, чтобы не ездить по кругу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2016, 09:21 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
golovonometrдумаю, что это довольно частая задача. И придумать примеров можно много. Но мне это нужно для сравнения информации текстового файла с данными в базе данных. Данные в текстовый файл записываются последовательно, не структурировано - не xml, а что-то типа csv. При таком раскладе я могу полагаться только на последовательность, которую собираюсь определить в бд. Например, 1 элемент последовательности текстового файла поле customer_id в таблице customers, следующее customer_name, следующее customer_contact и т.п. таких полей может быть от 4 до 75, количество полей в файле может меняться, добавляться новые, удалятся старые (причем как в конце последовательности, так и в середине) Если из 75 полей, 10 полей (часть в начале, часть в середине) были удалены или добавлены, я должен пробегаться по всем элементам, и перебивать порядковые номера? В СУБД Interbase/Firebyrd есть поддержка массивов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2016, 09:09 |
|
||
|
Как лучше хранить последовательность в БД
|
|||
|---|---|---|---|
|
#18+
Траховgolovonometrдумаю, что это довольно частая задача. И придумать примеров можно много. Но мне это нужно для сравнения информации текстового файла с данными в базе данных. Данные в текстовый файл записываются последовательно, не структурировано - не xml, а что-то типа csv. При таком раскладе я могу полагаться только на последовательность, которую собираюсь определить в бд. Например, 1 элемент последовательности текстового файла поле customer_id в таблице customers, следующее customer_name, следующее customer_contact и т.п. таких полей может быть от 4 до 75, количество полей в файле может меняться, добавляться новые, удалятся старые (причем как в конце последовательности, так и в середине) Если из 75 полей, 10 полей (часть в начале, часть в середине) были удалены или добавлены, я должен пробегаться по всем элементам, и перебивать порядковые номера? В СУБД Interbase/Firebyrd есть поддержка массивов Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2016, 09:15 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=17&tid=1540403]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 383ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...