powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Одна таблица или несколько?
21 сообщений из 21, страница 1 из 1
Одна таблица или несколько?
    #40115561
sqrt0805
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Прошу совета по проектированию базы данных у более опытных людей:
Разрабатываю систему учета документации по персоналу. Учитываются: свидетельство о рождении, школьный аттестат, диплом, паспорт, медицинский полис, списки поощрений сотрудников и т.д. Всего видов документов на данный момент 16. У многих из них одинаковые поля: номер, дата выдачи, кем выдан, срок действия, и т.д.
Как быть при построении БД? Для каждого документа отдельная таблица? Или создать одну таблицу со всеми документами, где будет ссылка на таблицу с типами документов? Какие достоинства и недостатки каждого из решений?
Ведь каждый документ связан с людьми по-разному: свидетельство рождения у человека одно, как и человек у свидетельства о рождении. Паспортов же у человека уже за всю жизнь три, это тоже учитывается, но у каждого паспорта хозяин один. А вот списки поощрений уже точно MANY-TO-MANY, потому что в одном списке может быть много сотрудников, а одного сотрудника за всю карьеру поощрить могут несколько раз.

Пример выдуманный. Но суть одна: имеется много сущностей со сходим список полей, некоторые отличаются только названием. Объединять в одну таблицу или делать разные? Спасибо.
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115565
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqrt0805Объединять в одну таблицу или делать разные?

Кинь монетку. На данном этапе разницы нет, а позже, когда она выявится, решение
легко поменять.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115566
sqrt0805
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
А может есть разница в быстродействии?
Обращаться к одной таблице, чтобы подгрузить все документы о человеке, или обращаться к одной?
Но в то же время, чтобы просто получить список всех паспортов, нужно обратиться к таблице, где очень много данных, не относящихся к данному виду документа?
Или это незначительная разница, если речь идет максимум о миллионе записей?
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115569
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqrt0805
Пример выдуманный. Но суть одна: имеется много сущностей со сходим список полей, некоторые отличаются только названием. Объединять в одну таблицу или делать разные? Спасибо.

Зависит от того, как эти сущности будут использоваться в бизнес-логике. В качестве эмпирического правила, дающего неплохое стартовое приближение, стоит посмотреть на внешние ключи:
  • Если в системе будет или легко может быть внешний ключ, ссылающийся на сущности А, Б и В - их стоит класть в одну таблицу
  • Если в системе будет или легко может быть внешний ключ, ссылающийся на А (но не на Б и В), ссылающийся на Б (но не на А и не на В) итп. - их стоит класть в разные таблицы.
  • Если в системе будут или легко могут быть как те, так и другие внешние ключи - стоит делать обобщающую таблицу (для А+Б+В) и присоединённые к ней как один к одному детальки (отдельные А, Б и В).
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115572
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqrt0805
Пример выдуманный. Но суть одна: имеется много сущностей со сходим список полей, некоторые отличаются только названием. Объединять в одну таблицу или делать разные?


Исключительный вопрос к запущенности случая, читай, к бизнес логике. Если разница в 50 аттрибутов между разными документами может быть, это одно, если 5 атрибутов - другое. Как часто меняется добавляется выбирается эта информация и в каком формате крайне важно. Наиболее гибкая система будет eav с типами и таблица соединений, но придется это все разворачивать.
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115586
sqrt0805
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza, Спасибо! Почитал про EAV и понял, как лучше сделать. В том то и есть моя проблема: я самоучка на ранней стадии развития. Из области баз данных есть знания SQL и все. Практически никаких знаний по принципам правильной организации структуры в БД нету. Не могли бы посоветовать литературу на данную тему? Заранее благодарен!
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115589
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaНаиболее гибкая система будет eav с типами и таблица соединений, но придется это
все разворачивать.

Не надо EAV разворачивать. "Там тупик, обрыв..."
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115591
sqrt0805
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, да я и не стал, но понял как другую проблему решить, которую не описывал в данной теме.
Но вот вопрос по литературе остается открытым...
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115623
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqrt0805
Пример выдуманный.

ну а о чем тогда говорить ?
Только конкретика переходит в конкретику...
Например, если то, что ниже это реальность:
sqrt0805
Разрабатываю систему учета документации по персоналу. Учитываются: свидетельство о рождении, школьный аттестат, диплом, паспорт, медицинский полис, списки поощрений сотрудников и т.д. Всего видов документов на данный момент 16. У многих из них одинаковые поля: номер, дата выдачи, кем выдан, срок действия, и т.д.

То:
Персонал - это организация, а это отдел кадров...
Зачем долбить все эти данные общие и не общие в учет документов?
Все равно есть карточка сотрудника где это всё есть так или иначе...
А для хранения самих документов достаточно одной таблицы:
Код Сотрудника + Тип Документа + Дата Документа + Номер Документа + Скан Документа (для поощрений не нужен, кому нужно найдет сам приказ)
Тип Документа (свидетельство, паспорт, ...)
Дата Документа - и так понятно...
Номер документа (серийный номер или серия+номер)
Ну может быть +- еще пару параметров...

По уму-то документ сам нужен (скан), когда есть сомнения в подлинности введенных данных или их полноты не достаточно...

