powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура таблицы контрагентов
16 сообщений из 41, страница 2 из 2
Структура таблицы контрагентов
    #39591368
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatLSVТы сначала дай ответ на вопрос, а том будешь сыпать умными аббревиатурами.

Некогда сейчас. Чуть попозже нарисую картинку.

Пример с TPT (table per type):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table Document (
    Id int primary key,
    Author nvarchar(50) not null,
    CreationDate datetime not null
)

create table TextDocument (
    Id int primary key foreign key references Document(Id),
    Content nvarchar(max) not null
)

create table ImageDocument (
    Id int primary key foreign key references Document(Id),
    Content nbinary(max) not null
)

create table Document_ParentDocument (
    DocumentId int foreign key references Document(Id),
    ParentDocumentId int foreign key references Document(Id),
    primary key (DocumentId, ParentDocumentId)
)



Пример с TPH (table per hierarchy):

[src]
create table Document (
Id int primary key,
Author nvarchar(50) not null,
CreationDate datetime not null,
DocumentType int not null, -- discriminator
TextContent nvarchar(max) null,
ImageContent nbinary(max) null
)

create table Document_ParentDocument (
DocumentId int foreign key references Document(Id),
ParentDocumentId int foreign key references Document(Id),
primary key (DocumentId, ParentDocumentId)
)
[src]
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591479
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatПример с...Порожняк без конкретики.
Вопрос был про письмо-жалобу. 20-30-100 возможных типов документов-родителей (система развивается и число может расти).
Для простоты - один док-родитель на письмо.
Покажи структуру таблиц письма с ссылкой на док-родитель.
Предположим, что есть не только письма, а еще много документов с подобными ссылками.
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591554
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVfkthatПример с...Порожняк без конкретики.
Вопрос был про письмо-жалобу. 20-30-100 возможных типов документов-родителей (система развивается и число может расти).
Для простоты - один док-родитель на письмо.
Покажи структуру таблиц письма с ссылкой на док-родитель.
Предположим, что есть не только письма, а еще много документов с подобными ссылками.

Я тебе что, бесплатный консультант, что ли? С документами, как делать TPT/TPH я тебе показал, теперь ты какие-то письма начинаешь приплетать. Впрочем, если ты даже для чего нужен foreign key не осилил, то тебе никакие консультации все равно не помогут.
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591728
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatЯ тебе что, бесплатный консультант, что ли?Слился кароч.... :)
Не удивительно.
Даже не понял заданный вопрос. Разные типы документов это в общем случае разные сущности(таблицы), а не все в одной.
ID_товара, ID_оплаты, ID_накладной и т.д.

Патерны он выучил..... бгг
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591737
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVПатерны он выучил..... бгг

Выучил, чо. Ну а ты так до пенсии и рисуй таблички в дизайнере левой ногой. Как-то так, как узбекский погонщик верблюдов - что вижу, о том и пою. Услышал слово "документ" - сразу же рисуем табличку, услышал слово "письмо" - сразу же рисуем еще одну табличку. Смотреть потом на результаты этого творчества без слез нельзя. А в резюме зато гордое - "спроектировал БД на тридцать восемь тысяч таблиц".
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591759
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatВыучил, чо. Ну а ты так до пенсии и рисуй таблички в дизайнере левой ногой. Как-то так, как узбекский погонщик верблюдов - что вижу, о том и пою. Услышал слово "документ" - сразу же рисуем табличку, услышал слово "письмо" - сразу же рисуем еще одну табличку. Смотреть потом на результаты этого творчества без слез нельзя. А в резюме зато гордое - "спроектировал БД на тридцать восемь тысяч таблиц".

"Слился" пишется короче.
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591803
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV"Слился" пишется короче.

А самому дойти как в той схеме, что я привел как пример, добавить письма и привязать их к документам, используя только одну связь, не судьба? Надо как дитю в картинках объяснять?
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591816
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatLSV"Слился" пишется короче.

А самому дойти как в той схеме, что я привел как пример, добавить письма и привязать их к документам, используя только одну связь, не судьба? Надо как дитю в картинках объяснять?Мне не нужно доходить до твоей схемы.
Мне просто интересно, что получается у подобных умников, бездумно начитавшихся умных патернов. :)

Мое решение простое как дверь: Прямо в шапке письма два поля ТипДок/IDдок. И всё...
Если вдруг у документов будут разного типа ID, то придется добавить еще поле(я) по кол-ву возможных типов ключей. Неприятно конеш, но выхода нет.

Напомню: разные типы документов это в общ.случае разные таблицы.
Бывает, что в одной группе таблиц живет неск. типов д-тов. Но рассматриваем это как исключение, а не как правило.

А теперь расскажи как это будет выглядеть в твоей схеме.
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591835
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVА теперь расскажи как это будет выглядеть в твоей схеме.

Код: sql
1.
2.
3.
4.
5.
create table Mail (
   Id int not null primary key,
   DocumentId int not null foreign key references Document(Id),
   /* остальные поля почты */
)



Одна связь. Всё, больше не надо. И в одном (TPT) и в другом (TPH) варианте схемы. То, о чем ты толкуешь, это TPC (table per concrete type) схема - она имеет право на жизнь в отдельных случаях, но, чаще, с ней одна только дрочь из-за дублирующихся полей, хлопот с уникальностью Id и геммора со связями.
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591894
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatОдна связь. Всё, больше не надо.Не пойму, ты тролишь или аццки тупишь ??????
Родительские документы могут быть в разных таблицах, Карл !

