powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
99 сообщений из 99, показаны все 4 страниц
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641328
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. как бы и те и другие являются субъектами поставок. Делать 2 идентичные таблицы нерационально. Но в то же время их надо как-то разделить.
Только не смейтесь. Я самоучка, но хочу чтоб изначально было все "правильно". Помогите, pls
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641335
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл добавить. Буду "феерить" в Access
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641370
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажу еще больше. БД сделана и работает, но с косяком - там 2 повторяющиеся таблицы. И не о поставщиках и потребителях, а чуть по другому, но суть та же.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641393
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickChay пишет:

> Т.е. как бы и те и другие являются субъектами поставок. Делать 2
> идентичные таблицы нерационально. Но в то же время их надо как-то разделить.

По ролям. Дать роль каждому из них.
У каждого будет от нуля до двух ролей.

Можно и не делить, если их немного.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641520
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Нет поставщиков и покупателей. Есть только контрагенты
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641526
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2 пишет:

> Нет поставщиков и покупателей. Есть только контрагенты

Я бы даже сказал, что есть просто юр и физ лица. - субъекты
хозяйственной деятельности.
Контрагент в какое-то время может запросто стать субъектом учёта.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641531
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2,
Хорошо. Первая таблица - Контрагенты, 2 поля - код и имя. Вторая таблица - Поставки, 2 поля - код поставщика и код потребителя. Как выполнить запрос на выборку поставок, который бы выводил имена поставщиков и потребителей?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641533
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,
>По ролям. Дать роль каждому из них.
>У каждого будет от нуля до двух ролей.
Похоже это ближе. А можно поподробней?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641548
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
NickChayКак выполнить запрос на выборку поставок, который бы выводил имена поставщиков и потребителей?

Вы хотите знать, кто что купил из конкретной партии товаров? Это важно?
=======
Что бы выполнить запрос надо иметь данные. Что бы иметь данные их нужно занести. Что бы их можно было занести - надо тщательно продумать структуру базы.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641553
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
NickChayMasterZiv,
>По ролям. Дать роль каждому из них.
>У каждого будет от нуля до двух ролей.
Похоже это ближе. А можно поподробней?
На мой взгляд роли контрагентов не нужны, кроме как в тяжелых случаях, когда нужно разделять вип-контрагентов, посредников, ненадежных и тому подобное.

Обычно достаточно записывать приход со знаком плюс, а расход - со знаком минус.

Тогда, если количество в документе отрицательное, то в данном случае контрагент выступает в роли покупателя
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641556
Michael_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NickChayCat2,
Хорошо. Первая таблица - Контрагенты, 2 поля - код и имя. Вторая таблица - Поставки, 2 поля - код поставщика и код потребителя. Как выполнить запрос на выборку поставок, который бы выводил имена поставщиков и потребителей?

Элементарно. Джоинить таблицу контрагентов к таблице поставок 2 раза по, по коду поставщика и потребителя.
Вам бы с основами SQL разобраться, а потом заниматься проектированием БД. :-)
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641558
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
NickChayCat2,
Хорошо. Первая таблица - Контрагенты, 2 поля - код и имя. Вторая таблица - Поставки, 2 поля - код поставщика и код потребителя. Как выполнить запрос на выборку поставок, который бы выводил имена поставщиков и потребителей?

Вторая таблица - документы. Кто и что купил/продал.

Примерная стуктрура

Суррогатный ключ (по желанию)
Дата
Номер документа
Код контрагента
Количество
Код товара
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641563
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Michael_N
Элементарно. Джоинить таблицу контрагентов к таблице поставок 2 раза по, по коду поставщика и потребителя.
Вам бы с основами SQL разобраться, а потом заниматься проектированием БД. :-)
Зачем два раза? Поставщики и покупатели определяются по знаку количества в документе. Отсортировать и/или отфильтровать - дело техники
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641571
Фотография ICQRobot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot]

Обычно достаточно записывать приход со знаком плюс, а расход - со знаком минус.

Тогда, если количество в документе отрицательное, то в данном случае контрагент выступает в роли покупателя[/quot]

а если происходит возврат товара (денег)? При возвтате товара (денег) покупателю такие транзакции тогда будут выглядеть как поставка. А "кредитные ноты" от поставщика?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641572
Michael_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2Michael_N
Элементарно. Джоинить таблицу контрагентов к таблице поставок 2 раза по, по коду поставщика и потребителя.
Вам бы с основами SQL разобраться, а потом заниматься проектированием БД. :-)
Зачем два раза? Поставщики и покупатели определяются по знаку количества в документе. Отсортировать и/или отфильтровать - дело техники

Я отвечал на вопрос:
NickChay
Первая таблица - Контрагенты, 2 поля - код и имя. Вторая таблица - Поставки, 2 поля - код поставщика и код потребителя . Как выполнить запрос на выборку поставок, который бы выводил имена поставщиков и потребителей?


Чтобы получить выборку Поставщик-Потребитель-Товар-Количествово. В Поставках еще должен быть код товара, дата... Т.е. при такой структуре БД это можно сделать без проблем.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641597
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Michael_N,
Я понял, но посчитал нужным написать, что Ваш ответ решает проблему только при неверной структуре базы.

Все всегда в конечном итоге упирается в правильное проектирование.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641633
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я имел в виду как правильно задачу в общем виде, а не конкретно о поставках.
Аналогичный пример - перевозки с пунктами отправления и назначения, скажем железнодорожные станции. Там перевозка не может быть положительной или отрицательной.
Как правильно задать структуру базы данных, чтобы можно было выбрать как общее количество переработанных вагонов, так и отдельно по прибытию и отправлению?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641637
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или спортивное состязание. Нужно например собрать общую статистику для участника и отдельно домашние и выездные поединки?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641704
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Второй пример попроще и попоказательней. Возьмем спортивный турнир. Задача:
1. Выбрать все матчи - участник1, участник2, мячи участника1, мячи участника2.
2. Сделать турнирную таблицу - участник, сумма очков, количество побед, ничьих и поражений, забитые и пропущенные мячи.
3. То же отдельно по домашним и гостевым матчам.

Схема данных.
Таблица Участники. 1. Код. 2. Наименование.
Таблица Матчи участника. 1. Код участника. Код матча. Мячи участника. Статус (хозяин/гость).
Таблица Матчи. Код матча. Код хозяина. Код гостя.

Такая схема будет правильной?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641706
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В последней таблице имелось в виду:
Код матча. Код матча хозяина. Код матча гостя.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641739
Michael_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NickChayВторой пример попроще и попоказательней. Возьмем спортивный турнир. Задача:
1. Выбрать все матчи - участник1, участник2, мячи участника1, мячи участника2.
2. Сделать турнирную таблицу - участник, сумма очков, количество побед, ничьих и поражений, забитые и пропущенные мячи.
3. То же отдельно по домашним и гостевым матчам.

Схема данных.
Таблица Участники. 1. Код. 2. Наименование.
Таблица Матчи участника. 1. Код участника. Код матча. Мячи участника. Статус (хозяин/гость).
Таблица Матчи. Код матча. Код хозяина. Код гостя.

Такая схема будет правильной?

