User:
+–+———–+——-+————–+—–+
| id | surname | name | patronymic | info |
+–+———–+——-+————–+—–+
Phone:
+–+———-+
| id | number |
+–+———-+
Subdivision:
+–+—–+
| id | unit |
+–+—–+
Связующая таблица
us_ph_sub:
+———+———–+—————–+
| user_id | phone_id | subdivision_id |
+———+———–+—————–+
В моделях примерно следующее (models.py):
from app import db us_ph_sub = db.Table('us_ph_sub', db.Column('user_id', db.Integer,db.ForeignKey("user.id"), nullable=False), db.Column('phone_id', db.Integer,db.ForeignKey("phone.id"), nullable=False), db.Column('subdivision_id', db.Integer,db.ForeignKey("subdivision.id"), nullable=False) ) class User(db.Model): id = db.Column(db.Integer, primary_key = True) surname = db.Column(db.String(64), index = True) name = db.Column(db.String(64), index = True) patronymic = db.Column(db.String(64), index = True) info = db.Column(db.String(1024)) def __repr__(self): return '<User %r %r>' % (self.surname, self.name) class Phone(db.Model): id = db.Column(db.Integer, primary_key = True) number = db.Column(db.Integer, unique = True, nullable=False) def __repr__(self): return '<Number %r>' % (self.number) class Subdivision(db.Model): id = db.Column(db.Integer, primary_key = True) unit = db.Column(db.String(128), unique = True, nullable=False) def __repr__(self): return '<Unit %r>' % (self.unit)
Если кто знает как правильно связать эти таблицы, напишите пожалуйста. Выборки в итоге должны получаться:
1) по подразделениям (Subdivision)
2) по телефону (Phone)
3) по имени, или фамилии, или отчеству