Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Справочники неопределенного типа (число прочтений - 4542 )
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Справочники неопределенного типа
25. Декабря 2010 :: 08:59
Печать  
Пишу для себя кое-что. Хочу сделать работу с базой данных, ориентируясь на то, как это сделано в 1С (7.7, поскольку с 8-кой не знаком).
С базами данных на ты не знаком - придется доучиваться.

Хотел воспользоваться здешним кладезем знаний в области 1С и БД.

Есть много вопросов, но хотел пока-что начать с этого: объекты неопределенного вида.
Возьмем, к примеру, справочники неопределенного вида.

1. Удобно? Часто ли используете реквизиты типа "Справочник" (т.е. справочник неопр. вида)?

2. Полезно? Нет ли каких противопоказаний (пусть и субъективных) к их использованию? Например, эстетических. Или это порочная практика, могущая запутать работу? Или еще что?

3. Наилучшая реализация? В 7.7 ДБФ ID (далее ИД) хранится как строка. Если справочник неопределенного вида, в ИД включается код вида справочника.
Если я буду реализовывать справочники неопр. вида, не лучше ли ИД иметь числовой (быстрота и универсальность для разл. баз данных), а код вида справочника хранить в дополнительном поле, и отбор делать по этим двум ключам?

Извините за возможно неправильную терминологию и глупые вопросы.
  
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #1 - 25. Декабря 2010 :: 17:03
Печать  
blindvic писал(а) 25. Декабря 2010 :: 08:59:
Пишу для себя кое-что.

На чем пишешь ?

blindvic писал(а) 25. Декабря 2010 :: 08:59:
Наилучшая реализация? В 7.7 ДБФ ID (далее ИД) хранится как строка. Если справочник неопределенного вида, в ИД включается код вида справочника.
Если я буду реализовывать справочники неопр. вида, не лучше ли ИД иметь числовой (быстрота и универсальность для разл. баз данных), а код вида справочника хранить в дополнительном поле, и отбор делать по этим двум ключам?

Извините за возможно неправильную терминологию и глупые вопросы.

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

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #2 - 25. Декабря 2010 :: 19:48
Печать  
ev-kov писал(а) 25. Декабря 2010 :: 17:03:
На чем пишешь ?

Python + PyQt4
http://www.1cpp.ru/forum/YaBB.pl?num=1292697586
спасибо за ответ
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #3 - 26. Декабря 2010 :: 12:57
Печать  
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #4 - 26. Декабря 2010 :: 14:09
Печать  
steban писал(а) 26. Декабря 2010 :: 12:57:

Может и универсально, но, имхо:
-слишком сложно для меня
-слишком много джойнов - нечитабельно при ручном разборе таблиц

в любом случае познавательно - спасибо за ссылку
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #5 - 27. Декабря 2010 :: 02:19
Печать  
blindvic писал(а) 25. Декабря 2010 :: 08:59:
1. Удобно? Часто ли используете реквизиты типа "Справочник" (т.е. справочник неопр. вида)?

2. Полезно? Нет ли каких противопоказаний (пусть и субъективных) к их использованию? Например, эстетических. Или это порочная практика, могущая запутать работу? Или еще что?

3. Наилучшая реализация? В 7.7 ДБФ ID (далее ИД) хранится как строка. Если справочник неопределенного вида, в ИД включается код вида справочника.
Если я буду реализовывать справочники неопр. вида, не лучше ли ИД иметь числовой (быстрота и универсальность для разл. баз данных), а код вида справочника хранить в дополнительном поле, и отбор делать по этим двум ключам?

По поводу 1-2:
В реальных больших БД поля связи всегда явно ссылаются на таблицу-источник посредством внешнего ключа, т.е. при наличии нескольких связей (то, что в 1С делается неопределенным справочником) это реализуется либо несколькими полями, либо несколькими таблицами связи. Это гарантирует отсутствие проблем с контролем целостности данных.
По поводу 3:
Ключ можно использовать и числовой и строковый, в зависимости от ситуации. Иногда в ключ добавляют смысловую нагрузку, например, информацию об иерархии (для быстроты получения данных всего дерева одним запросом), тогда его длина может стать недопустимой для числа, но легко реализуемой строкой цифр.
Т.е. возвращаемся к волшебной фразе "все зависит от задачи"...
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #6 - 27. Декабря 2010 :: 06:19
Печать  
blindvic писал(а) 26. Декабря 2010 :: 14:09:
steban писал(а) 26. Декабря 2010 :: 12:57:

Может и универсально, но, имхо:
-слишком сложно для меня
-слишком много джойнов - нечитабельно при ручном разборе таблиц

в любом случае познавательно - спасибо за ссылку