Нет. Вторая таблица не нужна.
Таблица Матчи: Код матча. Код хозяина. Код гостя. Мячи хозяина. Мячи гостя.
Все.Вместе с 1-й таблицей это даст полную информацию по задаче.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641746
Michael_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2Michael_N,
Я понял, но посчитал нужным написать, что Ваш ответ решает проблему только при неверной структуре базы.

Автор топика не дал достаточно информаци, чтобы определить верную структуру.

Cat2
Все всегда в конечном итоге упирается в правильное проектирование.

+1.

NickChay, несколько таблиц с одинаковой структурой - всегда плохо ( кроме секционированных представлений ). Почитайте о нормализации - может, что-то прояснится. :-)
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641750
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вам, NickChay, пытаются объяснить, что вне контекста понятия "поставщик" и "покупатель" не имеют смысла. Контекст в данном случае - контрактные обязательства. Если хотите иметь простую возможность быстро идентифицировать поставщика или покупателя, заведите соответствующие признаки, которые будут обновляться тогда, когда контрагент выступит в соответствующей роли.

> Второй пример попроще и попоказательней. Возьмем

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

> Схема данных.

Вы, простите, учитесь или работаете? Imho на профильных факультетах должны давать хотя бы основы, чтобы на практике не делать детских ошибок.

> Таблица Участники. 1. Код. 2. Наименование.

Даже еще не открыв регламента, ясно, что должно быть сущность, идентифицирующая турнир. Что это за соревнования? Кто принимает в них участие? Кто обслуживает и организовывает эти соревнования? Где они проводятся?

> Таблица Матчи участника. 1. Код участника. Код матча. Мячи участника. Статус (хозяин/гость).

У любого турнира есть календарь. Вот в терминах календаря соревнований и пишите.

> Такая схема будет правильной?

Абстрактной правильности не бывает. Бывает соответствие техническому заданию и несоответствие.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641757
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickChayMasterZiv,
>По ролям. Дать роль каждому из них.
>У каждого будет от нуля до двух ролей.
Похоже это ближе. А можно поподробней?

это не ближе это дальше

фиксируйте транзакции в которых контрагенты играют роли

ролей будет (и может быть) куда как больше чем 2
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641763
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Michael_N
Нет. Вторая таблица не нужна.
Таблица Матчи: Код матча. Код хозяина. Код гостя. Мячи хозяина. Мячи гостя.
Все.Вместе с 1-й таблицей это даст полную информацию по задаче.
При такой схеме я не знаю как построить запрос, который бы суммировал все матчи участника (могу только отдельно домашние и гостевые) :(
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641765
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется, что нужно завести три таблицы - Контрагенты , Поставщики , Потребители . В таблице Контрагенты отразить поля описывающие свойства контрагента, а в таблицах Поставщики и Потребители лишь по два поля - код поставщика (потребителя) и ссылку на код котрагента в таблице Контрагенты . Такая схема позволит "обслужить" ситуацию, когда один контрагент может выступать и в роли поставщика и в роли потребителя. Кроме того легко построить два VIEW, которые бы эмулировали две табицы (Поставщики и Потребители), но уже с полным набором полей.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641778
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
korda,
Вот-вот. Я так пробовал, только не был уверен, что это "правильно" :)
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641790
NickChay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621Вы, простите, учитесь или работаете? Imho на профильных факультетах должны давать хотя бы основы, чтобы на практике не делать детских ошибок.

Моя специальность никоим образом не связана ни с программированием, ни с СУБД в частности.
guest_20040621Даже еще не открыв регламента, ясно, что должно быть сущность, идентифицирующая турнир. Что это за соревнования? Кто принимает в них участие? Кто обслуживает и организовывает эти соревнования? Где они проводятся?
Да нет никаких соревнований. Я упростил пример, где статус участника может иметь значение, а может не иметь. В результатах матча - имеет, в турнирной таблице - нет.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641901
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Моя специальность никоим образом не связана ни с программированием, ни с СУБД в частности.

Значит, первое, что нужно сделать, - прочесть "Введение в системы баз данных" Дейта. Второе - осознать, что залог качества структуры данных - полная и правильная семантическая модель. Для вашего примера: ваша семантическая модель - "есть покупатели и продавцы", правильная семантическая модель - "есть субъекты предпринимательской деятельности [ограничения]".

> Я упростил пример, где статус участника может иметь значение, а может не иметь.

Думаю, вы уже поняли, что этот пример с предыдущим никак не связан. Следует заметить: избегайте нечетких многозначных атрибутов. "Статусом" может быть что угодно: от типа титульного спонсора до признака "команда дисквалифицирована".
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641906
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2 пишет:
> Похоже это ближе. А можно поподробней?
>
>
> На мой взгляд роли контрагентов не нужны,

Контрагент - одна из ролей.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641908
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ICQRobot пишет:

> Обычно достаточно записывать приход со знаком плюс, а расход - со знаком
> минус.
>
> Тогда, если количество в документе отрицательное, то в данном случае
> контрагент выступает в роли покупателя[/quot]

Т.е. принцып независимости бухучёта не для вас написан, да ?
Одним документом проводим отгрузку и приёмку ?
Ну-ну...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641909
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korda пишет:

> Мне кажется, что нужно завести три таблицы - *Контрагенты*,
> *Поставщики*, *Потребители*. В таблице *Контрагенты* отразить поля
> описывающие свойства контрагента, а в таблицах *Поставщики* и
> *Потребители* лишь по два поля - код поставщика (потребителя) и ссылку
> на код котрагента в таблице *Контрагенты*.

Да нет. Надо сделать ОДНУ таблицу (ну или набор таблиц)
субъектов хоздеятельности - физлиц и юрлиц. И ещё может что-то.

Потом для каждого субъекта учета (который также может находится в этой
таблице/таблицах) надо вести независимый список поставщиков и покупателей
с их кодами - как ссылки в общую таблицу субъектов хоздеятельности.

Возможны ещё какие-то роли, поэтому наверное стоит роль сделать универсальной,
и использовать этот механизм в *Контрагентах*, *Поставщиках*, *Потребителелях*
и ещё где угодно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35641929
AndreiКr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korda три таблицы - думаю многовато. Тут вся проблема в смене ролей от ситуации к ситуации. А вы жестко навешиваете ярлык поставщика или потребителя. А если мы с таким контрагентом бартер делать будем? Что тогда его в две таблицы записывать? Ведь сам тип операции уже скажет нам, в какой роли контрагент засветился. В свое время я решил этот вопрос с помощью двух таблиц.
1. Контрагенты.
2. Группы контрагентов. При этом каждый контрагент имеет ссылку на соответствующую группу. Группа показывает не жесткую принадлежность, а, скажем так, характерную роль того или иного контрагента. Группы добавляет не программист, а оператор, контрагентов можно перемещать из группы в группу при необходимости. Можно в таблице групп ввести внутреннюю ссылку для организации иерархического справочника групп в виде дерева. Опять же, реализовав такую структуру, вы перекладываете головную боль по организации данных на оператора и снимаете с себя.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642010
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreiКrВедь сам тип операции уже скажет нам, в какой роли контрагент засветился.
Логично. Однако, знать поставщик данный контрагент или потребитель необходимо заранее, до ввода данных в форму операции. Нужно же каким-то образом выдать пользователю список всех возможных поставщиков/потребителей?

В "трехтабличной" модели хорошо ещё и то, что используются непосредственно возможности БД, по контролю целостности. Удаляем запись из таблицы Контрагенты , и получаем автоматическое удаление соответствующих записей из Поставщиков и Потребителей . Т.е., в какой-то мере вы получаете "бесплатный" менеджмент всех трех таблиц.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642037
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, кажется автор нигде не говорил, что его система является системой учета по нескольким предприятиям. Или я проглядел?

С другой стороны, система, которая сегодня поддерживает учет по одному предприятию, завтра может переродиться в нечто более глобальное. Поэтому, почему-бы действительно не вести учет контрагентов не вообще, а с привязкой к конкретному предприятию, коих может быть несколько. Я просто пытаюсь выразить вашу идею более точно.

Получается так - есть таблица Контрагенты , содержащая предприятия (для простоты не будем сейчас делить на физические и юридические лица), свои и чужие. Каждое предприятие может быть связано с другими поставщическими или потребительскими "узами".
Рассмотрим только таблицу Поставщики, так как Потребители устроены анологично. В таблице Постащики два поля - поле - собственный код в таблице Контрагенты и код поставщика, опять-же из таблицы Контрагенты .

Таблица Контрагенты :

Код - Название - Адрес
1 - Автозавод - Москва
2 - Тепловозостроительный завод - Луганск
3 - Молокозавод - Ярославль

Таблица Поставщики :

"Свой" код - "Чужой" код
1 - 2
1 - 3
2 - 3

Т. е. поставщиками Автозавода являются Тепловозостроительный и Молокозавод
Поставщиком Тепловозостроительного завода является Молокозавод.

Таким образом, когда пользователю нужно будет оформить приход от лица Автозавода, то ему будет предложено выбрать из списка, в котором два элемента - Тепловозостроительный и Молокозавод.

Такая схема ничуть не сложнее предложенной мной ранее, но "мощнее" тем, что поддерживает учет по нескольким конторам.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642048
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На вашем месте, korda, я бы воздержался от публичных сообщений: ошибки нужно не тиражировать, а исправлять. Либо молча, либо с комментариями, что сделано неправильно. Опционально: прочтите хотя бы что-нибудь про основы проектирования. Можно из серии "для чайников".
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642053
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreiКr,
Как вы правильно заметели, кроме операций купли продажи могут иметь место и другие операции, поэтому схема приведенная выше может быть дополнена таблицей Операции . Таким образом в схему входят три таблицы - Контрагенты , Операции , Связи .

Таблица Контрагенты :

Код - Название - Адрес
1 - Автозавод - Москва
2 - Тепловозостроительный завод - Луганск
3 - Молокозавод - Ярославль
...

Таблица Операции :

Код - Название
1 - Поставка
2 - Приобретение
3 - Передача в собственность
...

Таблица Связи :

"Свой" код - "Чужой" код - Код операции
1 - 2 - 1
1 - 3 - 1
2 - 3 - 1
2 - 4 - 2
...
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642062
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621На вашем месте, korda, я бы воздержался от публичных сообщений: ошибки нужно не тиражировать, а исправлять. Либо молча, либо с комментариями, что сделано неправильно. Опционально: прочтите хотя бы что-нибудь про основы проектирования. Можно из серии "для чайников".

В чем ошибка-то?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642122
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korda пишет:
> MasterZiv, кажется автор нигде не говорил, что его система является
> системой учета по нескольким предприятиям. Или я проглядел?

Не говорил. Это я говорю. сегодня она не является, завтра - будет
являться. Требования меняются.

> С другой стороны, система, которая сегодня поддерживает учет по одному
> предприятию, завтра может переродиться в нечто более глобальное.
> Поэтому, почему-бы действительно не вести учет контрагентов не вообще, а
> с привязкой к конкретному предприятию, коих может быть несколько. Я
> просто пытаюсь выразить вашу идею более точно.

А, ну спасибо. Я как всегда сначала написал, потом прочитал. :-))

> Рассмотрим только таблицу *Поставщики,* так как *Потребители* устроены
> анологично. В таблице *Постащики* два поля - поле - собственный код в
> таблице *Контрагенты* и код поставщика, опять-же из таблицы *Контрагенты*.
>
Одна таблица должна быть.
И три поля должно быть в ней.

> Таблица *Контрагенты*:
>
> Код - Название - Адрес
> 1 - Автозавод - Москва
> 2 - Тепловозостроительный завод - Луганск
> 3 - Молокозавод - Ярославль
>
> Таблица *Поставщики*:
>
> "Свой" код - "Чужой" код
> 1 - 2
> 1 - 3
> 2 - 3

Нет.
Таблица РОЛИ-КОНТРАГЕНТОВ:

код субъекта ХД - Код роли - код контрагента
1 - Поставщик - 2
1 - Поставщик - 3
1 - Покупатель - 3
2 - Поставщик - 3

> Такая схема ничуть не сложнее предложенной мной ранее, но "мощнее" тем,
> что поддерживает учет по нескольким конторам.

Тут как бы главное - понять, что в таблицах лежат ДАННЫЕ. Если по составу
записи данные одинаковые, это должна быть ОДНА таблица. Мысль главная
в этом. А что у поставщиков и покупателей данные одинаковые, это достаточно
очевидно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642123
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
korda пишет:

> Таблица *Связи*:
>
> "Свой" код - "Чужой" код - Код операции
> 1 - 2 - 1
> 1 - 3 - 1
> 2 - 3 - 1
> 2 - 4 - 2
> ...
А, ну вот, вы и сами знали. :-)
А на счёт ошибок я тоже не понял нифига.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642148
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> В чем ошибка-то?

Это не одна ошибка. Это куча ошибок, основную не выделить. Пожалуй, наиболее существенная в данном случае - методологическая. Вы полагаете возможным явное описание атрибутов неявных процессов. Также существенной ошибкой следует считать кривой костыль вместо решения типовой задачи контроля доступа.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642202
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621> В чем ошибка-то?

Это не одна ошибка. Это куча ошибок, основную не выделить.

Спасибо, я понял!
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642297
KOT MATPOCKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael_NNickChay
...
Схема данных.
Таблица Участники. 1. Код. 2. Наименование.


Таблица Матчи: Код матча. Код хозяина. Код гостя. Мячи хозяина. Мячи гостя.
Все.Вместе с 1-й таблицей это даст полную информацию по задаче.

+1
И нечего заморачиваться
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642430
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> И нечего заморачиваться

Одноразовыми должны быть презервативы, а не структуры данных. Стадион может быть дисквалифицирован. Матч может быть перенесен. Матч может быть переигран. Мячи забивают игроки. Которые имеют возможность менять команду по ходу турнира. И т. д.

Единственный вариант проектирования структуры данных для спортивных состязаний (любых) - регламент этих состязаний: это практически готовая семантическая модель. Здесь нечего обсуждать, это нужно просто запомнить.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35642979
KOT MATPOCKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Одноразовыми должны быть презервативы, а не структуры данных. Стадион может быть дисквалифицирован. Матч может быть перенесен. Матч может быть переигран. Мячи забивают игроки. Которые имеют возможность менять команду по ходу турнира. И т. д.

Единственный вариант проектирования структуры данных для спортивных состязаний (любых) - регламент этих состязаний: это практически готовая семантическая модель. Здесь нечего обсуждать, это нужно просто запомнить


Простите уважаемый, какую задачу решаем?
Все, которые могут когда-либо возникнуть? Уверены, что все учли? А изменение регламента не учитывали?

Предлагаю не изобретать мегауниверсальную структуру, а решить поставленную задачу.
Появятся новые требования - на новой итерации внесем изменения.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35644954
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Простите уважаемый, какую задачу решаем?

Я - никакой. Просто рассказал, как эту задачу нужно решать.

> А изменение регламента не учитывали?

Хороший вопрос. Заметили ремарку про явные атрибуты неявных процессов? Разжевывать надо?

> Предлагаю не изобретать мегауниверсальную структуру, а решить поставленную задачу.

Задача имеет одно решение. Я о нем сказал. Любые другие варианты - бессовестный отъем бабла у заказчика.

> Появятся новые требования - на новой итерации внесем изменения.

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

AndreiКrkorda три таблицы - думаю многовато. Тут вся проблема в смене ролей от ситуации к ситуации. А вы жестко навешиваете ярлык поставщика или потребителя. А если мы с таким контрагентом бартер делать будем? Что тогда его в две таблицы записывать? Ведь сам тип операции уже скажет нам, в какой роли контрагент засветился
Я Вас наверное огорчу, но даже 3-х таблиц для реальной эксплуатации будет мягко говоря мало. И еще. Роли не меняются, они либо включаются, либо блокируются, каждая независимо. Формально, необходимо иметь возможность определить способности некоторого субъекта обладать определенной ролью. Причем этот контроль не может быть одноуровневый (так что операции будут вторичны), если ДО того, как субъект фактически будет обладать определенной ролью, необходимо решить вопрос, возможно ли это в принципе (визирование). Сравните, закупить у ООО "Рога и Копыта" 100 авторучек или открыть счет в АКБ "Рога и Копыта" (пусть даже положи туда стоимость этих самых 100 авторучек).
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35647849
AndreiКr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов
Я Вас наверное огорчу, но даже 3-х таблиц для реальной эксплуатации будет мягко говоря мало.


Да, для реальной ситуации 3-х таблиц мало.

Сергей Васкецов И еще. Роли не меняются, они либо включаются, либо блокируются, каждая независимо. Формально, необходимо иметь возможность определить способности некоторого субъекта обладать определенной ролью. Причем этот контроль не может быть одноуровневый (так что операции будут вторичны), если ДО того, как субъект фактически будет обладать определенной ролью, необходимо решить вопрос, возможно ли это в принципе (визирование). Сравните, закупить у ООО "Рога и Копыта" 100 авторучек или открыть счет в АКБ "Рога и Копыта" (пусть даже положи туда стоимость этих самых 100 авторучек).

Раз пять перечитал, но вроде понял. Может быть, может быть... Но как-то слишком сложно... Вы учтите, что человек, задавший вопрос только учится проектировать БД, а чтобы их проектировать хорошо, нужно спроектировать не одну.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35647932
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На каждый вопрос могут быть даны несколько ответов, и трудно определить, правильные они или нет, если не имеется для этого четких критериев. Трех таблиц может быть достаточно, если задача - написать контрольную в институте. Понимаете, к чему я клоню?... Мы можем начать учитывать различные аспекты и не закончим обсуждение никогда. Да и не знаем мы всех факторов, так как получили вопрос из двух строчек, а не глубоко проработанное ТЗ. Да и никто не требует от нас учитывать ВСЁ, начиная от быстродействия и использования дискового пространства, до возможных проблем с будущей репликацией или безопасностью. Но знаете что? Читать ответы и те, простые, "одноаспектные" и более развернутые, - философские ужасно интересно, так как и в тех и в других есть "своя правда". Единственное, чего бы хотелось пожелать пишущим философские посты, - это не ограничиваться несколькими фразами типа: это всё чушь, идите читайте книжки, а расскрывать свои мысли чуть более полно, вы же хотите, чтобы вас понимали?))
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35648067
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> На каждый вопрос могут быть даны несколько ответов, и трудно определить, правильные они или нет, если не имеется для
> этого четких критериев.

Логично. Также логично уточнять граничные условия при формулировании вопроса. ;)

> не ограничиваться несколькими фразами типа: это всё чушь, идите читайте книжки, а расскрывать свои мысли чуть более
> полно, вы же хотите, чтобы вас понимали?

Ну вот смотрите: в этом обсуждении раз сто было сказано: проектирование структуры данных для соревнований - только посредством регламента. И что? Соседний тред - хочу базу данных для футбольной статистики. "Физики и юрики" - тема уже в асфальт утоптана. Соседний тред - помогите найти решение для структуры. Бесполезно писать о чем-то подробно, возможны только самые простые паттерны (и это, кстати, тоже обсуждалось).

Imho достаточно показать автору, что существуют другие точки зрения, - найти нужный материал сейчас очень просто, было бы желание.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35648156
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
guest_20040621
Ну вот смотрите: в этом обсуждении раз сто было сказано: проектирование структуры данных для соревнований - только посредством регламента. И что? Соседний тред - хочу базу данных для футбольной статистики.
Во-первых, автор темы про футбол наверняка не читал этот топик. Я бы то же на его месте не читал. Поставщики и потребители как-то слабо соотносятся с футбольной статистикой которую он пишет.

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

Впрочем, это тоже офтоп, как и футбол или вагоны в данней теме.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35648456
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Во-первых, автор темы про футбол наверняка не читал этот топик.

Поиск придумали дебилы для дебилов. Нормальные пацаны не любят читать, они любят писать. Я правильно понял вашу мысль?

> Во-вторых, он пишет не базу для соревнований, а базу, охватывающую множество различных соревнований, каждое из которых
> может иметь свой регламент.

Это ничего не меняет.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35648738
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreiКrНо как-то слишком сложно... Вы учтите, что человек, задавший вопрос только учится проектировать БД
Простейший неидеальный пример для чайников. Берем для примера поставщиков. Вводим понятие реестра поставщиков. В нем только ссылки на субъектов (справочник субъектов один на всех), которые могут быть поставщиками. Далее в реестре поставщиков добавляем "обвески" типа "блокирован", "сертифицирован", "разрешен", "минимальный срок поставки" и т.п. Эти признаки влияют только на использование субъекта как поставщика. Например, если блокирован поставщик, то он блокирован только как поставщик, но не как субъект в целом. Так понятнее будет? Аналогично делается реестр покупателей, реестр банков (впрочем, с банками все сильно сложнее ввиду наличия разнородных справочников типа БИК/BLZ и т.п., имеющих разную, подчас идиотскую, структуру) и т.п. Визуально это может быть отдельная закладка в справочнике субъектов на каждый реестр, а может быть отдельный справочник на каждый реестр, с точки зрения структуры БД это без разницы. На каждый реестр пишется регламент. Например, по умолчанию запись в реестр добавляется без признака "разрешен" и необходима процедура визирования. Или регламент блокировки записи в реестре. И т.д.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35650446
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Сергей Васкецов

