powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помощь с проектированием БД, клиенты, документы
25 сообщений из 103, страница 1 из 5
Помощь с проектированием БД, клиенты, документы
    #39978451
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Пишу GUI приложение, типа "Помощник юриста", с использованием SQLite. БД никогда не занимался, этому никогда не обучался. Поэтому не знаю, правильно ли всё делаю.
По сути приложения. Есть два типа клиентов - физ. и юр. лицо. Я их выделил в две отдельные таблицы и связал с общей таблицей (id клиента и его категория).
У клиента есть дела, я общую таблицу клиентов связал с таблицей Дела по id клиента.
Дальше не знаю... Могут быть документы, аудио, фото, текст. При этом могут быть три владельца этих документов - документ по делу, документ клиента, документ пользователя.
Как бы это все правильно связать то? Просят с меня схему, ну нарисовал её по быстрому в программе Valentina Studio, для наглядности, не все поля прописал. Но понимаю, что не правильно наверное. Вот, вообщем-то прошу совета, как это все разделить то и связать грамотно. Запросы будут строиться исходя из нажатия кнопок пользователем, так что проблем с отнесением к категориям владельца или типа документа не должно быть. Спасибо, сильно не пинайте ).
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978457
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_Могут быть документы, аудио, фото, текст. При этом могут быть три владельца этих
документов - документ по делу, документ клиента, документ пользователя.
Как бы это все правильно связать то?

Тут надо смотреть на сущность этих документов и операции, которые с ними могут быть
произведены в рамках бизнес-логики. Но скорее всего таки правильнее будет создать три
отдельные таблицы документов, привязанные к делу, клиенту и пользователю соответственно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978461
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Идея такая, что пользователь может с внешнего носителя загрузить в БД файл (или фото со сканера). Это может быть допустим фото судебного дела (по конкретному делу из таблицы Дело), или может скан паспорта клиента (т.е. нет привязки к делу, только к клиенту) или документ лично пользователя (допустим аудио с семинара адвокатов). А приложение дает возможность фильтрации по клиенту, по делу, открытия этих документов прямо из окна приложения, поиска по дате добавления и т.д.
А три отдельные таблицы это что имелось в виду? Умотался уже, не совсем соображу. Вообще в принципе от того, что есть сейчас можно отталкиваться или совсем ерунда получается?
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978466
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_А три отдельные таблицы это что имелось в виду?

create table "документы по делу" ...
create table "документы клиента" ...
create table "документы пользователя" ...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978470
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, спасибо. Но чет не догоняю немного. Вот у меня есть таблица clientDocs - ну вроде документы клиента и есть (id клиента + id документа) и casesDocs(id дела + id документа). id документа все уникальные и берутся из общей таблицы Documents... То есть эта промежуточная общая таблица не нужна будет, а сделать три и каждую связать с тремя таблицами по типу файла (audioDocs, photoDocs...)?
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978481
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_То есть эта промежуточная общая таблица не нужна будет, а сделать три и каждую связать с
тремя таблицами по типу файла (audioDocs, photoDocs...)?

Нет, таблицы по типу файла не нужны.
Да и таблица Documents тоже сомнительна, хотя и радует поклонников нормальных форм.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978484
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понял, спасибо. Была идея сделать так. Но вот взбрело в голову, что разделить по типу файла будет наглядней. У меня типа диплома проект, думал, что на схеме так будет комиссии понятней. Так то не по базам специальность, код сам копать сильно то и не будут на этот счет, думаю. )
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978514
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, вот переделал как посоветовали. Так вроде? Смущает таблица документы пользователя. Болтается одна без связей всяких. Но по логике так то вроде и должно... Никуда её не прицепить.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978540
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_
Dimitry Sibiryakov, вот переделал как посоветовали. Так вроде?

