Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Посоветуйте как лучше создать базу данных о людях/контактах / 20 сообщений из 20, страница 1 из 1
26.01.2018, 00:08
    #39591376
Rockefs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Посоветуйте как лучше создать базу данных о людях/контактах (фамилия, имя, отчество, адрес, телефоны, адреса электронной почты, дата рождения и т.д.), с возможностью отслеживания смены адреса проживания, смены фамилии, то есть чтобы можно было узнать, например, по какому адресу проживал человек два года назад, какая фамилия у него тогда была
+ тот факт, что некоторые типы информации могут быть и по несколько (например, номера телефонов).
Кроме создания по таблице для каждого поля с информацией о человеке с указанием даты создания записи и сроком действия этой информации + поле yes/no для указания актуальности записи, какие еще есть варианты? На сколько правильный мой подход?
Базу думаю создать в Access. Заранее спасибо всем, кто не прошел мимо.


Схема
Persons
- ID
- Birthday
- …
PersonName
- ID
- Name
- StartDate
- EndDate
- Relevance (yes/no)
Person*
- ID
- *
- StartDate
- EndDate
- Relevance (yes/no)

...
Рейтинг: 0 / 0
26.01.2018, 04:21
    #39591396
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
...
Рейтинг: 0 / 0
26.01.2018, 04:24
    #39591397
simply
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Просмотрите шаблоны и примеры, там много чего интересного.
...
Рейтинг: 0 / 0
26.01.2018, 08:53
    #39591425
Rockefs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
simply,
авторПросмотрите шаблоны и примеры, там много чего интересного. - Спасибо, но там нет структуры которая бы отвечала моим требованиям.

автор"с возможностью отслеживания смены адреса проживания, смены фамилии, то есть чтобы можно было узнать, например, по какому адресу проживал человек два года назад, какая фамилия у него тогда была + тот факт, что некоторые типы информации могут быть и по несколько (например, номера телефонов). " - Этого нет в представленном шаблоне, а такой функционал для меня важен.
...
Рейтинг: 0 / 0
26.01.2018, 09:00
    #39591426
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Rockefs(фамилия, имя, отчество, адрес, телефоны, адреса электронной почты, дата рождения и т.д.)
я бы возможно завела 2 таблицы