Т.е. уходим от варианта использования операций (или, как некоторые выражаются, ролей), как то поставка, приобретение, передача в собственность и т.д. и возвращаемся к схеме в которой есть единый справочник субъектов хоз. деятельности (контрагентов), окруженный связанными с ним таблицами Поставщики, Покупатели, Дарители и т.д. В каждой из таких таблиц обязательно присутствует поле - ссылка на единый справочник контрагентов и поля, специфичные для данной операции (выделены синим цветом).

Таблица Контрагенты :

Код - Название - Адрес
1 - Автозавод - Москва
2 - Тепловозостроительный завод - Луганск
3 - Молокозавод - Ярославль
...

Таблица Поставщики :

"Свой" код - "Чужой" код - Срок поставки - Тип тары
1 - 2 - 10 дней - ящик
1 - 3 - 1 день - бутыль
...

Таблица Покупатели :

"Свой" код - "Чужой" код - Место разгрузки
2 - 3 - склад
3 - 1 - оффис
...

Напомню, что данная схема учитывает возможность ведения учета по нескольким предприятиям .
"Свой" код и "Чужой" код - в соответствии со справочником Контрагентов
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35650727
KOT MATPOCKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В очередной раз спрашиваю:
зачем поставщики и покупатели разделены?
Не пойму.
Чего-то недоговариваете.
Я бы еще понял разделение на возможные поставщики и возможные покупатели, чтобы как бы показать у кого, например, есть договорные отношения на поставку/преобретение чего-либо.

А разделять сущности на поставщиков и покупателей при учете фактически произошедших транзакций.... Не понимаю
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35650731
KOT MATPOCKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kordaТаблица Поставщики :

"Свой" код - "Чужой" код - Срок поставки - Тип тары
1 - 2 - 10 дней - ящик
1 - 3 - 1 день - бутыль
...

Вердикт: таблица названа не правильно!

korda
Таблица Покупатели :

"Свой" код - "Чужой" код - Место разгрузки
2 - 3 - склад
3 - 1 - оффис
...

Вердикт: таблица названа не правильно!
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35652412
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KOT MATPOCKuH, Поставщики имеют атрибуты, отличные от Покупателей. Поставщик, например, может быть сертифицирован (об этом говорилось выше), а для Покупателя этот атрибут не имеет смысла. В силу этой причины разносим их по разным таблицам, тем не менее, поместив общие атрибуты в таблицу Контрагенты.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35653574
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kordaНапомню, что данная схема учитывает возможность ведения учета по нескольким предприятиям
Позволю себе остаться при своем незыблемом мнении, и Вам его практически навязываю, что корректная реализация " возможности ведения учета по нескольким предприятиям " в рамках одной БД реализуется прежде всего начиная с системы разграничения прав доступа, а не подобными костылями в виде кросс-таблиц. Поэтому в рамках данного топика обсуждать множество юрлиц в одной БД вообще бессмысленно, и акцентировать внимание на этом не стоит.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35655256
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
kordaПоставщики имеют атрибуты, отличные от Покупателей.
Не так уж их много, отличных, а дисковое пространство ныне дешево и не страшно, что часть атрибутов будет незадействовано. Зато дорого обходиться время разработки. И писать два комплекта практически одинаковых запросов, хранимок, вьюх и тригеров занимает в два раза больше времени и чревато в два раза большим количеством ошибок.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35655513
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей ВаскецовkordaНапомню, что данная схема учитывает возможность ведения учета по нескольким предприятиям
Позволю себе остаться при своем незыблемом мнении, и Вам его практически навязываю, что корректная реализация " возможности ведения учета по нескольким предприятиям " в рамках одной БД реализуется прежде всего начиная с системы разграничения прав доступа, а не подобными костылями в виде кросс-таблиц. Поэтому в рамках данного топика обсуждать множество юрлиц в одной БД вообще бессмысленно, и акцентировать внимание на этом не стоит.

Вы имеете ввиду, что желательно строить для каждого из предприятий отдельную схему, давать права доступа на объекты каждой из схем соответствующим пользователям, т.е. грубо говоря создавать несколько логических баз данных в рамках одной физической. Это Вы хотели сказать?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35655529
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2kordaПоставщики имеют атрибуты, отличные от Покупателей.
Не так уж их много, отличных, а дисковое пространство ныне дешево и не страшно, что часть атрибутов будет незадействовано. Зато дорого обходиться время разработки. И писать два комплекта практически одинаковых запросов, хранимок, вьюх и тригеров занимает в два раза больше времени и чревато в два раза большим количеством ошибок.

Данный вопрос обсуждался здесь (пример с беременными мужчинами). Лично я склоняюсь к мнению, что не должно быть в таблице незадействованных полей. По крайней мере, нужно по возможности избегать этого.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35655634
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
kordaЛично я склоняюсь к мнению, что не должно быть в таблице незадействованных полей. По крайней мере, нужно по возможности избегать этого.
Лично я считаю, что уменьшение количества таблиц более важно, чем наличие незадействованых полей.

При этом я руководствуюсь:
Edgar Coddправило 1: Явное представление данных (The Information Rule):
Информация должна быть представлена в виде данных, хранящихся в ячейках.
Данные, хранящиеся в ячейках, должны быть атомарны. Порядок строк в реляционной таблице не должен влиять на смысл данных.


В случае деления контрагентов на поставщиков/покупателей, людей - на мужчин/женщин и хранения их в разных таблицах получается, что часть информации о базе хранится в голове разработчика, а не в ячейках.

Что также по духу противоречит:

Edgar Coddправило 4: Доступ к словарю данных в терминах реляционной модели (Active On-Line Catalog Based on the Relational Model):
Словарь данных должен сохраняться в форме реляционных таблиц , и СУБД должна поддерживать доступ к нему при помощи стандартных языковых средств, тех же самых, которые используются для работы с реляционными таблицами, содержащими пользовательские данные.


=========
Но, конечно, незадействованых ячеек избегать надо :)
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35655679
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2получается, что часть информации о базе хранится в голове разработчика, а не в ячейках.


?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35657141
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2kordaПоставщики имеют атрибуты, отличные от Покупателей.
Не так уж их много, отличных
Не стоит обобщать. Бывают и другие задачи, кроме учета. Посмотрел в одной из наших баз.
Таблицы Поставщики и Покупатели - более 20 своих полей у каждой.
Кроме того Поставщики связаны с десятью другими таблицами, а Покупатели с двадцатью.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35658837
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Таблицы Поставщики и Покупатели - более 20 своих полей у каждой.

Отправьте ее на конкурс кривых поделок. Если не первый приз, то место в тройке призеров обеспечено.

Не бывает у них разных атрибутов. По определению.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35659357
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Не бывает у них разных атрибутов. По определению.
Просто у нас с Вами разные определения Поставщиков и Покупателей
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35659708
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Просто у нас с Вами разные определения Поставщиков и Покупателей

