簡體   English   中英

如何創建連接到客戶mysql的收藏夾表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM