Я работал над созданием структуры данных для приложения, над которым я работаю. Одна из вещей, которые ему нужно будет обрабатывать, - это хранить информацию о клиенте/контакте. Я изучал интерфейс нескольких различных программ контактной информации, таких как адресная книга, контакты gmail и т.д.
Я в основном сварил контакт с "сущностью" (личность, компания, роль и т.д.).
- Каждый Entity может иметь несколько записей Адрес, Телефон, E-Mail.
- Каждый из них определяет "отношения" (home/work/assistant и т.д.).
- Entity {1} - {relationship} → {0.. *} Данные
- Entity может иметь несколько полей, которые являются хранилищем данных произвольной формы для других "общих" данных (дни рождения, учетная запись AIM и т.д.).
- Объект {1} - {fieldName} → {0.. *} Данные поля
- Сущность может ссылаться на другую Entity, например, как на сотрудника, супруга
- Entity {0..} < - {relationship} → {0..} Entity
Кто-нибудь выполнил какие-либо SQL-реализации подобных контактных баз данных? Любые идеи/предложения/ловушки, чтобы избежать того, что вы могли бы поделиться с кем-то, кто пытается самостоятельно работать над проектом? Описывает ли я то, что я описал, разумным или сложным?
Один вопрос, скажем, у вас 4 человека, которые все работают в одной компании. Все они имеют один и тот же "рабочий" номер телефона (возможно, с другим расширением). Если число или адрес для "работы" меняются, я хотел бы иметь возможность легко обновлять контакты. Теперь многое из этого сводится к тому, как вы будете использовать базу данных. Я думаю, что это связано с привязкой сотрудника к их соответствующим компаниям, но тогда адрес/номер телефона больше не напрямую связаны с сотрудником. Я как бы дебатирую с тем, чтобы сделать связь между Entity/data многими для многих, позволяя вам прикреплять один и тот же почтовый адрес/номер телефона нескольким людям, а обновление в одном месте может обновлять его во всех местах. Я только что подумал об этом? вытягивает волосы