Любопытно, в чем-то пересекается с моими размышлениями. Из существенных отличий моей модели (пока только в качестве идеи, до реализации еще далеко)
1) наличие у каждого из значений отдельных дат (Дата начала знания - когда мы узнали о данном свойстве объекта, Дата окончания знания - когда значение было скорркетировано - эти даты нужны для целостной и непротиворечивой работы с "исправлениями задним числом", Дата начала действия и Дата окончания действия)
2) В качестве связей я планирую использовать концепцию "Документ", т.е. все связи образуются строго посредством документов. Никаких иных "неявных" связей быть не должно.
3) В связи с п.2 надо продумать и структуру хранилища, чтобы хранить нужные поля документов, с режимами отображения, автообновления и прочими "плюшками". Кроме того необходимо продумать еще и концепцию "принять документ к учету", т.е. документ может просто вводиться и, при этом, не создавать какие-либо свойства у объектов, далее документ может быть принят к одному виду учета (и создать объекты и свойства на этом уровне), далее идет принятие по второму виду учета (и соответствующие объекты и свойства) и т.д. (например приходная накладная - принимается изначально только в управленческом учете и создает товарные остатки, и лишь после принятия по бух. учету фиксирует суммы на бухгалтерских счетах)
4) Кроме, собственно, хранилища данных, необходимо хранить также и логику, для чего планирую использовать концепцию "Регистра правил"
Так что моя модель существенно "тяжелее" в проектировании
  
Наверх
ICQ  
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #7 - 27. Декабря 2010 :: 08:00
Печать  
Dmitry The Wing писал(а) 27. Декабря 2010 :: 02:19:
В реальных больших БД поля связи всегда явно ссылаются на таблицу-источник посредством внешнего ключа, т.е. при наличии нескольких связей (то, что в 1С делается неопределенным справочником) это реализуется либо несколькими полями, либо несколькими таблицами связи. Это гарантирует отсутствие проблем с контролем целостности данных.

Я, например, использовал реквизит Справочник неопр. вида в справочнике Комментарии, для ссылки на комментируемый объект. Мне показалось удобно - легко комментировать элемент справочника любого вида, почти ничего не меняя в коде.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Справочники неопределенного типа
Ответ #8 - 27. Декабря 2010 :: 08:20
Печать  
(0) недостаток, и большой - если будут нужны доп. реквизиты  - придётся присоединять все виды справочников (или только те, которые "могут" попасть в этот реквизит неопределенного вида)...
Т.е  будет дополнительно куча левых джоинов.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #9 - 27. Декабря 2010 :: 08:28
Печать  
blindvic писал(а) 27. Декабря 2010 :: 08:00:
Я, например, использовал реквизит Справочник неопр. вида в справочнике Комментарии, для ссылки на комментируемый объект. Мне показалось удобно - легко комментировать элемент справочника любого вида, почти ничего не меняя в коде.

ИМХО: комментарии к объектам лучше всего хранить в одном из их полей...
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #10 - 27. Декабря 2010 :: 08:48
Печать  
Dmitry The Wing писал(а) 27. Декабря 2010 :: 08:28:
ИМХО: комментарии к объектам лучше всего хранить в одном из их полей...

А если в 90% комментария нет?
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #11 - 27. Декабря 2010 :: 09:53
Печать  
CaBaT писал(а) 27. Декабря 2010 :: 08:48:
Dmitry The Wing писал(а) 27. Декабря 2010 :: 08:28:
ИМХО: комментарии к объектам лучше всего хранить в одном из их полей...

А если в 90% комментария нет?

Тут два ванианта:
  • Строка неограниченной длинны
  • Подчиненный справочник
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #12 - 27. Декабря 2010 :: 10:05
Печать  
В справочнике Комментарии хранится не только текст, но и куча доп. инфы (дата создания, изменения, автор...) + форма, котролирующая поведение - проверки и т.п.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Справочники неопределенного типа
Ответ #13 - 27. Декабря 2010 :: 10:07
Печать  
Eprst писал(а) 27. Декабря 2010 :: 08:20:
(0) недостаток, и большой - если будут нужны доп. реквизиты  - придётся присоединять все виды справочников (или только те, которые "могут" попасть в этот реквизит неопределенного вида)...
Т.е  будет дополнительно куча левых джоинов.

т.е. поля неопр. вида - зло?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Справочники неопределенного типа
Ответ #14 - 27. Декабря 2010 :: 12:18
Печать  
blindvic писал(а) 27. Декабря 2010 :: 10:07:
Eprst писал(а) 27. Декабря 2010 :: 08:20:
(0) недостаток, и большой - если будут нужны доп. реквизиты  - придётся присоединять все виды справочников (или только те, которые "могут" попасть в этот реквизит неопределенного вида)...
Т.е  будет дополнительно куча левых джоинов.

т.е. поля неопр. вида - зло?


Если нужно потом доставать реквизиты с этого справочника, то да..
Особенно, если эта ссылка в измерении торчит (КредДок в Покупателях, к примеру).
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать