>>не говоря о том, что так называемая проверка на целостность обычно сопровождается индексами. или Вы какие-то другие приложения имели ввиду?Ну, про индексы пока речи не шло. Вопрос пока только, что у нас есть одна таблица вида ключ/значение (где значение имеет составной тип). Тут речь идет не о referential integrity, а просто целостности данных, что вот этот составной тип он повсюду имеет заранее фиксированную структуру. Мой вопрос - нужно ли это, если чтение и запись осуществляется одним и тем же приложением (пусть и запущенным в несколько потоков)? По-моему, не нужно ...
А с индексами ещё интересней. ИМХО, столь любимая поклонниками SQL реляционная алгебра ничего про индексы не говорит. В ней понятия упорядоченного множества нет вообще. О какой тогда индексации можно говорить? А именно индексация с точки зрения практики и представляет наибольший интерес (как раз интереснее ускорить доступ к данным, по разному их упорядочив). А реляционной алгебре на эту бытовуху плевать. Т.е. как хотите, так и крутитесь.
И эта терминология "ключ-значение" вводит в заблуждение. Это не имеет отношение к типу структур, которые можно запихать в эти базы данных, а просто напоминает, что у нас не симметричное relation, а именно направленное "ключ->значение".
Вот пример. Стандартное отношение many-to-many - товар-магазин. Если его реализовывать в BDB , то в первую очередь нужно выяснить, какой именно запрос нам нужен - в каком магазине продается товар, или ассортимент товаров в магазине? Начнем с первого. Тогда у нас есть три таблицы (в формате ключ->значение).
1)Вторичный индекс "название товара -> индекс товара"
2)Первичный индекс "где купить?" "индекс товара -> индекс магазина"
3)Дополнительная таблица с расшифровкой индекса магазина "индекс магазина -> название магазина".
Т.е. понятие индекса тут ключевое и поиск осуществляется, как поиск по вторичному индексу ("название товара") индекса магазина и его последующая расшифровка. Понятно, чтобы изобразить relation нужны второй комплект таблиц с обратной направленностью (т.е. ровно удвоенное количество данных). Только по условиям задачи - нужно ли нам полное отношение?