[英]How to create a proper database structure for domains and subdomains?
我有一個域列表和子域列表。 例如:
域A具有子域a1,a2,a3。
域B具有子域b1,b2,b3。
域C沒有子域
我需要創建數據庫結構,以便可以這樣進行排序:
一種
A1
a2
A3
乙
B1
C
我需要清楚地看到哪個是哪個域的域或子域。
我試圖用ForeignKey到域將域放在一個表中,將子域放在另一表中。
class Domain(Base):
__tablename__ = "domains"
domain_id = Column(Integer(), primary_key=True)
name = Column(String(), unique=True)
class Subdomain(Base):
__tablename__ = "subdomains"
subdomain_id = Column(Integer(), primary_key=True)
name = Column(String(), unique=True)
domain_id = Column(Integer, ForeignKey('domains.domain_id'))
我正在使用此表中的域和子域來創建第三個表:
class Title(Base):
__tablename__ = "titles"
title_id = Column(Integer(), primary_key=True)
domain_id = Column(Integer, ForeignKey('domains.domain_id'))
subdomain_id = Column(Integer, ForeignKey('subdomains.subdomain_id')) -- NULL if that is a Domain
title = Column(String())
status = Column(Integer())
您正在要求一個數據模型和一個SQL查詢。
您可以使用兩個表:
與此查詢:
select name
from
(
select name, name as domain_name, 'domain' as type
from domain
union all
select sd.name, d.name as domain_name, 'subdomain' as type
from domain d
join subdomain sd on sd.domain_id = d.domain_id
)
order by domain_name, type, name;
或者只是一張桌子:
與此查詢:
select name
from
(
select name, name as domain_name, 'domain' as type
from domain
where parent_domain_id is null
union all
select sd.name, d.name as domain_name, 'subdomain' as type
from domain d
join domain sd on sd.parent_domain_id = d.domain_id
)
order by domain_name, type, name;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.