gpt4 book ai didi

带有外键列表的 SQLite 字段

转载 作者:行者123 更新时间:2023-12-03 09:26:30 31 4
gpt4 key购买 nike

我正在构建一个 SQLite 数据库来保存我的房地产经纪人的列表。我已经能够使用外键来识别每个代理的列表,但我想在每个代理的记录中创建一个列表;从代理商和列表之间的一对一关系转变为一对多关系。

看这里:http://www.sqlite.org/draft/foreignkeys.html ,没有提到“外键列表”字段。我正在尝试的可行吗?

我认为,作为一种解决方法,我可能会制作一个包含关系本身的表,但这似乎不是一个非常干净的解决方案。我看了这个帖子:SQLite foreign key examples ,但我不确定我的元素是否与他们在那里描述的多对多关系相似。

我也愿意接受有关如何做得更好的建议。我是否应该在实际列表中包含列表代理的名称并从那里进行查询?

CREATE TABLE listings
(
listing_id INTEGER PRIMARY KEY AUTOINCREMENT,
listing_address TEXT UNIQUE NOT NULL,
acq_date DATE
)

CREATE TABLE agent
(
agent_id INTEGER PRIMARY KEY AUTOINCREMENT,
agent_name TEXT NOT NULL,
agent_listings INTEGER,
FOREIGN KEY (agent_listings) REFERENCES listings (listing_id) NOT NULL
)

最佳答案

您需要将外键添加到 listings 表中;对于一对多关系,记录外键的是“多”方。

CREATE TABLE listings
(
listing_id INTEGER PRIMARY KEY AUTOINCREMENT,
listing_address TEXT UNIQUE NOT NULL,
acq_date DATE
agent_id INTEGER,
FOREIGN KEY (agent_id) REFERENCES agent (agent_id)
)

CREATE TABLE agent
(
agent_id INTEGER PRIMARY KEY AUTOINCREMENT,
agent_name TEXT NOT NULL,
)

如果您希望列表由多个代理处理(处于多对多关系),则必须添加链接表:

CREATE TABLE listings
(
listing_id INTEGER PRIMARY KEY AUTOINCREMENT,
listing_address TEXT UNIQUE NOT NULL,
acq_date DATE
)

CREATE TABLE agent
(
agent_id INTEGER PRIMARY KEY AUTOINCREMENT,
agent_name TEXT NOT NULL,
)

CREATE TABLE agent_listings
(
agent_id INTEGER NOT NULL,
listing_id INTEGER NOT NULL,
UNIQUE (agent_id, listing_id),
FOREIGN KEY (agent_id) REFERENCES agent (agent_id),
FOREIGN KEY (listing_id) REFERENCES listings (listing_id),
)

关于带有外键列表的 SQLite 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20572158/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com