|
|
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
OkeTurel, Например таблицы persons accounts operations documents_associates образуют "кольцо". Это явный признак избыточности данных (денормализованная база). У вас явно не те объемы данных, чтобы денормализация была оправданной. Поэтому на вашем месте я бы попробовал для начала привести всё к третьей форме, а уже после этого продумывать, как связывать действия и документы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:54 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
s_ustinov, я не знаю, захотите ли Вы смотреть мою базу, если я ее приложу, но я уверяю Вас - моя база в смысле нормализации хорошая! У меня ни оно значение не вводится дважды, как и пишут в книгах про базы. И ни одно значение не вводится, если его можно рассчитать (ну, типа стажа - он считается программно). Как и пишут в книгах про базы, у меня таблицы приведены к этим пресловутым нормальным формам. Ну, по крайней мере, я старалась. Хорошо, я дома постараюсь поаккуратней расположить на экране таблицы и сделаю скрин снова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:56 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
s_ustinov, если Вы так считаете, что там кольцо, то тогда я подумаю. Возможно, я чего-то не учла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 16:57 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
OkeTurels_ustinov, я не знаю, захотите ли Вы смотреть мою базу, если я ее приложу, но я уверяю Вас - моя база в смысле нормализации хорошая! А тот рисунок, что вы выложили - не ваша база? Я говорил про базу на рисунке - она довольно сильно денормализована. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:02 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
s_ustinov, проклятие, я не знала не про какие кольца! Но я поняла - располагать группами, связывать в группах, а связь групп - только в малых дозах. Посмотрю. Мне всегда казалось, что надо одну тему располагать в одной таблице, скажем "награждения", "звания", "лицевые счета", "табельные номера", "наказания", "отпуска" и т.д., у меня так сделано, и все это висит на персон_ид, ну, на человеке то есть... На аккаунт_ид висят операции. Думаю, кольцо из-за сборной таблицы "ассоциированные документы", где каждому документу ставятся в соответствие или отпуск, или звание, или наказание, или персона. Не делать же много таблиц "документы", где каждому документу только одно что-то соответствует, типа "документ званий", "документы отпусков". Так разве правильно. Таблиц будет уйма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:09 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
OkeTurels_ustinov, проклятие, я не знала не про какие кольца! Но я поняла - располагать группами, связывать в группах, а связь групп - только в малых дозах. Посмотрю. Это не жесткое правило, но так намного удобнее проектировать схему БД. OkeTurelМне всегда казалось, что надо одну тему располагать в одной таблице, скажем "награждения", "звания", "лицевые счета", "табельные номера", "наказания", "отпуска" и т.д., Правильно, это называется "сущность". OkeTurelДумаю, кольцо из-за сборной таблицы "ассоциированные документы", где каждому документу ставятся в соответствие или отпуск, или звание, или наказание, или персона. Не делать же много таблиц "документы", где каждому документу только одно что-то соответствует, типа "документ званий", "документы отпусков". Так разве правильно. Таблиц будет уйма. У вас проблема со схемой БД - именно об этом свидетельствуют "кольца". В чем именно... В том виде, в каком схема БД сейчас, разбирать долго. Попробуйте сами упорядочить свою схему - после этого будет понятнее. А количество таблиц не обязательно станет больше. Скорее всего можно будет обойтись одной универсальной таблицей "документы". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:19 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
OkeTurelsoftwarer, это все так красиво выглядит, как Вы начертили, а на деле не знаю даже, на каждой таблице куча других О том, что я нарисовал, надо думать ещё до таблиц. Надо представить бизнес-процесс в чётких и удобных терминах. А те таблицы, которые Вы называете - это справочники, их может быть сколько угодно, они практически не влияют на сложность запроса. s_ustinovобразуют "кольцо". Это явный признак избыточности данных (денормализованная база). Хм. Имхо, недостаточно обоснованное утверждение, назовём так. Прямо таки хочется спросить, как избавиться от избыточности данных и нормализовать следующую базу: Код: plaintext 1. 2. 3. 4. 5. s_ustinovУ вас проблема со схемой БД - именно об этом свидетельствуют "кольца" Хм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 17:32 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
softwarerХм. Имхо, недостаточно обоснованное утверждение, назовём так. https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B5%D1%82%D1%8C%D1%8F_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0]Запоминающееся и, по традиции, наглядное резюме определения 3NF Кодда было дано Биллом Кентом: каждый неключевой атрибут «должен предоставлять информацию о ключе, полном ключе и ни о чём, кроме ключа »[1]. То есть атрибут должен зависеть только от ключа. Не допускается зависимость одного неключевого атрибута от другого неключевого атрибута. На картинке в таблице documents_associates атрибут person_id зависит от (однозначно определяется) атрибута operation_id. И при этом operation_id не является первичным ключом documents_associates. И как раз "петли" и показывают "визуально" наличие таких нарушений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:17 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
s_ustinovНа картинке в таблице documents_associates атрибут person_id зависит от (однозначно определяется) атрибута operation_id. Вы так думаете? :) Я вот не вижу оснований для такого утверждения. И даже уверен, что нет никаких проблем построить контрпример. s_ustinovИ как раз "петли" и показывают "визуально" наличие таких нарушений. Я Вам чуть выше нарисовал петлю. И жду указаний на избыточные данные и инструкций по денормализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:24 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
softwarers_ustinovНа картинке в таблице documents_associates атрибут person_id зависит от (однозначно определяется) атрибута operation_id. Вы так думаете? :) Я вот не вижу оснований для такого утверждения. И даже уверен, что нет никаких проблем построить контрпример. Я уверен , так как могу построить запрос, однозначно определяющий person_id для любого operation_id, не используя таблицу documents_associates. А это и есть зависимость одного атрибута от другого. Любопытно будет посмотреть на контрпример. softwarers_ustinovИ как раз "петли" и показывают "визуально" наличие таких нарушений. Я Вам чуть выше нарисовал петлю. И жду указаний на избыточные данные и инструкций по денормализации. Не очень понятно, где в вашем примере "петля" - вы ведь, насколько понимаю, нарисовали данные из одной таблички. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 18:36 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
OkeTurelvmag, я долго ломала голову, что первично, мне кажется, что первично действие, возможно я ошибаюсь. Не знаю, в таблице "Документы" можно сделать ссылку на что угодно... По вашей логике кадровик сидит в курилке курит и вдруг видит дрейфующего по аллее прапорщика Сидорова, который пришпандорил себе на китель майорские погоны... ну да, действие совершено, нужно подрываться и срочно готовить приказ о присвоении прапорщику Сидорову очередное воинское звание майор... Документ (грубо) состоит из: шапки и тела документа (возьмите за образец что угодно для наглядности например накладную, счет, акт...). В главную таблицу docs пишут шапку (номер, дата документа, ...) а в подчиненную строки этого документа - в вашем случае это подчиненная таблица "действия"... То, что у вас все наоборот (действие первично) говорит о том, что у вас очень разнородные документы вплоть до полной несовместимости, например, как совместить присвоение звания и отпуск (разное количество и назначение атрибутов) ? Если бы вы сразу сказали, что у вас кадровая задача, я бы вам сразу посоветовал уйти от реляционной БД и посмотреть в сторону БД для хранения документов типа 1С кадры и ей подобных, там именно складируются разнородные документы, на базе которых написаны соответствующие обработки и кстати там такая же структура всех документов - шапка + тело документа... НО ОНИ ВСЕ РАЗНЫЕ ПО СТРУКТУРЕ И В ШАПКЕ И В ТЕЛЕ... OkeTurelя кадровик, а специализированных кадровых систем типа 1-С или Паруса у нас нет Остается только посочувствовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 19:14 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
s_ustinovНе очень понятно, где в вашем примере "петля" - вы ведь, насколько понимаю, нарисовали данные из одной таблички. Хм. А Вы посмотреть в эти данные не пробовали? Могу ещё написать ddl этой таблицы, если так не очевидно: Код: sql 1. 2. 3. 4. 5. 6. По-прежнему жду указаний по нормализации этой петли :) s_ustinovЯ уверен , так как могу построить запрос, однозначно определяющий person_id для любого operation_id, не используя таблицу documents_associates. А кто Вам сказал, что person_id, лежащий в таблице documents_associates, каким-либо образом зависит от person_id, который Вы можете определить через operation_id? Положите в эту структуру информацию "Иванов выписал живительных пиздюлей Петрову" - вот и будет тот контрпример, который Вы не чаяли увидеть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 19:41 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
vmag, только хотел пригласить Вас в студию.. )) да чо ждать-то жисть - покажет обязательно обязательно избыточность может быть - ОЧЕНЬ полезна )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 19:42 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
OkeTurel, у вас к таблице persons прицеплено по кону персоны наверное 20 таблиц без малейшего ущерба для понимания вы можете скрыть эту таблицу(правой мышкой) --- тогда вы увидите реальную схему ваших остальных таблиц, а не паутину ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 20:02 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
softwarers_ustinovНе очень понятно, где в вашем примере "петля" - вы ведь, насколько понимаю, нарисовали данные из одной таблички. Хм. А Вы посмотреть в эти данные не пробовали? Могу ещё написать ddl этой таблицы, если так не очевидно: Код: sql 1. 2. 3. 4. 5. 6. По-прежнему жду указаний по нормализации этой петли :) Насколько помню, во "Введении" что то написано о нормализации в таких ситуациях... Будет время, прочитаю - напишу. softwarers_ustinovЯ уверен , так как могу построить запрос, однозначно определяющий person_id для любого operation_id, не используя таблицу documents_associates. А кто Вам сказал, что person_id, лежащий в таблице documents_associates, каким-либо образом зависит от person_id, который Вы можете определить через operation_id? Положите в эту структуру информацию "Иванов выписал живительных пиздюлей Петрову" - вот и будет тот контрпример, который Вы не чаяли увидеть Я исхожу из того, что имена атрибутам выдаются все же осмысленно. Например, чуть выше используются названия "id" и "parent_id" В нормальных базах для записи информации типа "Иванов выписал живительных пиздюлей Петрову" используются поля с названиями "ID выписывающего пиздюли" и "ID получающего пиздюли". Я все таки верю в людей... Возможно, зря... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 21:02 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
ПЕНСИОНЕРКАOkeTurel, у вас к таблице persons прицеплено по кону персоны наверное 20 таблиц без малейшего ущерба для понимания вы можете скрыть эту таблицу(правой мышкой) --- тогда вы увидите реальную схему ваших остальных таблиц, а не паутинусхема - в Мозгу и из Мозга.. и тд лична не нужны бумазьки, карандаши и авторучки правильно Уровень - Чуйки с Уважением к ВАМ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 21:24 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
s_ustinovВ нормальных базах для записи информации типа "Иванов выписал живительных пиздюлей Петрову" используются поля с названиями "ID выписывающего пиздюли" и "ID получающего пиздюли". А длчя записи информации "Иванов подарил цветочки Петрову" - в этих нормальных базах делают отдельную таблицу с отдельными атрибутами? А для "Петров ответил Иванову на форуме" - третью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 21:28 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинs_ustinovВ нормальных базах для записи информации типа "Иванов выписал живительных пиздюлей Петрову" используются поля с названиями "ID выписывающего пиздюли" и "ID получающего пиздюли". А длчя записи информации "Иванов подарил цветочки Петрову" - в этих нормальных базах делают отдельную таблицу с отдельными атрибутами? А для "Петров ответил Иванову на форуме" - третью? Неееее... Для таких задач создают ОДНУ таблицу: CREATE TABLE actions ( [id_action] [int] IDENTITY(1,1) NOT NULL, [Что Дулин сделал для Михалыча] [nvarchar](max) ); А потом заносят в неё мега ценную информацию: INSERT INTO actions ([Что Дулин сделал для Михалыча]) VALUES ('Подарил очень красивую красную розу'); или INSERT INTO actions ([Что Дулин сделал для Михалыча]) VALUES ('Признался в неземной любви'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 22:09 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
s_ustinovКот Матроскинпропущено... А длчя записи информации "Иванов подарил цветочки Петрову" - в этих нормальных базах делают отдельную таблицу с отдельными атрибутами? А для "Петров ответил Иванову на форуме" - третью? Неееее... Для таких задач создают ОДНУ таблицу: Для каких "таких"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 22:24 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинs_ustinovпропущено... Неееее... Для таких задач создают ОДНУ таблицу: Для каких "таких"? Для таких: Кот МатроскинА длчя записи информации "Иванов подарил цветочки Петрову" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 22:38 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
s_ustinov, Т.е. Вы все верите, верите в людей, рассчитываете что они будут только морды друг другу бить, и тут раз - кто-то кому-то дарит цветочки. И все, базу на выброс? Непрактично как-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2017, 23:23 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Не так всё было. :)) Я верю в людей, верю в то, что дети сегодня заснут пораньше... И тут бац! Предлагают хранить в базе информацию "Иванов подарил цветочки Петрову"... Ну вот как так можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 00:33 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
vmag, я вчера вечером подумала и теперь согласна с Вами. Я переделаю базу "от документа", т.е. первичным будет документ, пляшем от документа, на нем висят дейтсвия. Кстати, по-моему и в Парусе сделано "от документа". Спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 09:31 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
ПЕНСИОНЕРКА, совершенно верно, у меня на персон_ид висят образование, аттестация, семейное положение, больничные, контроль флюорографии и санминимума, ассоциированные персоны (мамы-папы), наказания и награждения. Да, скрыла, стало понятней. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 09:35 |
|
||
|
Проектирование без избыточности
|
|||
|---|---|---|---|
|
#18+
softwarer, все в общих чертах понятно, и я решила вообще уйти от реаляционной модели и сделать как в 1-С, как мне советовал vmag. У меня получалась реляция, потому что я придавала большое значение таблице "персоны" и считала ее главной и думала - надо, чтобы на ней все висело. Думаю, надо сделать "Персоны" простым справочником, который, может, и связан-то ни с чем не будет, ну, будет ИД, но этот ИД в таком большом количестве документов будет (как шапок документов, так и табличной части), что нет смысла там связи будет делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2017, 10:59 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39396688&tid=1540198]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
160ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 275ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...