Изначальная схема была очень даже неплоха, а эта хуже - заметь, хотя бы, как у тебя в таблицах *Docs стали дублироваться поля. Если тебе пидется вводить еще один или несколько аттрибутов, которые должны быть у всех документов, то будешь каждый раз добавлять их во все таблицы. Или если появится еще один специфичный тип документов, для которого нужна будет отдельная таблица, то тоже надо будет копипастить. Поищи в интернете на тему представление наследования в реляционных БД - про это много написано, там несколько разных типовых подходов (TPH, TPC, TPT), у каждого свои плюс и минусы и надо выбирать по конкретной ситуации.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978541
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_
Дальше не знаю...


Я в общем-то нашёл проблему :)
Попробуйте отложить схему БД в сторону и само проектирование.
Представьте, что делать будет кто-то другой.

Сможете написать требования?
Напишите.

Вы удивитесь, но хорошо прописанные требования дадут вам 80% пользы, останется накидать схему.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978646
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthat, спасибо за совет. Почитаю. Может что получится придумать, а то немного запутался уже.
hVostt, да, спасибо, попробую расписать.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978795
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно всего три таблицы, если не вдаваться в подробности:
1. Клиенты.
2. Дела клиентов.
3. Документы.

В "Клиентах" живут все клиенты, и физики и юрики. Это правильно с точки зрения построения БД, так как это одна сущность. Тип клиента это просто поле в этой таблице.
В "Делах клиентов" живут все дела. Связь с "Клиентами" по ID клиента.
В "Документах" живут все документы дел. Не клиентов, а именно дел, так как документы прежде всего привязаны к делу. Связь с таблицей "Дела клиентов" по ID дела. Тип документа (аудио, текст, графика) - поле в таблице.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978847
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stanislav P, разделение физ. и юр. лиц оправдано. Слишком разные у них реквизиты, которые важны. У физ. допустим Ф, И, О + дата рождения, а у юр. наименование (и то не обязательно), ОГРН или ИНН. Только по этим реквизитам можно однозначно идентифицировать клиента. Эти поля должны быть заполнены обязательно. Достичь этого имея одну общую таблицу невозможно. А документы не только к делу относятся. Допустим скан паспорта клиента физ. лица или скан доверенности. Эти документы должны храниться в одном экземпляре не зависимо от дела. Ведь по одной доверенности можно хоть в ста делах участвовать, а зачем тогда этот документ дублировать в каждом деле?
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978854
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_
Stanislav P, разделение физ. и юр. лиц оправдано. Слишком разные у них реквизиты, которые важны. У физ. допустим Ф, И, О + дата рождения, а у юр. наименование (и то не обязательно), ОГРН или ИНН. Только по этим реквизитам можно однозначно идентифицировать клиента. Эти поля должны быть заполнены обязательно. Достичь этого имея одну общую таблицу невозможно. А документы не только к делу относятся. Допустим скан паспорта клиента физ. лица или скан доверенности. Эти документы должны храниться в одном экземпляре не зависимо от дела. Ведь по одной доверенности можно хоть в ста делах участвовать, а зачем тогда этот документ дублировать в каждом деле?

Это неправильно. Так не делают. Делают признак "юрик/физик" и от него пляшут. Три таблицы превращаются в одну. И т.д. и т.п. Короче, кругом удобство.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978876
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KreatorXXI
Vladimir_84_
Stanislav P, разделение физ. и юр. лиц оправдано. Слишком разные у них реквизиты, которые важны. У физ. допустим Ф, И, О + дата рождения, а у юр. наименование (и то не обязательно), ОГРН или ИНН. Только по этим реквизитам можно однозначно идентифицировать клиента. Эти поля должны быть заполнены обязательно. Достичь этого имея одну общую таблицу невозможно. А документы не только к делу относятся. Допустим скан паспорта клиента физ. лица или скан доверенности. Эти документы должны храниться в одном экземпляре не зависимо от дела. Ведь по одной доверенности можно хоть в ста делах участвовать, а зачем тогда этот документ дублировать в каждом деле?

Это неправильно. Так не делают. Делают признак "юрик/физик" и от него пляшут. Три таблицы превращаются в одну. И т.д. и т.п. Короче, кругом удобство.


Я когда над этим думал, прошерстил и этот ресурс и другие на эту тему. Большинство сошлось на реализации как у меня. Потому что, в одной таблице половина полей будет не заполнена, в зависимости от типа клиента. Для юр. лица ОГРН или ИНН должны быть заполнены обязательно. А какой ОГРН у физ. лица, что тогда записывать туда для него? Это совершенно излишний атрибут. Какая-то солянка получится. По логике то да, это и то и то клиент, но исходя из предметной области сущности разные. Самолет и автомобиль то транспортные средства, но все же совершенно разные вещи. Да и ладно с этим, даже если б я в одну таблицу клиентов слил... У меня больше вопрос про таблицы документов исходя из их разных типов и разных владельцев. Как лучше все-таки разделить, по типу владельца? Исходя из первой схемы в голове складываются вроде запросы, достаточно просто получится вывести документы и по типу владельца и по типу файла... Приложение планируется однопользовательским, БД заполняться не будет быстро исходя из реалий. Поэтому какой-то сильной оптимизации и пр. не требуется.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978896
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir_84_
Stanislav P, разделение физ. и юр. лиц оправдано. Слишком разные у них реквизиты, которые важны. У физ. допустим Ф, И, О + дата рождения, а у юр. наименование (и то не обязательно), ОГРН или ИНН. Только по этим реквизитам можно однозначно идентифицировать клиента. Эти поля должны быть заполнены обязательно. Достичь этого имея одну общую таблицу невозможно. А документы не только к делу относятся. Допустим скан паспорта клиента физ. лица или скан доверенности. Эти документы должны храниться в одном экземпляре не зависимо от дела. Ведь по одной доверенности можно хоть в ста делах участвовать, а зачем тогда этот документ дублировать в каждом деле?


Если у тебя будет две таблицы с клиентами (физики и юрики), то тебе нужно будет две таблицы на дела (отдельно физики и юрики) и то же самое с документами. Когда дойдёшь до построения форм, отчётов и поиска, то сразу поймёшь, что такое вложенный и длинный SELECT, и что такое две одинаковые формы на одну сущность клиент.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978904
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_Ведь по одной доверенности можно хоть в ста делах участвовать

Нельзя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978911
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimir_84_,
Более "правильный" вариант - одна таблица "Клиенты", к ней таблица "Реквизиты клиента", а к ней таблица "Список реквизитов". Но тогда надо будет очень сильно заморачиваться с проектированием формы "Клиент". И хранить все реквизиты текстом, с дальнейшим преобразованием в нужный формат в программном коде.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978914
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Vladimir_84_Ведь по одной доверенности можно хоть в ста делах участвовать

Нельзя.

Ну как нельзя, если я этим занимаюсь =) Организация выдала доверенность на представление интересов в судах всех уровней и во всех гос. органах. И ходи с ней пока срок не закончится. Её же не забирают =)
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978923
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stanislav P
Vladimir_84_
Stanislav P, разделение физ. и юр. лиц оправдано. Слишком разные у них реквизиты, которые важны. У физ. допустим Ф, И, О + дата рождения, а у юр. наименование (и то не обязательно), ОГРН или ИНН. Только по этим реквизитам можно однозначно идентифицировать клиента. Эти поля должны быть заполнены обязательно. Достичь этого имея одну общую таблицу невозможно. А документы не только к делу относятся. Допустим скан паспорта клиента физ. лица или скан доверенности. Эти документы должны храниться в одном экземпляре не зависимо от дела. Ведь по одной доверенности можно хоть в ста делах участвовать, а зачем тогда этот документ дублировать в каждом деле?


