Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];

Вниз

InterBase (организация справочников)   Найти похожие ветки 

 
User_OKA   (2002-05-15 12:54) [0]

В моей базе куча справочников. Каждый оформлен как отдельная таблица. Хочу завести на все справочники одну таблицу, в которую, помимо поля для значений и первичного ключа, включить поле типа integer, в котором будет хранится код справочника. Тревожит одно: как все это будет работать и будет ли работать вообще? Ценный опыт старших и не очень старших товарищей сильно бы пригодился!


 
Alexandr   (2002-05-15 13:04) [1]

однако, будет лучше работать.
Если руки не кривые.


 
Val   (2002-05-15 13:25) [2]

Зависит от смысла полей очень, от организации. Не будет ли много неиспользованного места?


 
User_OKA   (2002-05-15 14:31) [3]

to Alexandr
Да руки вроде не кривые.

to Val
Насчет неиспользованного места не понял. И еще насчет смысла полей? Можно поподробнее?

to ВСЕМ
А кто-нибудь может привести кокретный (или не очень) пример БД с такой организацией данных? Можно даже какие-нибудь частные случаи.


 
Turalyon   (2002-05-15 14:38) [4]

>User_OKA ©
По поводу места... Тут надо тебе определится на сколько похожая (однородная) информация хранится в справочниках... Может быть в одном хранятся только текст, а в другом текст и цифры (или что угодно другое), тогда в одной таблице у тебя будет куча пустых полей... (не задействованных). Вот...
ИМХО лучше все разбить на несколько таблиц - яснее будет.


 
Val   (2002-05-15 14:52) [5]

согласен с Turalyon © (15.05.02 14:38), например:
справочник валют: ид,наименование, символ валюты, курс
справочник материалов: наименование, тип, ед. изм.


 
VAleksey   (2002-05-15 14:53) [6]

Реляционная теория разработки баз данных по моему однозначно утверждает, что для разных справочников нужны разные таблицы.

ЗЫ
А сам я повторяю и буду повторять, что зачастую нужно нарушать теорию, выигрывая в производительности. Но каждый конкретный случай нужно разбирать отдельно.
ЗЗЫ
При развитии БД, в том случае если ты не учел все возможные варианты, хранение всех справочников в одной таблице вызовет множество трудностей.


 
Turalyon   (2002-05-15 15:49) [7]

>User_OKA ©
Вот еще один пример - сам разрабатывал некоторое время назад, прогу по учету железа (в смысле компов), сталкнулся с тем, что необходимо было задавать конфигурацию для компа и не одной строкой, а желатьельно по пунктам, типа винт (размер такой, Serial Number такой,...) И так по всему возможному железу... а проблемма была в том, что так просто новый справочник не добавишь, если, к примеру, появится новое устройтва типа "крыса", Задача добавления этой "крысы" не тривиальна.
Я решыл е таким же способом как и хочешь, ты, (но не от простоты, а от того, что мне показалось что по другому никак), создал два справочника - один с 2 полями Тип Оборудования (ключ, текст), подразумевается мышь, монитор, материнка, и второй само оборудование - (ключ, внешний ключ на "Тип оборудования", и просто текст, серийны номер), в этот текст пришлось забивать все подряд... типа "Sony Multiscan 200sf" и "S3 Virge 4Мб"
Через з..цу? Согласен :) Возможно решить по другому, но я тогда ничего лучше не придумал....


 
Ura   (2002-05-15 16:49) [8]

Совет.
1. Справочник
- ID
- ID справочника (таблица справочников)
- код поля (0,1,2, ...) (т.е. номер столбца в данном справочнике)
- кол полей (храниться в нулевом коде поля) (чтобы знать сколько всего полей. Можно конечно организовать и здесь связанный список, тогда это будет ссылка на следующее поле. А можно это вынести в справочник таблиц - указать там кол столбцов и их тип - но это уже бругая история)
- код тип данных поля (таблица типов данных)
- данные blob

Работать конечно будет не удобно. Но если двигаться к объектным базам то все запросы и вся работа будет делаться через процедуры...


 
kserg@ukr.net   (2002-05-15 19:13) [9]

Я тоже решал подобную задачу в БД Кадры: имел кучу справочников,
причем многие из них были схожи по струтуре.
Тогда свел схожие по структуре в таблицы (получилось всего 4) и ввел доп.поле ТИП_СПРАВОЧНИКА.
Позже хотел развить далее и завести таблицу СПРАВОЧНИК_СПРАВОЧНИКОВ, но что-то заломало.


 
Desdechado   (2002-05-15 19:21) [10]

все зависит от задачи. были у меня и комбинашки такого вида.
осн. таблица справочника (id, name, прочие общие поля)
доп. таблица справ.1 - (внешний id, доп. поля )
доп. таблица справ.2 - (внешний id, доп. поля )

но, имхо, лучше 1 справочник - 1 таблица. По крайней мере не запутаешься (особенно со ссылочной целостностью). А то окажется, что в таблице можно использовать ключ из 4 справочника и категорически нельзя из 5, а проверить это невесело :))


 
User_OKA   (2002-05-17 07:08) [11]

Спасибо всем за советы!
Убедился в том, что для моей задачи лучше иметь одну таблицу на все справочники.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
14-18121
mimino
2002-04-29 14:13
2002.06.06
как добавить есче одну клавишу key=vk_left


8-18071
Cyber
2002-01-21 16:16
2002.06.06
3D моделирование


1-17915
AL2002
2002-05-27 16:49
2002.06.06
Реестр. Добавление строковых параметров


1-17959
eSKey
2002-05-27 18:11
2002.06.06
Посылка сообщения в Thread


3-17765
Дремучий
2002-05-14 19:58
2002.06.06
и я за компанию об удаленных записях....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский