| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Аналог субконто 1С в БД |
| Автор: Elfix 19.5.2011, 20:50 |
| Доброго времени! У меня возникла сложность с проектирование базы данных под следующую цель. Необходимо как то организовать таблицу PL и запрос SELECT к ней чтобы получить выборку такого вида: Дата Субконто1 Субконто2 Сумма 01.02.2001 Реализация товара Контрагент 1 -34593.00 01.02.2001 Аренда производственного помещения Контрагент 1 -349200.00 02.02.2001 Амортизация оборудования Оборудование 1 -230.00 02.03.2001 Затраты на электроэнергию Контрагент 2 -43298.00 Список контрагентов хранится в таблице contragents: id int autoincrement contragent_name VARCHAR(50) Список оборудования в таблице equipments: id int autoincrement equipment_name VARCHAR(50) Задача в том, чтобы хранить в полях субконто1 и субконто2 не текстовые значения, а ссылки на идентификаторы объектов из разных таблиц, а селектом каким-то образом показывать корректные значения. Может быть криво выразился, но довольно трудно объяснить В общем такое как то реализовано в 1С, когда поле может хранить в себе ссылку на объект из одной из таблиц. Я так подразумеваю потребуется создать доп. поля типа ВидСубконто. Но не могу понять как тогда наиболее производительнее строить запрос SELECT? |
| Автор: Zloxa 19.5.2011, 20:58 |
| rtfm [left] join |
| Автор: Elfix 19.5.2011, 21:06 |
Сложность в том, что ссылки в поле могут пересекаться, и простым LEFT JOIN сделать не получится, так как не понятно какую таблицу к какому полю цеплять, и уж тем более непонятно из какой таблицы подставлять значение: из оборудования или из контрагентов. Просто в субконто2 может быть или контрагент или оборудование в зависимости от того какое значение приняло поле Субконто1. Т. е. если Субконто1 Амортизация, тогда в субконто2 должно показываться оборудование которое самортизировалось, если же Субконто1 "Реализация товара", тогда нужно в Субконто2 показать покупателя из таблицы Контрагенты. |
| Автор: Elfix 20.5.2011, 04:18 | ||
У меня собственно говоря вопрос в том как более эффективно организовать данные? С точки зрения производительности и с точки зрения обслуживания базы ( в том плане, если добавится еще таблица с возможными значениями субконто, придется добавлять условия в селект). |
| Автор: Zloxa 20.5.2011, 08:48 | ||
Выделить одну сущность - субконто, наделить ее необходимыми атрибутами. Расширенные наборы свойств, специфичные для различного рода субконто вынести в отдельные сущности, находящиеся в отношении 1:1 с сущностью "субконто". Мне вообще не понятно в чем сложность. |