|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
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.
Пример с 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] ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2018, 23:26 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
fkthatПример с...Порожняк без конкретики. Вопрос был про письмо-жалобу. 20-30-100 возможных типов документов-родителей (система развивается и число может расти). Для простоты - один док-родитель на письмо. Покажи структуру таблиц письма с ссылкой на док-родитель. Предположим, что есть не только письма, а еще много документов с подобными ссылками. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 10:53 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
LSVfkthatПример с...Порожняк без конкретики. Вопрос был про письмо-жалобу. 20-30-100 возможных типов документов-родителей (система развивается и число может расти). Для простоты - один док-родитель на письмо. Покажи структуру таблиц письма с ссылкой на док-родитель. Предположим, что есть не только письма, а еще много документов с подобными ссылками. Я тебе что, бесплатный консультант, что ли? С документами, как делать TPT/TPH я тебе показал, теперь ты какие-то письма начинаешь приплетать. Впрочем, если ты даже для чего нужен foreign key не осилил, то тебе никакие консультации все равно не помогут. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 12:33 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
fkthatЯ тебе что, бесплатный консультант, что ли?Слился кароч.... :) Не удивительно. Даже не понял заданный вопрос. Разные типы документов это в общем случае разные сущности(таблицы), а не все в одной. ID_товара, ID_оплаты, ID_накладной и т.д. Патерны он выучил..... бгг ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 14:56 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
LSVПатерны он выучил..... бгг Выучил, чо. Ну а ты так до пенсии и рисуй таблички в дизайнере левой ногой. Как-то так, как узбекский погонщик верблюдов - что вижу, о том и пою. Услышал слово "документ" - сразу же рисуем табличку, услышал слово "письмо" - сразу же рисуем еще одну табличку. Смотреть потом на результаты этого творчества без слез нельзя. А в резюме зато гордое - "спроектировал БД на тридцать восемь тысяч таблиц". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 15:10 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
fkthatВыучил, чо. Ну а ты так до пенсии и рисуй таблички в дизайнере левой ногой. Как-то так, как узбекский погонщик верблюдов - что вижу, о том и пою. Услышал слово "документ" - сразу же рисуем табличку, услышал слово "письмо" - сразу же рисуем еще одну табличку. Смотреть потом на результаты этого творчества без слез нельзя. А в резюме зато гордое - "спроектировал БД на тридцать восемь тысяч таблиц". "Слился" пишется короче. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 15:39 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
LSV"Слился" пишется короче. А самому дойти как в той схеме, что я привел как пример, добавить письма и привязать их к документам, используя только одну связь, не судьба? Надо как дитю в картинках объяснять? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 16:48 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
fkthatLSV"Слился" пишется короче. А самому дойти как в той схеме, что я привел как пример, добавить письма и привязать их к документам, используя только одну связь, не судьба? Надо как дитю в картинках объяснять?Мне не нужно доходить до твоей схемы. Мне просто интересно, что получается у подобных умников, бездумно начитавшихся умных патернов. :) Мое решение простое как дверь: Прямо в шапке письма два поля ТипДок/IDдок. И всё... Если вдруг у документов будут разного типа ID, то придется добавить еще поле(я) по кол-ву возможных типов ключей. Неприятно конеш, но выхода нет. Напомню: разные типы документов это в общ.случае разные таблицы. Бывает, что в одной группе таблиц живет неск. типов д-тов. Но рассматриваем это как исключение, а не как правило. А теперь расскажи как это будет выглядеть в твоей схеме. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 17:14 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
LSVА теперь расскажи как это будет выглядеть в твоей схеме. Код: sql 1. 2. 3. 4. 5.
Одна связь. Всё, больше не надо. И в одном (TPT) и в другом (TPH) варианте схемы. То, о чем ты толкуешь, это TPC (table per concrete type) схема - она имеет право на жизнь в отдельных случаях, но, чаще, с ней одна только дрочь из-за дублирующихся полей, хлопот с уникальностью Id и геммора со связями. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 17:41 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
fkthatОдна связь. Всё, больше не надо.Не пойму, ты тролишь или аццки тупишь ?????? Родительские документы могут быть в разных таблицах, Карл ! Т.е. ДокID=10 может быть и в накладных и в счетах и в оплатах и в заказах и т.д. И на любой из них может быть ссылка, как на родительский д-т. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 19:01 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
Если по первоначальной задаче ТС: 1. Таки основные данные организаций выделить в таблицу Контрагент или Организация. Наименование организации меняется. Не так давно, например, ЗАО поменяли на АО. В зависимости от потребностей, привязываться к дате (будет проблемы, если запросят распечатать потерянную накладную за прошлый год и там будет новое наименование контрагента). ИНН, ОГРН постоянный. КПП меняется. ОКВЭД меняется, но не уверен, что вообще эта фигня нужна. Адреса тоже меняются и тут тоже есть нюанс. Если просто для документов нужен адрес, то хранить тупо строкой и забить. Если как-то связано с выгрузкой отчётности, то там уже нужно деление на куски и сверка с КЛАДР. 2. Не знаю специфики, как я себе это представляю: заключается договор на аренду склада и прописывается, что платит фирма А, которая привозит на склад 10 мешков цемента и ведро маринованных огурцов, потом приезжает фирма Б, забирает огурцы и еще фирма В забирает цемент. Вообще не вижу смысла разносить их по разным таблицам, данные у фирм одинаковые. Нужно только хранить для конкретных ТМЦ кто привозит, кто забирает и т.п. Таблицы Договор и Поставка/Перемещение просто завести и не нужно никого ни с кем делить. А то начнётся, что будет булево поле, по которому будет видно, кто привозит, а кто забирает. У пользователя это будет выглядеть как галочка и он должен внимательно на эту фигню смотреть и при генерации отчетов и документов та же история будет. 3. У организаций может быть несколько счетов и могут меняться реквизиты каждого счета (в зависимости от задач, можно поддерживать версионность внутри счёта или просто при изменении одного реквизита заводить новую запись, а старую делать неактуальной). Сейчас, например, периодически меняют БИК и кор.счет у банков. Соответственно, у счетов есть сроки действия. Нормальные организации рассылают заранее письмо, что у их банка меняются реквизиты, т.е. должна быть возможность сразу забить новые реквизиты и дать программе использовать только актуальные реквизиты. БИК, кор. счет, наименование банка - это по идее отдельный справочник. Наименование получателя лучше дополнительно здесь хранить, т.к. бывают лицевые счета (в основном у гос. структур счета идут как лицевые в каком-нибудь казначействе). Еще иногда за одну организацию платит другая организация. В идеале этот момент тоже проработать. Договор с ООО "Ромашка", а деньги приходят от ООО "Букашка" с назначением платежа "Оплата за ООО "Ромашка" по письму № Г от вчера за аренду склада по договору такому-то". Это вполне обычная операция, по бухгалтерии проводится, лучше тоже предусмотреть. 4. Имя контрагента. Возможно, есть смысл сделать как в 1С и хранить два наименования. Официальное как в учредительных документах и удобное для пользователя. Мало кому интересно смотреть список из ООО "Ромашка" ООО Корпорация "Мелиорация" АО "АБЫР "ВАЛГ" ПАО "Баобао" Организационно-правовую форму или удаляют или в конец дописывают, с кавычками и всякими словами корпорация всяко разно пользуются. Люди просто запоминают, что компания называется "Мелиорация" и неудобно вспоминать, что там еще слово корпорация есть, ОПФ непонятна какая, а может недавно сменили. Нужна ООО "Ромашка" - сразу на букву Р побежал смотреть, так удобнее, как мне кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 19:39 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
LSVНе пойму, ты тролишь или аццки тупишь ?????? Родительские документы могут быть в разных таблицах, Карл ! Паттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 19:45 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
Кот МатроскинПаттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем? Да для него же все это считает "ООП головного мозга". Непрошибаемый, шо песец. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2018, 19:59 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
fkthatКот МатроскинПаттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем? Да для него же все это считает "ООП головного мозга". Непрошибаемый, шо песец.Неспособность дать ответ и переход на личности.... Ну прямо Остап а Васюках. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2018, 22:31 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
Кот МатроскинLSVНе пойму, ты тролишь или аццки тупишь ?????? Родительские документы могут быть в разных таблицах, Карл ! Паттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем? Как этот паттерн применить к задаче: в таблице нужен FK на документ или контрагента или справочник? Мне в голову приходит только изначальное введение таблицы с хранением всех ИД и соответствующего типа/имени таблицы. Эдакая таблица, в которой хранятся все ИД всех таблиц, соответственно, ИД уникальны в рамках базы и во всех таблицах нужно следить, чтобы ИД брались из этой таблицы, а не генерировались свои. Можно конечно заранее выделить "супертип" для этого набора документ,контрагент,справочник, но завтра условия поменяются и схему БД перекраивать? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 00:10 |
|
Структура таблицы контрагентов
|
|||
---|---|---|---|
#18+
Pu4koffКот Матроскинпропущено... Паттерн subtype-supertype на этой форуме обсуждается только чуть реже чем EAV - как можно было за столько лет не разобраться в нем? Как этот паттерн применить к задаче: в таблице нужен FK на документ или контрагента или справочник? Если Вам нужна единая ссылка на что-то, у чего нельзя выделить супертип - скорее всего это концептуальная ошибка. Попробуйте описать словами, что это за поле и на что указывает. Pu4koffМожно конечно заранее выделить "супертип" для этого набора документ,контрагент,справочник, но завтра условия поменяются и схему БД перекраивать? Если "условия поменяются" - в общем случае да, схему БД может потребоваться перекраивать. Как-то "универсальные" БД а-ля excel (которые не надо перекраивать при изменении условий) вытеснить специализированные не могут. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2018, 01:05 |
|
|
start [/forum/topic.php?fid=32&gotonew=1&tid=1540085]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
180ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 255ms |
total: | 557ms |
0 / 0 |