On dirait que votre conception ne va permettre à un "appartement" d'être lié à un seul utilisateur.
Je suggère que la clé primaire de chaque table soit une seule colonne entière nommée id
. Et toute référence de clé étrangère à cette clé primaire serait nommée tablename_id
.
Vous devez vérifier la cardinalité des relations. Un «utilisateur» peut-il être associé à plus d'un «appartement»? Un «appartement» peut-il être associé à plus d'un «utilisateur»? Une «image» peut-elle être associée à plus d'un «appartement»? etc.
Lorsque nous trouvons une relation «plusieurs-à-plusieurs», nous résolvons normalement cela avec une table de relations.
Si un « appartement » peut être lié à plus d'un « utilisateur », donné ...
apartment (id PK, ...)
user (id PK, ...)
Nous ajouterons une troisième table, avec la combinaison de clés étrangères uniques
user_apartment (user_id FK, apartment_id FK, UNIQUE KEY (user_id, apartment_id))
Vous semblez avoir un concept de «galerie» qui est distinct de votre concept d '«image». (Pensez en termes d'instances qui peuvent être "identifiées de manière unique" et que vous voulez stocker des informations sur.)
Une image peut-elle être présente dans plusieurs galeries? Une galerie peut-elle avoir plusieurs images? Une galerie peut-elle être associée à plus d'un appartement?
Si une image appartient à exactement une galerie, et une galerie est liée à un seul appartement, alors je ... que la mise en œuvre
gallery (id PK, apartment_id FK, ...)
image (id PK, gallery_id FK, ...)
Quel est le champ de la galerie dans des appartements? Vous n'avez pas besoin d'un champ clé là parce que vous l'avez dans la table gallery_images. – chiborg
@chiborg Peut-être 'gallery' dans' apartments' est un 'booléen'. Cependant, je ne pense pas que ce soit nécessaire. –
un appartement a-t-il eu 2 propriétaires ou plus? – jcho360