Sobes.tech
Junior — Middle
95

Můžete vysvětlit koncept složení v objektově-relačních zobrazeních (ORM)?

Odpověď od AI

sobes.tech AI

V ORM (objektově-relační mapování) je kompozice způsob, jak modelovat vztahy mezi objekty, kdy jeden objekt obsahuje jiný jako součást své struktury.

Například, pokud máte modely User a Profile, a profil je součástí uživatele, pak User může obsahovat objekt Profile. V databázi se to obvykle odráží pomocí cizích klíčů.

V Python ORM (například SQLAlchemy nebo Django ORM) umožňuje kompozice:

  • Vložit jeden objekt do jiného jako atribut.
  • Spravovat životní cyklus vloženého objektu společně s rodičem.
  • Zjednodušit práci s propojenými daty přístupem přes vlastnosti objektu.

Příklad na SQLAlchemy:

from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Profile(Base):
    __tablename__ = 'profiles'
    id = Column(Integer, primary_key=True)
    bio = Column(String)
    user_id = Column(Integer, ForeignKey('users.id'))

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    profile = relationship('Profile', uselist=False, backref='user')

Zde User obsahuje Profile přes vztah relationship, což je příklad kompozice.