Уважаемый, ничего разного здесь быть не может. Опять же по определению. Есть одноразовые поделки обкуренных китайских первоклассников, которые понятия не имеют о российском законодательстве, и есть структуры данных.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35662040
korda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621 , Чуть подробнее про обкуренных китайских первоклассников можно?))
Вы имеете ввиду, что поставщики и потребители должны иметь один и тот же набор атрибутов вследствие того, что логика взаимодействия системы с Потребителем и Поставщиком должна быть одинакова в принципе?
Потребитель: потребляет Товар - поставляет Деньги
Поставщик: потребляет Деньги - поставляет Товар
Получается, что Потребитель и Поставщик симметричны, собственно, как симметричны и то, чем они обмениваются - Деньги и Товар.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35662285
andreych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробежал тему наискось, может и не заметил, поправте если что.
Контрагент, в данном случае это некая организация или чп, может в одном случае быть поставщиком, в другом покупателем. Но как контрагент он у нас вводится один раз в таблицу контрагенты
Тбл. контрагенты
ID
Наименование.
ИНН... и т.д.
Но нам его нужно разделить. Вводим еще одну таблицу, расчеты с контрагентами или лицевые счета контрагентов кому как нравится
Тбл. Лицевые
ID
Номер ЛС
Тип лицевого - закупка или поставка (с нашей стороны)
ID контрагента
Сумма закупки - можно разделить с ндс без ндс
Сумма поставки - тоже самое.
Ну и так далее
Все больше ничего не нужно. К этим ЛС можно визать документы, по ним можно строить отчеты в общем ограничены только возможностями и знаниями SQL.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35662367
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreychрасчеты с контрагентами или лицевые счета контрагентов кому как нравится
Никак не нравится. Чтобы платежные реквизиты стали лицевыми счетами, необходимо, чтобы дело происходило в банке, к тому же "лицевой счет" - сильно обобщенное понятие. А уж "расчеты с контрагентами" вообще не в тему, это никакие не расчеты. Можете назвать "расчетные счета", это более нейтрально и корректно, если не вдаваться в дебри SWIFT и его форматов, хотите - добавьте прилагательное "банковский" в сответствующем числе и падеже.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35662402
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kordaлогика взаимодействия системы с Потребителем и Поставщиком должна быть одинакова в принципе?
Так не бывает в принципе. Бизнес-логика взаимодействия с поставщиками и покупателями всегда разная. Соответственно, насколько эта бизнес-логика (в части объектов, их структур и взаимосвязей) отражена в структуре БД, настолько используемая структура БД должна отличаться в части поставщиков и покупателей. Если исходить из того, что любой покупатель в любой момент теоретически может стать поставщиком, то тогда просто остаются некоторые неиспользуемые атрибуты. Если исходить из той крайности, что любые атрибуты можно натянуть на EAV, тогда это уже другой коленкор (см. 3-е предложение выше).

Можете предложить свой вариант атрибута, который есть только у поставщика или только у покупателя, а guest Вам скажет, почему Вы обгадились (используя оригинальную терминологию). Впрочем, строго доказать это для любого атрибута вряд ли представляется возможным, особенно с учетом того, что могут быть некие уникальные атрибуты, связанные со спецификой конкретного предприятия.

kordaсимметричны и то, чем они обмениваются - Деньги и Товар.
Это глупость. Симметричны они могут быть (или не быть) только в рамках конкретных договорных отношений как некие обязательства. Например, в случае договора цессии ни о какой симметрии вообще речи быть не может. Аналогично в случае договора дарения,...
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35662602
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов Бизнес-логика взаимодействия с поставщиками и покупателями всегда разная. Соответственно, насколько эта бизнес-логика (в части объектов, их структур и взаимосвязей) отражена в структуре БД, настолько используемая структура БД должна отличаться в части поставщиков и покупателей. Если исходить из того, что любой покупатель в любой момент теоретически может стать поставщиком, то тогда просто остаются некоторые неиспользуемые атрибуты.

Можете предложить свой вариант атрибута, который есть только у поставщика или только у покупателя, а guest Вам скажет, почему Вы обгадились (используя оригинальную терминологию). Впрочем, строго доказать это для любого атрибута вряд ли представляется возможным, особенно с учетом того, что могут быть некие уникальные атрибуты, связанные со спецификой конкретного предприятия.
Именно. Специфика существует и она влияет на структуру БД. В нашем случае, есть, например, такой атрибут - прайс-лист, который есть у Поставщика и отсутствует у Покупателя.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35662607
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stiВ нашем случае, есть, например, такой атрибут - прайс-лист, который есть у Поставщика и отсутствует у Покупателя.
Ошибаетесь. Прайс-лист есть и для покупателей, и для поставщиков. Просто по одним прайс-листам продают, а по другим покупают.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35662689
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ВаскецовstiВ нашем случае, есть, например, такой атрибут - прайс-лист, который есть у Поставщика и отсутствует у Покупателя.
Ошибаетесь. Прайс-лист есть и для покупателей, и для поставщиков. Просто по одним прайс-листам продают, а по другим покупают.
У Поставщика есть прайс-лист, по которому покупают Покупатели (упрощенно).
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35662933
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stiУ Поставщика есть прайс-лист, по которому покупают Покупатели (упрощенно).
А у Покупателя есть прайс-лист, по которому продают Поставщики (не менее упрощенно). Если не вдаваться в тонкости ценообразования, ибо сейчас это просто неважно, кто и как формирует прайс-лист, то сам по себе прайс-лист (как перечень актуальных цен на позиции номенклатуры для определенной группы контрагентов) применим как при продажах, так и при покупках. Что тут можно еще обсуждать?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35663130
sti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ВаскецовstiУ Поставщика есть прайс-лист, по которому покупают Покупатели (упрощенно).
А у Покупателя есть прайс-лист, по которому продают Поставщики (не менее упрощенно). Если не вдаваться в тонкости ценообразования, ибо сейчас это просто неважно, кто и как формирует прайс-лист, то сам по себе прайс-лист (как перечень актуальных цен на позиции номенклатуры для определенной группы контрагентов) применим как при продажах, так и при покупках. Что тут можно еще обсуждать?
Я ж не спорю, что вообще это так. Но в нашем случае нет у нас прайс-листа Покупателя и быть не может. Это специфика.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35663611
KOT MATPOCKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сколько людей - столько мнений...

Предложение по поиску решения проблемы:
Если сначала денормализовать задачу следующим образом: слить все в одну таблицу!
За чем мы следим?
Если за выполнением договорных отношений, даже проще - за договорами на поставку/приобритение товаров/услуг, то в каждой строке нашей таблицы будут:
реквизиты покупателя, реквизиты продавца, реквизиты условий договора, реквизиты товара/услуги, многие другие условия, например реквизиты прайса и конкретная его строка.

Теперь начинаем постепенно нормализовать:
Выделяем таблицу контрагентов - в нее войдут все реквизиты, одинаковые (по сути) для продавцов и потребителей, тогда в основной таблице вместо этих реквизитов для продавца и покупателя останутся ссылки на их записи в таблице контрагентов.

(я не слишком нуден?)

Однако, в основной таблице остаются еще специфичные реквизиты, относящиеся к продавцу и покупателю. Куда их девать?!

Далее, имеет смысл выделить сделки, позиции товаров/услуг....
Потом еще и еще...

