powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше хранить последовательность в БД
25 сообщений из 25, страница 1 из 1
Как лучше хранить последовательность в БД
    #39142664
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищи, всем доброго дня!

Допустим есть таблица в бд, в которой нужно хранить последовательность колонок другой таблицы этой же базы. Важно чтобы была последовательность чтобы иметь представление какая колонка за какой идет, при удалении колонки, связь соединяла две соседние. Что-то типа queue
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39142696
Фотография wizli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometr,
А можете рассказать, зачем вам нужен такой механизм?
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39142706
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometrТоварищи, всем доброго дня!

Допустим есть таблица в бд, в которой нужно хранить последовательность колонок другой таблицы этой же базы. Важно чтобы была последовательность чтобы иметь представление какая колонка за какой идет, при удалении колонки, связь соединяла две соседние. Что-то типа queue

По теории у колонок нет "порядка хранения" (хотя в действительности это не совсем так).
А порядок вывода колонок в таблице определяется запросом (Если не брать ALL или *, но это как бы плохая практика).

А так, практически у всех БД есть таблицы с метаинформацией.
В которых можно узнать всю информацию о колонках в таблице.
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39142718
Фотография wizli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.


Но опять таки, смотря для чего вам нужен механизм. Если узнаем предназначение, то можно попробовать сделать что-то более стоящее, чем то, что предложено выше.
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39142867
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometrТоварищи, всем доброго дня!

Допустим есть таблица в бд, в которой нужно хранить последовательность колонок другой таблицы этой же базы. Важно чтобы была последовательность чтобы иметь представление какая колонка за какой идет, при удалении колонки, связь соединяла две соседние. Что-то типа queue
на поля в таблицах в РСУБД нельзя ссылаться динамическими именами.
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39142898
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю, что это довольно частая задача. И придумать примеров можно много. Но мне это нужно для сравнения информации текстового файла с данными в базе данных. Данные в текстовый файл записываются последовательно, не структурировано - не xml, а что-то типа csv.

При таком раскладе я могу полагаться только на последовательность, которую собираюсь определить в бд. Например, 1 элемент последовательности текстового файла поле customer_id в таблице customers, следующее customer_name, следующее customer_contact и т.п. таких полей может быть от 4 до 75, количество полей в файле может меняться, добавляться новые, удалятся старые (причем как в конце последовательности, так и в середине)

Если из 75 полей, 10 полей (часть в начале, часть в середине) были удалены или добавлены, я должен пробегаться по всем элементам, и перебивать порядковые номера?
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39142900
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometrдумаю, что это довольно частая задача.
Ты ошибаешься.

PS: У CSV файлов первая строка это, как правило, имена полей, по которым значения в файле
и связываются со значениями в БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39142938
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovgolovonometrдумаю, что это довольно частая задача.
Ты ошибаешься.

PS: У CSV файлов первая строка это, как правило, имена полей, по которым значения в файле
и связываются со значениями в БД.


Что касается csv то это не правило, это опция - csv с заголовком или без. У меня данные в файле хранятся подобно csv формату.
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39142959
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometr,
Если Вам надо просто хранить порядок полей - wizli Вам описал неплохой механизм ("на вырост" туда можно добавить идентификатор типа входного файла, на случай когда данные одной и той же таблицы в одном типе файлов будут лежать так, а в другом - этак)
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143043
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинgolovonometr,
Если Вам надо просто хранить порядок полей - wizli Вам описал неплохой механизм ("на вырост" туда можно добавить идентификатор типа входного файла, на случай когда данные одной и той же таблицы в одном типе файлов будут лежать так, а в другом - этак)
Наверно это будет велосипед с одним квадратным колесом, я согласен на велосипед, но при условии что все колеса круглые.

В предложенном "механизме", при удалении 6 элемента, да можно 5 и 7 считать соседями - все ок. Но при добавлении после 6 элемента нового, все последующие элементы придется перенумеровывать, новые элементы не обязательно должны добавляться в конец, могут и в середину, хуже в начало.
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143045
Фотография Одноклассник Императора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometr,

товарищ!
вы можете внятно рассказать, для чего вам фсё это надо?
саму первоначальную задачу (а не своё решение) изложить можете?
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143054
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometr,

Если Вы считаете вставку в середину значимым кейсом - можете хранить вместо sortorder NextID - ссылку на следующее поле. Но при этом запрос "все поля в нужном порядке" конечно просядет, бесплатно ничего не бывает.
вообще у Вас записей в таблице будет от силы тысячи - что там оптимизировать-то?
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143062
interesno5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
golovonometr,
В предложенном "механизме", при удалении 6 элемента, да можно 5 и 7 считать соседями - все ок. Но при добавлении после 6 элемента нового, все последующие элементы придется перенумеровывать, новые элементы не обязательно должны добавляться в конец, могут и в середину, хуже в начало.


- можно сделать свой счетчик элементов с шагом 10, 100, 1000 и пиши в -между- без переименований, например в
набор элементов 100, 200, 300,... можно вставлять 101-199, 201-299 и т.д.
- можно прикрутить дроби, имхо между целыми 6 и 7 количество дробей с целой частью 6 почти бесконечно :-)
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143134
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинgolovonometr,

Если Вы считаете вставку в середину значимым кейсом - можете хранить вместо sortorder NextID - ссылку на следующее поле. Но при этом запрос "все поля в нужном порядке" конечно просядет, бесплатно ничего не бывает.
вообще у Вас записей в таблице будет от силы тысячи - что там оптимизировать-то?
Вот это мне нравится, и если честно - первое что мне пришло на ум на этапе разбора задачи, но я не смог реализовать. Как должен выглядеть запрос, который вернет мне поля в нужном порядке? А так это идеальный вариант
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143143
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometr,