Если у тебя будет две таблицы с клиентами (физики и юрики), то тебе нужно будет две таблицы на дела (отдельно физики и юрики) и то же самое с документами. Когда дойдёшь до построения форм, отчётов и поиска, то сразу поймёшь, что такое вложенный и длинный SELECT, и что такое две одинаковые формы на одну сущность клиент.


Да не, реквизиты дела не зависят от типа клиента, там все унифицированно. Типа статус клиента (истец, ответчик...), категория дела (гражданское, административное...), текстовое поле суть дела... Так что таблица одна.
Вообще как это должно выглядеть - пользователь нажимает кнопку "Документы", дальше выбирает категорию -> "аудио", дальше чьи, допустим из списка -> клиент, дальше может фильтровать по конкретному клиенту. Там прям в окне может файл прослушать, удалить, и пр. Так же с другими категориями владельца файла и категориями файла. Допустим для фото будет предпросмотр прям в окне интерфейса приложения.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978929
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stanislav P
Vladimir_84_,
Более "правильный" вариант - одна таблица "Клиенты", к ней таблица "Реквизиты клиента", а к ней таблица "Список реквизитов". Но тогда надо будет очень сильно заморачиваться с проектированием формы "Клиент". И хранить все реквизиты текстом, с дальнейшим преобразованием в нужный формат в программном коде.

Ну так наверное правильней, да. Но вот заморачиваться как раз не очень хочется. Я же говорю, я не спец по БД совсем, делаю как понимаю. Чтобы прям все по теории было сто процентов не обязательно. Смотрю на примеры тут же с форума, как другие делают и советуют. Мне главное, чтобы работало сейчас все =). Часть с клиентами и делами уже написана и протестирована, все ок. Ссылочная целостность по ключам проверяется, на уровне логики приложения тоже проверки есть. Мне документы прикрутить надо =) Когда приложение будет готово, если время будет, рефакторинг произведу если что, в этой части ("Клиент") тоже. Не могу сейчас тормознуть процесс и сильно переписывать код.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978933
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_Ну как нельзя, если я этим занимаюсь =)

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

Vladimir_84_Для юр. лица ОГРН или ИНН должны быть заполнены обязательно. А какой ОГРН у физ. лица, что
тогда записывать туда для него?
Для чего? Если клиенты доверяют Вам, значит и Вы должны доверять клиентам. Поэтому можно
не закладываться на то, что один клиент начнёт выдавать себя за другого. Нет необходимости
поиска по 100500 атрибутам, нет смысла их хранить.

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

Зачем такой длинный путь? Это неэргономично. Карточка клиента, кнопка "Документы" откроет
окно с полным списком его документов всех видов. Далее кнопка "посмотреть" откроет
конкретный документ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978937
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_Мне документы прикрутить надо =)

Просто сложите их в определённую папку и по кнопке "Документы" открывайте окно проводника.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978942
Vladimir_84_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
Ну в доверенности можно прописать конкретно по каким делам представляются интересы и где. Допустим пять штук в одном суде. Это к тому, что наверное не зачем хранить одну доверенность в пяти экземплярах в разных делах. Поэтому и хочется это отделить.
Про ОГРН или ИНН. Это уникальный идентификатор. В общей таблице может быть десять ООО "Ромашка", но это будут разные юр. лица. Вот чтобы можно было их однозначно различать и надо указать одно из двух.
Про длинный путь, я с вами соглашусь, так и будет. Интерфейс ещё продумывается. Спасибо.
...
Рейтинг: 0 / 0
Помощь с проектированием БД, клиенты, документы
    #39978947
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir_84_Это уникальный идентификатор. В общей таблице может быть десять ООО "Ромашка", но это
будут разные юр. лица. Вот чтобы можно было их однозначно различать и надо указать одно из
двух.

У Вас есть десять клиентов с одним названием и Вы способны их различить только по номеру?

Не надо маяться теоретической фигнёй, делая приложение для конкретного собственного
использования.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 103, страница 1 из 5
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помощь с проектированием БД, клиенты, документы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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