На каком этапе остановиться?
Ответ зависит на 100% от того - что собственно мы хотим учитывать. Какова специфика задачи.
Например, можно особенности поставщика и покупателя вынести на уровень параметров договора или сделки, а можно на уровень НСИ, чтобы использовать где-то еще.

Нормализация была придумана в том числе и для того, чтобы уменьшить (исключить) дублирование данных. А будет ли оно в том или ином варианте? Если да, то в каком объеме? Ответ на эти вопросы - целиком в специфике.
Видел я реализации, в которых существовала промежуточная таблица, в которой всегда была ровно одна запись. Смысла такая таблица не имеет вообще. В другой реализации бизнес-логики она имела бы смысл (при том же ПО), в реализованной - нет.

Если АВТОР собрался сделать что-то супер-мега-универсальное (на все случаи жизни) - флаг ему в руки. Работать такая система не будет никогда и ни где. Пример - ERP-системы: хоть они и не "супер-мега-универсальные", но с претензией. Поэтому в чистом виде не подходят ни одному предприятию. Чтобы запустить - нужно "долго дорабатывать напильником" под конкретное предприятие и после этого на предприятии будут долго еще плеваться по поводу того, что получили.

Если нечто конкретное - нужно конкретно и задавать вопрос: как реализовать конкретную функциональность, а не "сколько таблиц лучше: две, одна или пятнадцать?"

Короче, тема исчерпалась!
Пора ее закрывать!
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35664597
andreych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Васкецов
Никак не нравится. Чтобы платежные реквизиты стали лицевыми счетами, необходимо, чтобы дело происходило в банке, к тому же "лицевой счет" - сильно обобщенное понятие. А уж "расчеты с контрагентами" вообще не в тему, это никакие не расчеты. Можете назвать "расчетные счета", это более нейтрально и корректно, если не вдаваться в дебри SWIFT и его форматов, хотите - добавьте прилагательное "банковский" в сответствующем числе и падеже.

Вы идею не поняли, к платежным (банковским) реквизитам это никакого отношения не имеет. На этих регистрах накапливаются суммы отгрузок (поставок).
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35665994
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreychВы идею не поняли, к платежным (банковским) реквизитам это никакого отношения не имеет. На этих регистрах накапливаются суммы отгрузок (поставок).
Тогда называйте как хотите. Впрочем, я вообще не понимаю, зачем это отдельно от первички "накапливать", но хозяин - барин.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35667641
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На моём предприятии БД для задачи учёт материальных ценностей на складах
цехах и материально-отв лицах организовал следующим образом:
имеется справочник контрагентов следующей структуры:

СТРУКТУРА SP_AG-справочник контрагентов

ID_AGN I(4,0) идентификатор контрагента
NAM C(40,0) наименование контрагента
K_POST N(4,0) код поставщика,покупателя
K_CEX N(3,0) код цеха
TAB_N N(8,0) табельный №
K_IZD N(4,0) код изделия

В этом справочнике поле ID_AGN - идентификатор контрагента
формируется автоматечески. Если контрагент явл. материально-отв лицом,
то поле TAB_N принимает значение табельного № этого лица,а поля
K_POST,K_CEX,K_IZD принимают значение 0,аналогично для других типов контрагента
Этот справочник ежедневно обновляется за счет НСИ из других БД.

Для хранения документов,отражающих движение мат.ценностей на предприятии
используются следующие две таблицы:

СТРУКТУРА DOK-шапка документа

ID_DOK I(4,0) идентификатор документа
D_DOK D(8,0) дата документа
OTP I(4,0) идентификатор отправителя
POL I(4,0) идентификатор получателя
K_DOK C(3,0) код документа
N_DOK C(10,0) № документа
SUMA N(18,2) сумма документа


СТРУКТУРА DOKS-детальные строки документа

ID_STR I(4,0) идентификатор детальной строки документа
ID_TOV I(4,0) идентификатор товара,материала
CENA N(16,8) цена товара
KOL N(15,3) количество
SUMA N(18,2) сумма товара
ID_DOK I(4,0) идентификатор документа

При такой организации БД поступление мат.ценности от поставщика на предприятие
в табл.DOK отразится следующим образом:поле OTP -идентификатор поставщика,
POL-идентификатор склада,а расход мат.ценности на производство продукции отразится так:OTP -идентификатор цеха,POL-идентификатор изделия.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35744504
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LUCIAN

СТРУКТУРА DOKS-детальные строки документа

ID_STR I(4,0) идентификатор детальной строки документа
ID_TOV I(4,0) идентификатор товара,материала
CENA N(16,8) цена товара
KOL N(15,3) количество
SUMA N(18,2) сумма товара
ID_DOK I(4,0) идентификатор документа


Что-то не спится.

Из выделенного оставьте любые два. Третий лишний. Обычно выбрасывают цену (в данных, НЕ
в формах ввода доков).
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35744505
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LUCIAN

СТРУКТУРА DOKS-детальные строки документа

ID_STR I(4,0) идентификатор детальной строки документа
ID_TOV I(4,0) идентификатор товара,материала
CENA N(16,8) цена товара
KOL N(15,3) количество
SUMA N(18,2) сумма товара
ID_DOK I(4,0) идентификатор документа


Что-то не спится.

Из выделенного оставьте любые два. Третий лишний. Обычно выбрасывают цену (в данных, НЕ
в формах ввода доков).
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35744540
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Папа Игорь

Из выделенного оставьте любые два. Третий лишний. Обычно выбрасывают цену (в данных, НЕ
в формах ввода доков).
То что третий лишний - точно. Но я бы выкинул сумму. Деление - более опасная операция, чем умножение :)
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35746049
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2То что третий лишний - точно. Но я бы выкинул сумму. Деление - более опасная операция, чем умножение :)

Здравствуйте!

Категорически не согласен. Обосную.

Мы должны ХРАНИТЬ наиболее точные данные. Если принять Ваш вариант(выбрасываем сумму),
то нельзя точно сохранить такую пару: 3 шт. на сумму 1 руб.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35746067
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю.

В базе хранятся данные /вот, блин, как просто :-) / и если надо хранить
какое-то количество и его денежное выражение (в нашем случае), то и поступаем так, т.е.
сумму.

Одна из моих профессий - это бухучет (21 год). Еще в начале своей карьеры услышал и принял
следующее - Цена величина расчетная.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35746087
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять добавлю.

Лично я (в приложениях по бухучету) практически никогда не храню количество. Разбиваю всю партию на минимально оперируемые кванты и храню только стоимость этих квантов, полученную расчетным путем.

Тогда в выше приведенном примере (3 шт. на сумму 1 руб.) получаем три записи в таблице:

Что-то типа:
prod1 0,33
prod1 0,33
prod1 0,34
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35748168
ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ш
Гость
Папа Игорь,
Как это не хранить количества? А если 100 шт. по 1 коп. - будет 100 квантов?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35748181
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Папа Игорь,

Прошу прощения, был невнимателен к структуре примера.
Я имел ввиду, что хранить сумму - опасно для базы в той ее части, где учитываются остатки.
Что бы не получить "0 шт. на сумму 10 рублей".
Бывает такое, при ошибках ввода.
=============
В той части где хранятся документы на отпуск товара, действительно надо хранить сумму.
Иначе просто невозможно, например, учитывать в цене всякие натуральные (не процентные) скидки с общей суммы.

==========
Знаем мы как бухи считают, совсем не так, как налоговая и не так, как в математике :)
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35748206
ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ш
Гость
Cat2Я имел ввиду, что хранить сумму - опасно для базы в той ее части, где учитываются остатки.
Что бы не получить "0 шт. на сумму 10 рублей".
Бывает такое, при ошибках ввода.

Ну а в остатках тем более надо сумму хранить, а не цену.
А "0 шт. на сумму 10 рублей" - можно разрешить, это тоже,
что и курсовая разница. Может иногда возникать и штатно...
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35748654
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шПапа Игорь,
Как это не хранить количества? А если 100 шт. по 1 коп. - будет 100 квантов?

Здравствуйте!

Минимально оперируемые кванты (в контексте моего сообщения) - это не 1 шт.

Это может быть и кг, и тонна, и литр, и т.п.

Смысл в том, чтобы выбрать наименьшую единицу измерения количества/объема.

Если у вас угольная шахта. Добываете в сутки 50 000 тыс.тонн. Какой "квант" выберете.

Я - тонну.

А если вы ювелир. Квантик получается другой. :-)
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35748667
ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ш
Гость
Папа Игорь,
согласен.
Но с формальной точки зрения: как не хранить количества?
Если квант = т (в Вашем примере), то 50000 записей вместо одной?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35748806
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ш...Если квант = т (в Вашем примере), то 50000 записей вместо одной?

А что мешает? :-)

Если бы Вы знали насколько при этом упрощаются некоторые учетные задачи.

Или мы нарушаем какие-либо теоритические постулаты?

Просто производим декомпозицию до необходимого нам уровня.

Мы уже удалились от темы ветки. Давайте закруглятся. Согласны?

Успехов.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35749457
KOT MATPOCKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ш, Папа Игорь
Но с формальной точки зрения: как не хранить количества?
Если квант = т (в Вашем примере), то 50000 записей вместо одной?
В некоторых задачах количество не нужно.
Например, та же добыча: если добываете абстрактные тонны, то зачем количество?
Другой вопрос, что этот уголь вы кладете в вагоны, тогда имеет смысл кроме веса еще и учитывать вагоны.
Другими словами нужно учитывать те объекты, за которыми следим!
Назвать их можно как угодно. Наиболее частые названия: партия, субпартия, либо конкретно: пачка, бочка, багон, штучка...

В БД можно сделать любую разбивку вплоть до милиграм (для добычи угля), но потом с ней будут (или не будут?) работать люди. Как вы сможете учесть от которой тонны угля не досчитались? Начнете говорить про ФИФО-ЛИФО - зачем тогда вообще такая детализация, если она полностью нивелируется кодом? У меня один ответ - чтобы программисту было чем заняться, другого смысла не вижу.

Все ИМХО, ничего личного к собеседникам ;)
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35749485
ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ш
Гость
KOT MATPOCKuH,
можете открыть новую тему "Кванты вместо натуральных измерителей".
Тема то интересная, но у меня мозги не варят, как это осуществить...
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35749649
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ш...Кванты вместо натуральных измерителей...

Натуральные числа - знаю.

Натуральные измерители - не знаю.

Идея проста, как ...

Вы делаете декомпозицию данных до такого уровня при котором все множество
этих данных является однородным (в контексте задачи). SQL хорошо работает с множествами.

Масштаб хранимых единиц измерения выбирается такой, что верно следующее:
одна запись равна одной единице измерения.

Сравните:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 1 ). delete top  5  
    from inv 
    where id =  1 
...

 2 ). update inv 
     set qty = qty -  5  
     where id =  1 


В первом случае операция над множеством, во втором - модификация атрибута.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35749660
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Папа Игорь...В первом случае операция над множеством, во втором - модификация атрибута.

Возможно мой подход уже старомоден. :-)

Но я привык хранить информацию в БД в виде записей. И изменять ее (информацию)
работая с записями. А модифицировать атрибуты только для исправления ошибок.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35749748
ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ш
Гость
Папа Игорь, благодарю!

Не знаю откуда, но у меня засело в голове, что:
Сумма (руб/валюта), Кол-во - это "Измерители",
а "41","Петров","Носки" - это значения, координаты точки
в "пространстве хоз.операций", где Оси или "Измерения" - это
"Синт.счет", "МОЛ", "ТМЦ" и др...
А как правильно говорить?

При вводе партии (3 шт. на сумму 1 руб.) получаем три записи в таблице.
Эти записи и являются мин.квантом в вашей БД или точкой в пр-ве. Так?
Можете дать типовой состав этой точки (схему таблицы партий)?
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35750839
Фотография Папа Игорь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ш...При вводе партии (3 шт. на сумму 1 руб.) получаем три записи в таблице.
Эти записи и являются мин.квантом в вашей БД или точкой в пр-ве. Так?
Можете дать типовой состав этой точки (схему таблицы партий)?

Здравствуйте!

Не отвечая именно на этот Ваш вопрос, постараюсь упростить (без потери качества).

Термин «квант» использовал потому, что , имхо, он более подходит для того,
что мы имеем ввиду, говоря об «атомарности данных». Не в терминах дело.
Дело в соблюдении принципа «атомарности данных».

В учебной литературе, освещая вопросы нормализации, часто приводят пример с телефонными номерами. В одном поле таблицы хранится несколько номеров телефонов: "555-4124; 555-7852…"

Плохо это? Говорят, что плохо. А почему?

Не будем рассуждать о сложности модификации, поиска и т.п. Рассмотрим ИСПОЛЬЗОВАНИЕ.

Практически во всех случаях использования мы будем оперировать ЧАСТЬЮ значения этого поля.
Тогда зачем их хранить вместе. Давайте разобьем это значение на используемые порции - кванты в моей терминологии.
Если номер всегда используется для звонков, то будем хранить полные номера, а если нам требуется делать анализ по телефонным узлам, то квантование продолжим дальше.

Так и с количеством (в нашем примере). Если значение "3 шт" мы ВСЕГДА будем использовать как "3 шт.", то и хранить надо в таком виде.
Но если возможен вариант использования ЧАСТИ значения поля (например - "1 шт."), то и хранить в БД надо эти ЧАСТИ.

Мой подход к нормализации следующий: нормализую полностью при проектировании – денормализую (по разным причинам) при реализации.
...
Рейтинг: 0 / 0
Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
    #35751391
ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ш
Гость
Папа Игорь!
Идея ваша уже раньше была понятна, но развернутое изложение еще
усугубило это понимание, спасибо. Будем знать и применять, когда уместно будет.

Вопросы были "по касательной".
1) Пространство, Оси, Точки, Значения. Эти термины м.б. и применимы к учету,
но общеприняты ли? Скорее нет. Вы поправили меня в терминах, вот я и
попробовал выяснить попутно, какие правильные слова следует употреблять.
2) Хранение квантов можно по разному устроить. Видимо в таблице "Партии".
Вот я и хотел убедиться (проверив состав записи), что верно догадался...
...
Рейтинг: 0 / 0
99 сообщений из 99, показаны все 4 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Поставшики могут быть потребителями и наоборот. Как правильно задать схему данных?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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