Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
Быть может, кто из Вас сталкивался в своей практике с ситуацией, описанной ниже. Привожу приблизительный отрывок структуры, призванной хранить сведения о финансовых операциях в нашей фирме. 1) Имеется таблица docs, в которой содержатся все данные о каждом документе, выписанном в офисе или на складах. 2) Эта таблица имеет дочернюю recs, в которой содержатся расшифровка данных по каждому документу из docs в разрезе проданных товаров. 3) Каждая запись в recs имеет в себе код документа из docs, код товара, количество, сумму, вид оплаты (наличный, безналичный и т.д.), величину налога с продаж. Трудность состоит в том, что многие покупатели могут заплатить за товар частично безналом, частично наличкой (с которой и берется НП). Возникает проблематичная ситуация, когда возможностей данной структуры не хватает, чтобы хранить сведения по товару, проданному таким способом, и формировать накладные. Как быть - вводить еще одну таблицу по расчетам, дочернюю к recs, или ввести в recs дополнительное поле, или по другому организовать хранение данных в recs? Извините, что к проблемам SQL Server этот вопрос имеет лишь косвенное отношение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2001, 15:43 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
Документы об оплате ни чем не отличаются от товарных документов, поэтому его можно хранить как и товарный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2001, 18:32 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
Я могу ошибаться, потому что мог неправильно понять вашу задачу. Мне трудно вникать в чужие частности. Но тем не менее я считаю что неплохо разбираюсь в теории реляционных БД. Вот что она гласит. Если Вы будете хранить данные о разных видах оплат в таблице расшифровки документов, то она перестанет удовлетворять третьей нормальной форме. Для себе я нашел метод с помощью которого очень легко это проверить. Если при дабавлении следующей записи некторое поле имеет Null значит это поле скорее всего должно находится в отдельной таблице. Только не надро путать значение ноль со значением Null. Следующее вроде логично: для одного документа несколько видов оплаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2001, 08:16 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
Могу ошибаться, но по-моему следующая структура подойдет: завести таблицу "платежи" со следующими полями: - вид оплаты - сумма - налог - ID из таблицы recs То есть типичное отношение "один-ко-многим". 1 recs - много платежей. Заводить дополнительное поле в recs, наверное, не стоит. Потому что некоторое время спустя захочется делить платежи по видам не нал/безнал, а как-то более сложно. Например, нал/черз банк.счет/кредитка. Ну или еще что-нибудь в этом роде. И что тогда - еще поля заводить ? P.S. 2 Slava: да-а-а, способ хоть куда. Бойес с Коддом отдыхают... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2001, 19:35 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
2 GreenSunrise Вот какая беда с этими двумя гуру. Мне кажется и не только мне, что теория реляционных БД, вовсе не теория в полным смысле этого слова, а только лишь стройное объяснение. Вот почему. Если немного обратить внимание, на методику научных изысканий, где теория играет супер важную роль, то легко понять, что любой, я подчеркиваю любой, научный эксперимент, только лишь подтверждает первоначальную теорию. Т.е. в начале ученый разрабатывает некую (мысленную, словесную как хотите называйте) модель, которую в последствии подтверждает или опровергает эксперимент. С реляционными БД все наоборот. Сначала была реализация и только затем была теория. Если где и надо искать науку в компе, то это при производстве микросхем. Конечно нельзя отрицать, что при реализации технологии реляционных БД шла некоторая мысль, это и понятно, как же без этого, но сначала они поставили эксперимент. Вот именно поэтому мой способ и работает. Я вот только слегка попутал третью со второй, но уверяю в проектировании реляционных БД, это не значительно. Еще одно доказательство моих измышлений заключается в том что некоторые разработчики выполняют большие проекты не подозревая о существовании теории. Теперь мой вопрос к Вам. Как проверить удовлетворяет ли второй нормальной форме некоторая таблица? Только не надо про то что все поля должны быть зависимы от... Это давно все знают. Буду премного благодарен, если познаю что-то новое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 05:55 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
2 Slava >Теперь мой вопрос к Вам. Как проверить удовлетворяет ли второй нормальной форме некоторая таблица Ну, здесь по моему просто, если не может быть в таблице повторяющихся групп данных, значит таблица как минимум во второй форме А вот третью проверить вот так по смыслу немножко сложней, я для себя это делаю так - просто смотрю на таблицу, и если при апдейте одного столбца не нужно апдейтить второй, то это как минимум 3-я форма. Как будто не ошибаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 10:21 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за ответы Насчет теории и практики. Совершенно верно замечено, Slava, что некоторые разработчики не уделяют должного внимания теории при первоначальной реализации какого-либо проекта. Но либо это приводит их к большим неприятностям в виде "разброда и шатания" информационной структуры данного проекта, либо они заново "изобретают колесо" (как минимум первые две нормальные формы). Я бы не сказал, что это хорошо сказывается на самом проекте (знаю из собственного опыта). Поэтому с некоторых пор я уделяю теории очень много своего ночного времени ( и денег ) 2 GreenSunrise Мне было приятно увидеть, что наши мысли идут в одном направлении в смысле решения данного вопроса. Теперь я убежден, что так и надо делать. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 12:43 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
2 Genady, очень хочу получить ответ Группы это всмысле комбинация значений столбцов? Если так, то Null не должен туда попасть, правильно? Не могли бы Вы привести простенький пример повторения. Иногда в литературе авторы рекомендуют в каждой таблице иметь поле ID. Если следовать этому правилу у нас не должно быть совпадений. Если желаете можете мои мысли почитать, может я где ошибаюсь? Спроектировал я БД в которой за приход/расход товара отвечала обдна таблица(это очень давно было). Естественно идентифицировал записи я по полю приход/расход. У него было всего два значения, собственно приход и расход. И вот при эксплутации БД я заметил, что нетороые поля получают значение Null, с которым всегда неудобно работать. Отсюда я и вывел свой способ, т.к. моя таблица не соответствовала второй нормальной форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 13:25 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
Ребята, не изобретайте велосипед. Структура, в которой нормально отражаются подобные операции, была разработана еще за два тысячелетия до возникновения реляционной теории. И называется она "бухгалтерский учет". В нем есть такой принцип "двойной записи". Это означает, что любое движение ресурсов должно отражаться сразу на двух счетах (на двух регистрах учета) - на источнике и на приемнике. Для учета подобных операций должен существовать регистр (бухгалтерский счет) взаиморасчетов, на котором отслеживается дебиторская/кредиторская задолженность всех контрагентов. На счете учета товаров учитывается движение товаров , а на счете взаиморасчетов - обязательств и задолженности . Есть еще счета учета денежных средств (50 - в кассе, 51 - в банке), которые корреспондируются со счетами взаиморасчетов. При такой структуре возможно: - заводить отгрузку с множеством частичных оплат - заводить оплату с множеством частичных отгрузок - заводить множество отгрузок с множеством оплат (с переходящими хвостами по задолженности) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 13:49 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
2 SLAVA В отношении теории нормализации БД - существует очень хороший автор Р. Дженнингс, который на примерах эту нормализацию в своих книгах по Access поясняет. Советую... В отношении Ваших таблиц учета - а почему, извините, только приход/уход? А ситуации типа: резерв, аннулировано и т.д. где у Вас учитываются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 13:58 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
2 Slava Возьмите почитайте Дейта "Введение в реляционные системы баз данных" (мог немного напутать в названии). Там подробно описаны все 5 нормальных форм с примерами и разъяснениями возникающих аномалий для каждой формы. Повторяющиеся группы данных, щас попробую. напрпимер таблица поставки: IDпоставки, Дата поставки, Имя поставщика, Наименование детали, Количество Здесь явно 1 форма, потому что имя поставщика и наименование детали могут повторяться сколько угодно раз в зависимости от того сколько было поставок для конкретного поставщика (для имени) и сколько раз поставлялась конкретная деталь (для детали). P.S. Берите Дейта не пожалеете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 14:15 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
Можно и тут посмотреть если кому нужно ВВЕДЕНИЕ В СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ http://www.citforum.ru/database/dblearn/index.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 14:29 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
2 Garya Прям уж 2 тысячи Бухгалтерия только в 15 веке появилась. Забыл фамилию, кто её изобрел. Можно в каком-нибудь учебнике по бухгалтерии посмотреть. На самом деле такая структура данных со связанными документами(вообщем-то всё равно All к этому придёт) довольно сложная и я например не знаю хороших способов её реализации. Двойная запись тоже конечно нужна, но она всех проблемм не решает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 14:31 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
2 Garya О реализации данной структуры мы, кстати, и говорим. А теорию и практику бухучета многие из нас, как минимум, изучили в институтах. Но от теории "двойной записи" до практики создания работающей структуры иногда бывает очень далеко... И не факт, что готовые решения Вам подойдут... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 14:35 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
Бухучет в изначальном варианте возник во времена Архимеда (а есть сведения, что еще раньше - найдены записи, в которых велся учет расходов при строительстве Египедских пирамид). А вот метод двойной записи был изобретен, действительно, позже. И это было изобретение не просто века, а тысячелетия! Не до конца понимая ее значение, можно махать на нее рукой и пытаться вернуться к методу одинарной записи. Забывая, что именно метод двойной записи в совокупности с собственным набором аналитических признаков на каждой стороне проводки[/b позволял зафиксировать любые операции, даже те, о возможности появления которых заранее не было известно. Эта структура наиболее систематизирована и наиболее универсальна. В том примере, который тут выше приводился, в частности, очень дальновидно учтена возможность оплаты одной поставки несколькими способами и несколькими частичными оплатами. Но противоположная возможность (одна оплата по нескольким поставкам) не менее успешно забыта. Эта оплошность (и многие другие) вылезут наружу в тех редких исключительных ситуациях, про которые вам забыл рассказать заказчик. И первая же подобная ситуация поставит приложение и ее пользователей в тупик. А после того, как ошибка будет осознана и переварена вам придется пересматривать всю структуру таблиц. Я же вас не пугаю, а пытаюсь предупредить о тех подводных камнях, которые пока над водой не видны. Правда говорят, что на чужих ошибках никто учиться никогда не будет. Он сначала должен наделать собственных и по их результатам уже сделать опять же собственные выводы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 16:05 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
2 Garya "Но противоположная возможность (одна оплата по нескольким поставкам) не менее успешно забыта" Кто Вам это сказал? Возможность привязки нескольких документов отгрузки в одной таблице к одному документу оплаты в другой довольно логично вытекает из обсуждаемой нами структуры и давно мной реализована Но спасибо за всестороннее и диалектичное ( ) рассмотрение моего вопроса. Древние греки очень любили диалектику. Хорошо, что и мы ее не забываем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 16:22 |
|
||
|
Стоит ли вводить новую таблицу в следующем случае???
|
|||
|---|---|---|---|
|
#18+
2 Garya Во времена строительства пирамид еще денег не было Во всяком случае в Египте. Сейчас это трудно представить, но тогда все жители Египта были подданные фараона и выполняли его приказы. Вообщем - давай без фанатизма ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2001, 17:17 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1826659]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
6ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 299ms |

| 0 / 0 |
