[英]How create a favorites table that connects to a customer mysql
我正在嘗試在mysql中實現收藏夾表,該表允許用戶通過ID號將餐廳對象添加到表中。 這是基本概述:有些客戶包含唯一的ID和其他內容。 然后有包含唯一ID和其他內容的餐廳。 我希望客戶能夠擁有收藏夾。 我制作了一個帶有客戶ID的收藏夾表-這是我要查找客戶收藏夾的方式-但隨后我必須硬編碼一定數量的列,以便可以在其中存儲唯一的餐廳ID。
將列動態添加到收藏夾數據庫是否有意義?
否。這是一個多對多關系,通常的實現方法是通過如下所示的聯接表:
users
+----+------+
| id | name |
+----+------+
| 1 | John |
| 2 | Jill |
+----+------+
restaurants
+----+------------+
| id | name |
+----+------------+
| 1 | McDonald's |
| 2 | Subway |
| 3 | Chipotle |
+----+------------+
favorites
+---------+---------------+
| user_id | restaurant_id |
+---------+---------------+
| 1 | 2 |
| 1 | 3 |
| 2 | 3 |
+---------+---------------+
favorites
表中的每一行都是“用戶喜歡的餐廳”關系。 在這種情況下,沒人喜歡麥當勞,約翰喜歡Subway,約翰和吉爾都喜歡Chipotle。
SQLAlchemy對這種模式有出色的支持:
class Favorite(Base):
__tablename__ = "favorites"
user_id = Column(Integer, ForeignKey("users.id"), primary_key=True)
restaurant_id = Column(Integer, ForeignKey("restaurants.id"), primary_key=True)
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
...
favorites = relationship("Restaurant", secondary=Favorite.__table__)
class Restaurant(Base):
__tablename__ = "restaurants"
id = Column(Integer, primary_key=True)
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.