我是否正确设置了这个关系数据库(python、sqlite3)
我正在尝试创建一个连接3个不同表的关系数据库。主程序数据库包含供应商,这些供应商链接到每个供应商的发票,然后发票链接到该发票中购买的项目我是否正确设置了这个关系数据库(python、sqlite3),python,database,sqlite,Python,Database,Sqlite,我正在尝试创建一个连接3个不同表的关系数据库。主程序数据库包含供应商,这些供应商链接到每个供应商的发票,然后发票链接到该发票中购买的项目 tempcur.execute("""CREATE TABLE program ( vendorid INTEGER PRIMARY KEY, vendor TEXT, phone TEXT,
tempcur.execute("""CREATE TABLE program (
vendorid INTEGER PRIMARY KEY,
vendor TEXT,
phone TEXT,
store INTEGER)""")
tempcur.execute("""CREATE TABLE dairystore (
invoice INTEGER REFERENCES program(vendorid),
date VARCHAR)""")
tempcur.execute("""CREATE TABLE invoices(
item INTEGER REFERENCES dairystore(invoice),
shipped VARCHAR,
description TEXT,
weight INTEGER,
price INTEGER,
amount INTEGER)""")
不,您在
奶牛场
表中有一个错误。它应该是以下内容:
CREATE TABLE dairystore (
invoice INTEGER PRIMARY KEY,
vendor INTEGER REFERENCES program(vendorid),
date VARCHAR
)
您正试图从
invoices
表中引用dairystore.invoices
,因此dairystore.invoices
必须是记录的id。在您的代码奶牛场。发票不能是记录的id,因为它是对程序的引用。vendorid
及其值将等于程序表中记录的id。您能快速回答我为什么需要添加“vendor INTEGER REFERENCES program(vendorid)”行以供了解吗?无法链接到发票号吗?添加了一些解释。我不太清楚。不,您的发票表是正确的。谢谢,只有一个问题,那么我认为我应该是好的:dairystore.invoice列不应该自动递增。这是一个将手动插入的数字。这就是为什么我没有使用它作为主键…那么这会如何改变方程?它可以不是自动递增的,但它必须是主键。所以用户插入的值必须是唯一的。