Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
Разрабатывая базу данных в SQL Server возник интересный вопрос. Она представляет собой работу с бухгалтерией. Но т.к. в ней будут заложены одновременно бухгалтерия по нескольким организациям, то как лучше сделать? 1) Делать одинаковые копии базы для каждой организации (один SQL Server(Instance) – одна фирма) 2) Делать одинаковые копии базы для каждой организации (все на одном SQL Server (Instance), но названия баз будут зависеть от названия фирмы) 3) Первый или второй способ, но хранимые процедуры вынести отдельно(т.е. они не будут дублироваться) 4) Сгруппировать все в одну базу и в каждой таблице сделать идентификатор принадлежности к каждой организации. Но у каждого способа есть недостатки: У первого и второго способа: - Дублируются справочники - Дублируются представления - Дублируются хранимые процедуры У третьего способа: - Дублируются справочники - Дублируются представления - Усложняются хранимые процедуры У четвертого способа: - Усложняются хранимые процедуры - Усложняются представления - Увеличивается время обработки данных т.к. в одной таблице будут представлены данные по всем организациям. Основной задачей данного вопроса является уменьшение дублируемых элементов. И при желании легкого разделения базы по фирмам. Возможно есть еще какие-то варианты о которых я не догадываюсь. Но какие? Можете мне подсказать направление, в котором мне думать??? Заранее благодарю за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 14:20 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
Я бы сделал на уровне одной базы. Да действительно немного усложняется, схема, логика, но на время обработки это должно сказываться в меньшей степени, все конечно зависит от объемов,но все же.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 14:35 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
Четвертый вариант однозначно, дабы исключить дублирование чего-либо. А лишнее поле в таблицах и условие в запросах - никому еще особенно сильно не вредило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 14:39 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
Еще недостатки, если речь идет о MS SQL 2000: 2-й и 3-й способ. Имена баз данных в процедурах не могут быть переменными. Поэтому такая организация проста не возможна (если не считать сплошных динамических операторов). В моей практике использовались 1-й и 4-й способ. 1-й быстрее реализуется, но в сопровождении он сложнее. 4-й сложнее в реализации, но не намного, если об этом заботиться с самого начала. Кстати, если одно предприятие делится на самостоятельные подразделения, то эта задаче также возникает. Пример реализации раздельного и консолидированного учета на рисунке: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 16:23 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял.то в yukon обещают аналог fgac. Тогда и там будет такие вещи просто сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 16:32 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 16:42 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Буду думать. Но если в будущем производить разделение базы по организациям и использовать 4-й способ, то этот процесс будет очень ужасным. Скажите, что такое yukon и fgac... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2005, 18:59 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
Новая версия MS SQL, которая должна появиться в середине этого года (причем у избранных ее партнеров она уже есть). fine grain access control - реализация механизма контроля доступа на уровне строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 09:39 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
Тогда Вам можно будет ничего не менять, а каждая фирма будет видеть только свой кусок данных за счет этого хитрого механизма (неявное изменение условия where по результату работы функции политики безопасности). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 09:41 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
@Shtock Да, интересный момент. Но этот механизм позволит ли одному пользователю работать с несколькими фирмами. В частности это нужно сисадмину и гл. буху. Потом есть еще один камень преткновения. Т.к. предполагаемая программа бухгалтерии(на клиенте) будет очень большая, включающая банк, кассу, рас. счет, материалы, основные средства, зарплату и т.д., то есть вопросы по реализации.: 1) Реализовать все задачи в одной программе или раскидать их по разным программам в зависимости от решаемой задачи. Т.е. реализовать отдельно программы «Банк», «Касса», «Материалы», «Основные средства» и т.д. 2) Т.к. база будет по нескольким фирмам, то как лучше в программе реализовать выбор фирмы? а) Установить для каждой фирмы программу в отдельный каталог, а для какой фирмы запускается программа будет определено в файле настроек. б) Все поместить в один каталог. Фирма, для которой запускается программа будет определена при запуске методом выбора из списка. в) Все поместить в один каталог. Фирма, для которой работает программа будет определена в отдельном пункте меню или в каждой форме будет расположен combobox(listbox) со списком фирм для выбора(глобального для текущей программы). А запуск будет произведен по фирме, с которой последний раз работали. 3) В каждой форме будет реализован фильтр по дате документа. Как его лучше сделать?: а) Сделать флажок фильтровать или нет. Если флажок установлен, то должны быть введены дата начала периода и дата окончания. б) Вариант «а». Но может быть введена только одна дата. Т.е. если введены обе даты, то действует вариант «а». Если введена только дата начала, то показываются документы от указанной даты до «+бесконечной» даты. Если введена только дата окончания, то показываются документы от «-бесконечной» даты до указанной даты. в) Вариант «б». Но вместо того чтобы не вводить даты вводится дополнительно два флажка под каждую дату. Если флажок установлен, то соответствующая дата используется. г) Сделать выбор 2-х вариантов. Первый вариант это один из перечисленных вверху способов («а» или «б» или «в»). Второй вариант это фильтр по введенному году и месяцу(т.е. не по периодам дат, а по всему выбранному месяцу в выбранном году). д) Сделать выбор 2-х вариантов. Первый вариант это один из перечисленных вверху способов («а» или «б» или «в»). Второй вариант это фильтр по введенному году и если установлен флажок напротив месяца, то и по выбранному месяцу выбранного года (т.е. не по периодам дат, а по всему году или если выбран месяц, то и по выбранному месяцу в выбранном году). е) Тоже что и вариант «г». Но вводятся не дополнительные поля ввода года и месяца, а добавляется флажок «По месяцу». Если нажать на этот флажок, то дата начала периода устанавливается в первое число месяца, а дата окончания в последнее число месяца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 13:53 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
С учетом того, что Youkon еще нет (ха-ха), то не знаю, что там можно. Но в Oracle пусть заходят под разными пользователями и админ и бух и что им надо видят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 14:04 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
StasX4Потом есть еще один камень преткновения. Т.к. предполагаемая программа бухгалтерии(на клиенте) будет очень большая, включающая банк, кассу, рас. счет, материалы, основные средства, зарплату и т.д., то есть вопросы по реализации.: 1) Реализовать все задачи в одной программе или раскидать их по разным программам в зависимости от решаемой задачи. Т.е. реализовать отдельно программы «Банк», «Касса», «Материалы», «Основные средства» и т.д. Это не камень преткновения, а великолепный метод сделать систему блочной. Это дает хорошие возможности масштабирования, наращивания, и, наконец, просто значительно упрощает задачу. StasX4 2) Т.к. база будет по нескольким фирмам, то как лучше в программе реализовать выбор фирмы? а) Установить для каждой фирмы программу в отдельный каталог, а для какой фирмы запускается программа будет определено в файле настроек. б) Все поместить в один каталог. Фирма, для которой запускается программа будет определена при запуске методом выбора из списка. в) Все поместить в один каталог. Фирма, для которой работает программа будет определена в отдельном пункте меню или в каждой форме будет расположен combobox(listbox) со списком фирм для выбора(глобального для текущей программы). А запуск будет произведен по фирме, с которой последний раз работали. Правильно организовать защиту доступа к данным, и тогда любой пользователь с одного и того же ярлычка попадает на свою фирму. Только надо иметь в виду, что при работе с маленькими фирмами один бухгалтер может вести их несколько. В этому случае должна быть возможность оперативного переключения между фирмами. StasX4 3) В каждой форме будет реализован фильтр по дате документа. Как его лучше сделать?: а) б) в) г) …Откуда эта проблема? Достаточно одного варианта. Все пользователи в бухгалтерии работают в одном отчетном периоде. И документы в подавляющем большинстве случаев отображаются за весь месяц. Поэтому в реестре документов по умолчанию ставится с 1-го по последнее число месяца и дается возможность бухгалтеру уточнить период, если это когда ни будь ему понадобится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 17:23 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
@PVP Не совсем понял что вы мне посоветовали по поводу первого вопроса. Вроду бы как я и писАл разбить задачу на несколько программ. Но я не уверен. По второму вопросу. У нас организовалась третья фирма, и она маленькая и поэтому 2-ую и третью будет вести один бухгалтер. А все три фирмы проверяет и ведет гл. бух. И еще... Реализацией, напрмер, занимается сметный отдел и тоже по всем трем фирмам. Поэтому и возникает вопрос как именно лучше сделать выбор организации. По третьему вопросу. Мне как раз и нужен один из вариантов, который я привел. Но какой выбрать пока не знаю. Вот залес в 1C и смотрю как у них там реализовано. Но тоже не совсем нравиться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 17:54 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
StasX4@PVP Не совсем понял что вы мне посоветовали по поводу первого вопроса. Вроду бы как я и писАл разбить задачу на несколько программ. Но я не уверен. Я для каждой задачи делаю свою базу данных. В бухгалтерии – это Баланс, Материалы, Партнеры, Основные фонды, Зарплата. Есть другие модули и соответственно одна база данных для них, например для экономистов Планирование, для ТЭЦ – сбыт тепловой энергии, для населения Абонслужба. Есть модуль для коммунальных платежей в банке. При этом, не смотря на различие задач, базы данных во всех модулях имеют одну и то же структуру в системной части. Короче, я поддерживаю вариант, когда за одной задачей закрепляется одна база данных. StasX4По второму вопросу. У нас организовалась третья фирма, и она маленькая и поэтому 2-ую и третью будет вести один бухгалтер. А все три фирмы проверяет и ведет гл. бух. И еще... Реализацией, напрмер, занимается сметный отдел и тоже по всем трем фирмам. Поэтому и возникает вопрос как именно лучше сделать выбор организации. Точно не уверен, но здесь вроде бы выложена демонстрационная версия бухгалтерии, которая предназначена для работы с разными фирмами. Полный комплект (исполнящий модуль, базы данных, документация) весит около 50 M. Скачайте, установите, посмотрите. Если будет интерес, могу помочь по ICQ. StasX4По третьему вопросу. Мне как раз и нужен один из вариантов, который я привел. Но какой выбрать пока не знаю. Вот залес в 1C и смотрю как у них там реализовано. Но тоже не совсем нравиться...Надо использовать самый простой фильтр по времени «с – по». Я знаю пару сотен пользователей, которые пользуются таким фильтром и никогда не предлагали ничего другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 18:33 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
В догонку. Если в меня работает бухгалтерия и с двумя фирмами, и добавилась третья, то переделки состоят в добавлении в справочник фирм (он древовидный, показан на первом рисунке) еще одной записи с названием этой фирмы. Все отчеты, баланс, операции, документы идут раздельно от других. К стати, легко завести параллельную бухгалтерию для одной и той же фирмы. Для этого в справочнике фирм заводится запись для "чистовой" и "черновой" бухгалтерии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 18:37 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
StasX4Да, интересный момент. Но этот механизм позволит ли одному пользователю работать с несколькими фирмами. В частности это нужно сисадмину и гл. буху. Переключаясь с одной на другую - наверняка позволит (в худшем случае потребуется скрытый реконнект). Но вообще, если возникают подобные вопросы, я бы делал "многофирменную" архитектуру. Да - чуть сложнее, но в итоге окажется намного лучше, чем придумывать хитрые механизмы для вновь возникших потребностей. StasX4Т.к. предполагаемая программа бухгалтерии(на клиенте) будет очень большая, включающая банк, кассу, рас. счет, материалы, основные средства, зарплату и т.д., то есть вопросы по реализации.: 1) Реализовать все задачи в одной программе или раскидать их по разным программам в зависимости от решаемой задачи. Т.е. реализовать отдельно программы «Банк», «Касса», «Материалы», «Основные средства» и т.д. Что есть "программа"? Лично я (в комбинации Oracle+Delphi) считаю наилучшим следующий подход: - В базе выделяются группы объектов, относящиеся к той или иной задаче. Объекты - это таблицы, процедуры итп. Группы снабжаются коротким префиксом. Если группы большие - каждая кладется в свою схему, если маленькие - лежат в одной. - В приложении делается много плагинов, каждый из которых реализует достаточно мелкую функцию. Ядро собирает плагины, строит меню итп. Плюс, плагины завязаны на роли - так что пользователю не грузятся не нужные ему модули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2005, 18:45 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
выбирайте 4 способ и недумайте ни очем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 08:40 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
Все оперативные доки - всегда должны содерждать признак - код фирмы. Все справочники - могут иногда содержать признак - код фирмы. Например - справочник товаров. Единый для всей системы, но есть не обязательная поляна - код фирмы. Все отчеты - обязаны делать запросы когда можно юзать фильтр по коду фирмы - или игнорировать (where cd_self = :kod_self or :kod_self is null ) А вот хранимые процедуры - им должно быть все равно....ибо они оперируют КЛЮЧОМ (регистром) документа....который не зависит от Код Фирмы. Политика безопасности - основана на группах (фирмы, клиенты, товары, подразделения....) Группы Юзеров видят данные в пределах перечисленныъх групп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 08:48 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
@PVP Спасибо за информацию, как налажу дома выделенку, то обязательно скачаю пример. Я думаю организовать фильтр следующим способом: 1) При запуске программы расчетный период(дата начала – дата окончания) будет определяться так: 1.1) Определение расчетного месяца и года одним из следующих способов: - По каждой фирме на сервере будет храниться расчетный год и месяц, который можно будет изменять на клиенте через форму настройки. - При запуске программы будет определяться текущая системная дата и по ней выдергиваться месяц и год. 1.2) Определение даты начала и окончания расчетного периода. - Дата начала = 1/месяц/год - Дата окончания = Дата начала+1месяц-1день 2) Расчетный период заносится в глобальные переменные. 3) При открытии формы, которая использует фильтр по дате, в ее заголовке указывается расчетный период, который берется из глобальных переменных. 4) При изменении для текущей формы расчетного периода, то он заносится в глобальные переменные и для следующей формы будет использоваться уже измененный фильтр. Т.е. суть такова, что изначально расчетный период(R0) заключен в один месяц и определяется программой. 1) Открытие Формы №1 – RF1= R0. Если форма изменяет расчетный период, то R0=RF1. 2) Открытие Формы №2 – RF2= R0. Если форма изменяет расчетный период, то R0=RF2. 3) Повторное открытие Формы №1 – RF1= R0. Если форма изменяет расчетный период, то R0=RF1. Но можно еще сделать и так, чтобы форма и после закрытия помнила свой расчетный период: 3) Повторное открытие Формы №1 – RF1= RF1. Если форма изменяет расчетный период, то R0=RF1. Где, R0 – расчетный период по умолчанию RF1 – расчетный период для формы №1 RF2 – расчетный период для формы №2 Как вы думаете, лучше сделать с запоминанием расчетного периода или без? Кстати, я постучался к вам в Асю. @softwarer На счет базы, в которой процедуры, таблицы, представления и функции с префиксами понятно. Но когда их слишком много, то в QA или в EM этот список конкретно увеличивается. И как я понял, для решения этой проблемы используются схемы. Но я не знаю что это такое и как это делается. Я, в частности, решил работать на MS SQL Server. Можете немного пояснить? @UK0IAI Можете пояснить как реализовать видимость в MS SQL Server? Всем заранее спасибо за терпение и за ответы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 11:55 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
StasX4На счет базы, в которой процедуры, таблицы, представления и функции с префиксами понятно. Но когда их слишком много, то в QA или в EM этот список конкретно увеличивается. И как я понял, для решения этой проблемы используются схемы. Но я не знаю что это такое и как это делается. Я, в частности, решил работать на MS SQL Server. Можете немного пояснить? Грубо говоря, схема - это пользователь. В Oracle, и если не ошибаюсь, в MSSQL, между этими понятиями нет разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 12:21 |
|
||
|
Разработка БД в MS SQL Server включающая несколько организаций.
|
|||
|---|---|---|---|
|
#18+
2 StasX4 На счет периода, на мой взгляд, все хорошо, кроме чтения системной даты. Пользователь может работать в одном из прошлых периодов, залезсть в будущий. Не надо его в этом ограничивать. Лишь бы не трогал закрытые периоды. Поэтому лучьше период запомнить за пользователем. Я стараюсь за пользователем запоминать все его параметры. Когда он входит в ситсему, даже из другого компьютера, у него на экране открываются все окна и с тем содержимым, при котором он в последний раз закончил работу. Это очень удобно. Аську только окрыл. Запрос поступил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2005, 17:09 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32964003&tid=1545985]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 408ms |

| 0 / 0 |
