![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
InterBase (организация справочников) [D5, IB5.x]
User_OKA © (2002-05-15 12:54:00)В моей базе куча справочников. Каждый оформлен как отдельная таблица. Хочу завести на все справочники одну таблицу, в которую, помимо поля для значений и первичного ключа, включить поле типа integer, в котором будет хранится код справочника. Тревожит одно: как все это будет работать и будет ли работать вообще? Ценный опыт старших и не очень старших товарищей сильно бы пригодился!
User_OKA (2002-05-17 07:08:00) [1]Спасибо всем за советы!
Убедился в том, что для моей задачи лучше иметь одну таблицу на все справочники.
Desdechado (2002-05-15 19:21:00) [2]все зависит от задачи. были у меня и комбинашки такого вида.
осн. таблица справочника (id, name, прочие общие поля)
доп. таблица справ.1 - (внешний id, доп. поля )
доп. таблица справ.2 - (внешний id, доп. поля )
но, имхо, лучше 1 справочник - 1 таблица. По крайней мере не запутаешься (особенно со ссылочной целостностью). А то окажется, что в таблице можно использовать ключ из 4 справочника и категорически нельзя из 5, а проверить это невесело :))
kserg@ukr.net (2002-05-15 19:13:00) [3]Я тоже решал подобную задачу в БД Кадры: имел кучу справочников,
причем многие из них были схожи по струтуре.
Тогда свел схожие по структуре в таблицы (получилось всего 4) и ввел доп.поле ТИП_СПРАВОЧНИКА.
Позже хотел развить далее и завести таблицу СПРАВОЧНИК_СПРАВОЧНИКОВ, но что-то заломало.
Ura (2002-05-15 16:49:00) [4]Совет.
1. Справочник
- ID
- ID справочника (таблица справочников)
- код поля (0,1,2, ...) (т.е. номер столбца в данном справочнике)
- кол полей (храниться в нулевом коде поля) (чтобы знать сколько всего полей. Можно конечно организовать и здесь связанный список, тогда это будет ссылка на следующее поле. А можно это вынести в справочник таблиц - указать там кол столбцов и их тип - но это уже бругая история)
- код тип данных поля (таблица типов данных)
- данные blob
Работать конечно будет не удобно. Но если двигаться к объектным базам то все запросы и вся работа будет делаться через процедуры...
Turalyon (2002-05-15 15:49:00) [5]>User_OKA ©
Вот еще один пример - сам разрабатывал некоторое время назад, прогу по учету железа (в смысле компов), сталкнулся с тем, что необходимо было задавать конфигурацию для компа и не одной строкой, а желатьельно по пунктам, типа винт (размер такой, Serial Number такой,...) И так по всему возможному железу... а проблемма была в том, что так просто новый справочник не добавишь, если, к примеру, появится новое устройтва типа "крыса", Задача добавления этой "крысы" не тривиальна.
Я решыл е таким же способом как и хочешь, ты, (но не от простоты, а от того, что мне показалось что по другому никак), создал два справочника - один с 2 полями Тип Оборудования (ключ, текст), подразумевается мышь, монитор, материнка, и второй само оборудование - (ключ, внешний ключ на "Тип оборудования", и просто текст, серийны номер), в этот текст пришлось забивать все подряд... типа "Sony Multiscan 200sf" и "S3 Virge 4Мб"
Через з..цу? Согласен :) Возможно решить по другому, но я тогда ничего лучше не придумал....
VAleksey (2002-05-15 14:53:00) [6]Реляционная теория разработки баз данных по моему однозначно утверждает, что для разных справочников нужны разные таблицы.
ЗЫ
А сам я повторяю и буду повторять, что зачастую нужно нарушать теорию, выигрывая в производительности. Но каждый конкретный случай нужно разбирать отдельно.
ЗЗЫ
При развитии БД, в том случае если ты не учел все возможные варианты, хранение всех справочников в одной таблице вызовет множество трудностей.
Val (2002-05-15 14:52:00) [7]согласен с Turalyon © (15.05.02 14:38), например:
справочник валют: ид,наименование, символ валюты, курс
справочник материалов: наименование, тип, ед. изм.
Turalyon (2002-05-15 14:38:00) [8]>User_OKA ©
По поводу места... Тут надо тебе определится на сколько похожая (однородная) информация хранится в справочниках... Может быть в одном хранятся только текст, а в другом текст и цифры (или что угодно другое), тогда в одной таблице у тебя будет куча пустых полей... (не задействованных). Вот...
ИМХО лучше все разбить на несколько таблиц - яснее будет.
User_OKA (2002-05-15 14:31:00) [9]to Alexandr
Да руки вроде не кривые.
to Val
Насчет неиспользованного места не понял. И еще насчет смысла полей? Можно поподробнее?
to ВСЕМ
А кто-нибудь может привести кокретный (или не очень) пример БД с такой организацией данных? Можно даже какие-нибудь частные случаи.
Val (2002-05-15 13:25:00) [10]Зависит от смысла полей очень, от организации. Не будет ли много неиспользованного места?
Alexandr (2002-05-15 13:04:00) [11]однако, будет лучше работать.
Если руки не кривые.