ORM SQLAlchemy 表於表的關係

來源:互聯網
上載者:User

標籤:img   建立   欄位   編號   parent   多對一   ons   int   課程   

1表與表之間三種關係

1.1 一對一關聯性

舉例: 一個丈夫對應一個妻子,一個妻子對應一個丈夫

1.2 一對多關聯性

舉例:一個人可以擁有多輛汽車,要求查詢某個人擁有的所有車輛

分析:這種情況其實也可以採用 一張表,但因為一個人可以擁有多輛汽車,如果採用一張表,會造成冗餘資訊過多。好的設計方式是,人和車輛分別單獨建表,那麼如何將兩個表關聯呢?有個巧妙的方法,在車輛的表中加個外鍵欄位(人的編號)即可。

1.3 多對多關係

例如:學生選課,一個學生可以選修多門課程,每門課程可供多個學生選擇。 
分析:這種方式可以按照類似一對多方式建表,但冗餘資訊太多,好的方式是實體和關係分離並單獨建表,實體表為學生表和課程表,關係表為選修表,其中關係表採用聯合主鍵的方式(由學生表主鍵和課程表主鍵組成)建表。

 

2 SQLAlchemy 表關係使用

2.1 一對多

比如一個父親可以有多個孩子,

class Parent(Base):    __tablename__ = ‘parent‘ id = Column(Integer, primary_key=True) children = relationship("Child")class Child(Base): __tablename__ = ‘child‘ id = Column(Integer, primary_key=True)  parent_id = Column(Integer, ForeignKey(‘parent.id‘))

一對多要建立雙向關係
class Parent(Base):    __tablename__ = ‘parent‘ id = Column(Integer, primary_key=True) children = relationship("Child", back_populates="parent")class Child(Base): __tablename__ = ‘child‘ id = Column(Integer, primary_key=True) parent_id = Column(Integer, ForeignKey(‘parent.id‘)) parent = relationship("Parent", back_populates="children")

2.2 多對一

比如一個父親可以有多個孩子,



ORM SQLAlchemy 表於表的關係

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.