таб1 -текущая(код1,фамилия, имя, отчество, адрес, телефоны, адреса электронной почты, дата рождения и т.д.

таб2 -архив(код,бкод1,дата, реквизит,значение)
...
Рейтинг: 0 / 0
26.01.2018, 09:11
    #39591433
Focha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Rockefssimply,
авторПросмотрите шаблоны и примеры, там много чего интересного. - Спасибо, но там нет структуры которая бы отвечала моим требованиям.

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

Тогда зачем спрашивать если у вас свое виденье?
...
Рейтинг: 0 / 0
26.01.2018, 09:21
    #39591438
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Проблема в том, что у человека формально может измениться в принципе любой атрибут. Можно сменить имя и фамилию, получить новый СНИЛС, даже можно изменить учётную дату рождения...

Посему предлагаю использовать две базовые таблицы с наворотами.

Первая - таблица Люди, куда включены обязательно присутствующие формально постоянные (редко изменяющиеся) атрибуты. К таковым отношу: ФИО, дата и место рождения, основные учётные номера (ИНН и СНИЛС). Если происходит изменение ЭТИХ атрибутов - то для этого человека вводится ещё одна запись. А для отслеживания в структуру вводится дополнительное поле. Если это актуальные данные - в нём Null, если же данные изменились, и имеется другая, актуальная, запись, то в этом поле находится идентификатор актуальной записи. Возможно, это будет не одна таблица, а набор таблиц (например, сведения о паспортах я бы вынес в отдельную таблицу), но сути это не меняет.

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

Поскольку удаление записей в принципе не предусматривается, надобность в архиве отпадает.

Если есть опасность некорректной работы - можно дополнительно ввести таблицу журналирования изменений, а также дополнительные таблицы, которые за счёт переопределения позволяют вести контроль корректности связей. Ну и соответственно процедуры контроля целостности и восстановления минорных несоответствий.

Такая структура создаёт, конечно, определённые сложности по получению актуальной информации (из-за неограниченности количества изменений и, соответственно, длины цепи от поискового атрибута до актуальной записи - а Access не поддерживает рекурсивных CTE), придётся получение делать на основе VBA-процедур (и, возможно, временных таблиц). Упростить процесс можно за счёт ещё одного переопределения - дополнительной таблицы (запись - актуальная запись).
...
Рейтинг: 0 / 0
26.01.2018, 09:21
    #39591439
Rockefs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
FochaТогда зачем спрашивать если у вас свое виденье? - А Вы какой вариант предложите?!
...
Рейтинг: 0 / 0
26.01.2018, 09:27
    #39591441
Rockefs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
ПЕНСИОНЕРКАRockefs(фамилия, имя, отчество, адрес, телефоны, адреса электронной почты, дата рождения и т.д.)
я бы возможно завела 2 таблицы

таб1 -текущая(код1,фамилия, имя, отчество, адрес, телефоны, адреса электронной почты, дата рождения и т.д.

таб2 -архив(код,бкод1,дата, реквизит,значение) - Да, такой вариант я рассматривал, но проблема в тоом что "Реквизит/Тип информации" может быть разным, когда все данные можно уместить в поле text все ок, а если это файл/картинка/число/дата то такой вариант не сработает, так как у разных записей в таблице не одного типа поля.
...
Рейтинг: 0 / 0
26.01.2018, 09:33
    #39591444
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Rockefsкогда все данные можно уместить в поле text все ок, а если это файл/картинка/число/дата то такой вариант не сработает
Сериализация снимает эти проблемы. А файл/картинка - они вообще должны лежать в файловой системе, а в таблице хранится только ссылка (путь) к файлу (не забывай об ограничении на размер файла БД и то, что при его превышении БД повреждается - сразу, без предупреждения, причём необратимо и невосстановимо).
...
Рейтинг: 0 / 0
26.01.2018, 10:10
    #39591458
Rockefs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
AkinaСериализация снимает эти проблемы. - я так понимаю что это без VBA не устроить и обычному пользователю это будет сложно сделать.

AkinaА файл/картинка - они вообще должны лежать в файловой системе, а в таблице хранится только ссылка (путь) к файлу (не забывай об ограничении на размер файла БД и то, что при его превышении БД повреждается - сразу, без предупреждения, причём необратимо и невосстановимо). - спасибо, знания хороших практиках при проектировании бд и предугадывание возможных проблем никогда не будут лишними.
...
Рейтинг: 0 / 0
26.01.2018, 10:19
    #39591466
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Rockefsбез VBA не устроить и обычному пользователю это будет сложно сделать.
Обычный пользователь работает через интерфейс, созданный программистом, все операции выполняет код, созданный тем же программистом, так что пользователю вообще параллельно, как и каким средствами там что-то выполняется. А уж какой-нить номер телефонный в форму и обезьяна ввести может...
...
Рейтинг: 0 / 0
26.01.2018, 10:28
    #39591468
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Akinaполучить новый СНИЛС
Нельзя, СНИЛС поменяется разве что при смене пола.
...
Рейтинг: 0 / 0
26.01.2018, 11:44
    #39591509
LocksmithPC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Alibek B., в честь чего бы? 15 лет он отработал слесарем и 15 лет секретаршей. Общий стаж трицатка
...
Рейтинг: 0 / 0
26.01.2018, 12:40
    #39591560
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Потому что контрольный разряд СНИЛС зависит от пола и при смене пола номер будет новый.
...
Рейтинг: 0 / 0
26.01.2018, 14:08
    #39591663
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Подобная схема данных называется "звезда" и позволяет реализовать Ваши "хотелки"
См.Form1,остальные открывать с неё
...
Рейтинг: 0 / 0
26.01.2018, 14:11
    #39591666
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
ПыСы: и не обзывайте элементы управления как в примере-давайте им внятные имена
...
Рейтинг: 0 / 0
26.01.2018, 15:11
    #39591740
LocksmithPC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
Alibek B., свят-свят! это тебе кто такое сказал?
...
Рейтинг: 0 / 0
26.01.2018, 15:51
    #39591763
bubucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
eav для - маловероятноменяемых атрибутов...попробовать можно
...
Рейтинг: 0 / 0
26.01.2018, 16:06
    #39591776
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте как лучше создать базу данных о людях/контактах
LocksmithPCAlibek B., свят-свят! это тебе кто такое сказал?
Уже не помню, но кто-то компетентный, с которым я согласовывал ТЗ на ПО.
Зафиксировал в голове с пометкой "достоверно".
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Посоветуйте как лучше создать базу данных о людях/контактах / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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