Я не уверен, как задать этот вопрос, поэтому я буду наглядно продемонстрировать пример.
В таком приложении, как facebook, профиль может иметь несколько ProfilePictures.В любой момент времени одним из них является «выбранный» ProfilePicture (при условии, что ProfilePicture был загружен).
Инстинктивно, я бы смоделировал это как:
Table: Profile
--------------
ProfileID
SelectedProfilePictureId //fk to ProfilePicture
Name, Age, Etc
Table: ProfilePicture
---------------------
ProfilePictureId
ProfileId //fk to Profile, indicating which Profile this picture belongs to
Url, DateTaken, Etc
На данный момент,эти таблицы указывают друг на друга, и мне это кажется «неправильным».Это позволяет легко запрашивать профили без SelectedProfilePictures или получать SelectedPicture профиля, но вставки и обновления немного неудобны.
Это плохая форма?Должна ли таблица Profile быть полностью независимой от таблицы ProfilePicture?Есть ли «правильный» способ смоделировать это в соответствии с теорией проектирования баз данных, или это до усмотрения программиста?