Как правильно настроить схему?

#mysql #database-design

Вопрос:

Моя проблема: То, что я хотел бы сделать, — это добавить возможность для пользователя связывать свое меню с другим пользователем. Разрешение любых изменений в меню от любого пользователя отображается для обоих пользователей.

Мой текущий мыслительный процесс: я добавил поле «присоединенный пользователь», но это выглядит неправильно. Было бы лучше сделать отдельную таблицу для меню, а затем вытащить ее оттуда? Или есть более правильный/эффективный способ сделать это?

Ниже приведена моя схема: введите описание изображения здесь

*Редактировать

Извините за поздний ответ. Кажется, я понял.

введите описание изображения здесь

Комментарии:

1. Может ли меню быть общим для группы пользователей или это всегда просто пара?

2. Ну, изначально я предполагал только пару, но было бы более разумно, чтобы ею делилась группа.

3. Разве у «меню» не должно быть «названия», а не «рецепта»?

Ответ №1:

Вместо добавления menu_user menu таблицы создайте таблицу отношений, которая связывает всех пользователей, совместно использующих меню:

 CREATE TABLE menu_users (  id INT(10) PRIMARY KEY AUTO_INCREMENT,  user_id INT(10),  menu_id INT(10),  UNIQUE INDEX (user_id, menu_id),  FOREIGN KEY (user_id) REFERENCES users (id),  FOREIGN KEY (menu_id) REFERENCES menu (id) );