Т.е. ДокID=10 может быть и в накладных и в счетах и в оплатах и в заказах и т.д. И на любой из них может быть ссылка, как на родительский д-т.
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591905
Pu4koff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если по первоначальной задаче ТС:
1. Таки основные данные организаций выделить в таблицу Контрагент или Организация. Наименование организации меняется. Не так давно, например, ЗАО поменяли на АО. В зависимости от потребностей, привязываться к дате (будет проблемы, если запросят распечатать потерянную накладную за прошлый год и там будет новое наименование контрагента). ИНН, ОГРН постоянный. КПП меняется. ОКВЭД меняется, но не уверен, что вообще эта фигня нужна. Адреса тоже меняются и тут тоже есть нюанс. Если просто для документов нужен адрес, то хранить тупо строкой и забить. Если как-то связано с выгрузкой отчётности, то там уже нужно деление на куски и сверка с КЛАДР.
2. Не знаю специфики, как я себе это представляю: заключается договор на аренду склада и прописывается, что платит фирма А, которая привозит на склад 10 мешков цемента и ведро маринованных огурцов, потом приезжает фирма Б, забирает огурцы и еще фирма В забирает цемент. Вообще не вижу смысла разносить их по разным таблицам, данные у фирм одинаковые. Нужно только хранить для конкретных ТМЦ кто привозит, кто забирает и т.п. Таблицы Договор и Поставка/Перемещение просто завести и не нужно никого ни с кем делить. А то начнётся, что будет булево поле, по которому будет видно, кто привозит, а кто забирает. У пользователя это будет выглядеть как галочка и он должен внимательно на эту фигню смотреть и при генерации отчетов и документов та же история будет.
3. У организаций может быть несколько счетов и могут меняться реквизиты каждого счета (в зависимости от задач, можно поддерживать версионность внутри счёта или просто при изменении одного реквизита заводить новую запись, а старую делать неактуальной). Сейчас, например, периодически меняют БИК и кор.счет у банков. Соответственно, у счетов есть сроки действия. Нормальные организации рассылают заранее письмо, что у их банка меняются реквизиты, т.е. должна быть возможность сразу забить новые реквизиты и дать программе использовать только актуальные реквизиты.
БИК, кор. счет, наименование банка - это по идее отдельный справочник. Наименование получателя лучше дополнительно здесь хранить, т.к. бывают лицевые счета (в основном у гос. структур счета идут как лицевые в каком-нибудь казначействе).
Еще иногда за одну организацию платит другая организация. В идеале этот момент тоже проработать. Договор с ООО "Ромашка", а деньги приходят от ООО "Букашка" с назначением платежа "Оплата за ООО "Ромашка" по письму № Г от вчера за аренду склада по договору такому-то". Это вполне обычная операция, по бухгалтерии проводится, лучше тоже предусмотреть.
4. Имя контрагента. Возможно, есть смысл сделать как в 1С и хранить два наименования. Официальное как в учредительных документах и удобное для пользователя. Мало кому интересно смотреть список из
ООО "Ромашка"
ООО Корпорация "Мелиорация"
АО "АБЫР "ВАЛГ"
ПАО "Баобао"

Организационно-правовую форму или удаляют или в конец дописывают, с кавычками и всякими словами корпорация всяко разно пользуются. Люди просто запоминают, что компания называется "Мелиорация" и неудобно вспоминать, что там еще слово корпорация есть, ОПФ непонятна какая, а может недавно сменили. Нужна ООО "Ромашка" - сразу на букву Р побежал смотреть, так удобнее, как мне кажется.
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591909
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVНе пойму, ты тролишь или аццки тупишь ??????
Родительские документы могут быть в разных таблицах, Карл !


Паттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем?
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39591918
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинПаттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем?

Да для него же все это считает "ООП головного мозга". Непрошибаемый, шо песец.
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39592532
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatКот МатроскинПаттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем?

Да для него же все это считает "ООП головного мозга". Непрошибаемый, шо песец.Неспособность дать ответ и переход на личности....
Ну прямо Остап а Васюках. :)
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39592551
Pu4koff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинLSVНе пойму, ты тролишь или аццки тупишь ??????
Родительские документы могут быть в разных таблицах, Карл !


Паттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем?
Как этот паттерн применить к задаче: в таблице нужен FK на документ или контрагента или справочник?
Мне в голову приходит только изначальное введение таблицы с хранением всех ИД и соответствующего типа/имени таблицы.
Эдакая таблица, в которой хранятся все ИД всех таблиц, соответственно, ИД уникальны в рамках базы и во всех таблицах нужно следить, чтобы ИД брались из этой таблицы, а не генерировались свои.
Можно конечно заранее выделить "супертип" для этого набора документ,контрагент,справочник, но завтра условия поменяются и схему БД перекраивать?
...
Рейтинг: 0 / 0
Структура таблицы контрагентов
    #39592556
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pu4koffКот Матроскинпропущено...

Паттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем?
Как этот паттерн применить к задаче: в таблице нужен FK на документ или контрагента или справочник?

Если Вам нужна единая ссылка на что-то, у чего нельзя выделить супертип - скорее всего это концептуальная ошибка.
Попробуйте описать словами, что это за поле и на что указывает.

Pu4koffМожно конечно заранее выделить "супертип" для этого набора документ,контрагент,справочник, но завтра условия поменяются и схему БД перекраивать?
Если "условия поменяются" - в общем случае да, схему БД может потребоваться перекраивать. Как-то "универсальные" БД а-ля excel (которые не надо перекраивать при изменении условий) вытеснить специализированные не могут.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура таблицы контрагентов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]