Это был ответ на ту конкретику, которую я нашел в вопросе...
И да - для каждого документа - отдельная таблица - это задница... в период эксплуатации возможно изменение схемы БД, скорее всего влекущее за собой изменение и интерфейса...
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115627
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqrt0805
Не могли бы посоветовать литературу на данную тему?


Что либо про основы баз данных. Нормализация обсуждается везде, а логических моделей хранения не так много.

Обратите внимание, что EAV это концепция, которую можно и нужно совмещать с другими структурами. Гибкость имеет стоимость. В чистом виде я бы применял это только на этапе прототипирования если не понятна еще структура данных и требования к системе меняются.
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115728
ЮВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqrt0805
Доброго времени суток! Всего видов документов на данный момент 16. У многих из них одинаковые поля: номер, дата выдачи, кем выдан, срок действия, и т.д.
.


Реляционная модель данных предполагает, что одинаковые данные (ключевые сущности) должны храниться в БД в одном месте.
Например, номер паспорта должен храниться в одном месте (таблице), а не, скажем, в 10 таблицах. Т. е. при корректировке номера паспорта (например, при его восстановлении после утери) он корректируется в одной таблице, а не в 10.
При этом дополнительные атрибуты объекта (например, "Дата выдачи", "Срок действия") хранятся в основной таблице "Паспорта".
Поле "Кем выдан" может содержать ссылку на запись справочника (отдельной таблицы) "Паспортные отделения РУВД".
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115772
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮВ, автор спрашивает о том, как хранить "советские паспорта", "российские паспорта" и "загранпаспорта" - в одной таблице или в трёх разных.
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115791
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Таблица "сотрудники" (id, фио и прочие, если нужны).
2. Таблица "документы сотрудника" (id документа из атрибутов документа, id сотрудника).
3. Таблица "Атрибуты документа" (id документа, Номер, Название или тип атрибута, значение атрибута).
4. Таблица "Типы атрибута" - по желанию, так как можно список закодировать и без таблицы.

Это самый простой вариант.
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115829
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можно добавить признак актуальности документа, т.к. документ может быть аннулирован/утерян с выдачей нового документа.
Может понадобиться возможность проверки данных и старого и нового паспорта.
Возможно понадобиться введение признака "Дубликат документа" и "Действителен до даты ХХХ".
Ну и комментарий должен быть обязательно. В нем можно указывать специфическую информацию для документа (присвоенную категорию, квалификацию, допуски, разряды, аттестацию и пр.).
Может быть даже сделать это в XML/JSON структуре.
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115880
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильнее будет их вообще не хранить, ибо персональные данные и всё такое...
Геморроя больше чем толка.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40115927
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Правильнее будет их вообще не хранить, ибо персональные данные и всё такое...

+++++
но это нужно делать грамотно...
Давать возможность вводить или сканы или реквизиты или и то и другое, но как бы доп опцией, чтобы их наличие/отсутствие не влияло на предметное функционирование проекта...
тогда те же кадровики, подолбив и просканировав неделю скажут - да ну его нахрен, вон оно всё в папке в шкафу стоит и пока хватит, а там видно будет... и на этом всё обычно заканчивается...
Причем так всегда, везде и во всем...
То все орут - нам нужен строгий учет техники по каждому изделию!
Дя системного блока: материнская плата, тип процессора, память (тип и объем), параметры видео карты...
Для монитора: производитель, марка, размер экрана в дюймах, максимальное разрешение, плоский или нет...
бла... бла... бла...
Корячишься, корячишься, через год залазишь в базу, а там кроме типа устройства, названия, инв. номера и ответственного больше и нет нихрена... и ничо, работают, все счастливы...
Просто те кто орёт что им всё нужно, понимают что это всё они будут вводить сами - когда получают готовый продукт...
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40116344
s_ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqrt0805

Но вот вопрос по литературе остается открытым...

Дейт. Введение в системы баз данных.
))
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40124042
cinas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stanislav P,

Это больше смахивает на вариант "не запариваться"
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40124099
Stanislav P
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cinas, это смахивает на вариант, какое ТЗ, такое и решение. Да и зачем плодить сущности без необходимости? Кроме того, у автора есть вопросы, на которые в моём сообщении дан ответ, как лучше, универсальнее решить поставленную задачу.
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40125177
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Одна таблица или несколько?
    #40125193
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
p.s. выше 6NF (https://habr.com/ru/company/avito/blog/322510/).
Но все же лучше подумать.
авторУ многих из них одинаковые поля: номер
Номер у различных документов может иметь разный формат и ограничения, где-то только цифры и 10 символов, где-то только буквы и спец. символ, а где-то он вообще необязателен и.т.д. Вроде номер - но на самом деле это будет совершенно "разный номер" и мешать их в общем случае не стоит, хотя всё зависит от задачи.
Физически каждый тип документа "уникальный" - нельзя вырвать страницу из паспорта и вставить её в загран. паспорт (это не деталь которая используются в изделии X раз).
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Одна таблица или несколько?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (9): Анонимы (6), Bing Bot, Yandex Bot, RePredeclared 7 мин.
x
x
Закрыть


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