это СУБД-specific. В Oracle это будет connect by, в SQL Server - рекурсивный CTE, и т.п.
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143152
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometrВ предложенном "механизме", при удалении 6 элемента, да можно 5 и 7
считать соседями - все ок.
Ага. Осталось только напрячь телепатер чтобы угадать: после пятого элемента идёт седьмой
или уже удалённый шестой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143232
golovonometr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинgolovonometr,

это СУБД-specific. В Oracle это будет connect by, в SQL Server - рекурсивный CTE, и т.п.

Спасибо дружище! Вот это бомба, считай что обеспечил меня чтивом на выходные! Вопрос можно считать закрытым - всем спасибо!
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143236
Фотография Одноклассник Императора
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometrвсем спасибои тебе спасибо, добрый человек,
позабавил народ своими замутами
(так и не открыв тайну подводного велосипеда с треугольными колёсами)
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39143238
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometrВот это мне нравится, и если честно - первое что мне пришло на ум на этапе разбора задачи, но я не смог реализовать. Как должен выглядеть запрос, который вернет мне поля в нужном порядке? А так это идеальный вариант

Еще раз, вы пытаетесь найти порядок, там где он не предусмотрен "by design".
Универсального решения для вашей задачи не будет.
Решается данная "задача" в каждом случае индивидуально.
Не спорю, что для некоторого множества случаев можно будет сделать общее решение, но не для всех.
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39144314
Фотография wizli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometr,
А как вы выставить последовательность из цифр, кроме как в ручную?
Как я понял, вам нужно сортировать по только вам известному методу, как вы передадите эту информацию СУБД?

Вот пример:

У вас было, 1- Client_ID, 2 - Client_Name

Вы добавляете в начало еще одно поле, например Client_RK. Как вы пронумеруете ваши записи в автоматическом режиме? Чтобы в итоге было, 1 - Client_RK, 2 - Client_ID, 3 - Client_Name.
Лично мне не знаком этот способ сортировки в СУБД
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39144444
golovonometr_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wizligolovonometr,
А как вы выставить последовательность из цифр, кроме как в ручную?
Как я понял, вам нужно сортировать по только вам известному методу, как вы передадите эту информацию СУБД?

Вот пример:

У вас было, 1- Client_ID, 2 - Client_Name

Вы добавляете в начало еще одно поле, например Client_RK. Как вы пронумеруете ваши записи в автоматическом режиме? Чтобы в итоге было, 1 - Client_RK, 2 - Client_ID, 3 - Client_Name.
Лично мне не знаком этот способ сортировки в СУБД
заметьте, что я ничего не говорил про "пронумеруете". Нумерацию предлагали вы. Я говорил про хранение последовательности в базе. И сейчас мне кажется очевидным способом это идентификация последнего и предыдущего элемента для каждого.
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39144463
Фотография wizli
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometr_,
Хорошо, я понял. Вы хотите поле, типо Next_ID, способ, что предлагали выше. В это поле вы записываете, что должно идти дальше. Но вопрос не изменился, как вы сможете автоматически заполнять это поле, если у вас уже есть последовательность и вам нужно добавить новый элемент в середину.

Хотя, тут уточню, вам нужен автоматический механизм добавления элементов в последовательность или вы будуте делать это вручную?
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39145131
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wizliХорошо, я понял. Вы хотите поле, типо Next_ID, способ, что предлагали выше. В это поле вы записываете, что должно идти дальше. Но вопрос не изменился, как вы сможете автоматически заполнять это поле, если у вас уже есть последовательность и вам нужно добавить новый элемент в середину.

при добавлении нового элемента в середину нужно в его Next_ID прописать Next_ID элемента "ДО", а
в Next_ID элемента "ДО" прописать ID нового вставляемого элемента...

но это будет ужас... типа своя СУБД в другой БД ибо для полноценной работы тут явно будет не хватать минимум ещё одного поля Previous_ID (у первого элемента =0, у последнего (возможно) ссылка на первый или null) ибо алгоритмы поиска в будущем могут быть не предсказуемыми, и если есть возможность крутить руль вправо, то почему не должно быть возможности крутить его влево, чтобы не ездить по кругу...
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39147897
Трахов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
golovonometrдумаю, что это довольно частая задача. И придумать примеров можно много. Но мне это нужно для сравнения информации текстового файла с данными в базе данных. Данные в текстовый файл записываются последовательно, не структурировано - не xml, а что-то типа csv.

При таком раскладе я могу полагаться только на последовательность, которую собираюсь определить в бд. Например, 1 элемент последовательности текстового файла поле customer_id в таблице customers, следующее customer_name, следующее customer_contact и т.п. таких полей может быть от 4 до 75, количество полей в файле может меняться, добавляться новые, удалятся старые (причем как в конце последовательности, так и в середине)

Если из 75 полей, 10 полей (часть в начале, часть в середине) были удалены или добавлены, я должен пробегаться по всем элементам, и перебивать порядковые номера?

В СУБД Interbase/Firebyrd есть поддержка массивов
...
Рейтинг: 0 / 0
Как лучше хранить последовательность в БД
    #39147905
Трахов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Трахов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.
CREATE PROCEDURE SelectFromArr(ID_row INTEGER, 
x INTEGER, у INTEGER, vl integer) 
Returns (ElemValue INTEGER) 
AS 
BEGIN 
SELECT arrayl[:x,:y] 
FROM table_array 
WHERE id_cable=:ID_row 
INTO :ElemValue; 
SUSPEND; 
END 
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше хранить последовательность в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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