Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是否正确设置了这个关系数据库(python、sqlite3)_Python_Database_Sqlite - Fatal编程技术网

我是否正确设置了这个关系数据库(python、sqlite3)

我是否正确设置了这个关系数据库(python、sqlite3),python,database,sqlite,Python,Database,Sqlite,我正在尝试创建一个连接3个不同表的关系数据库。主程序数据库包含供应商,这些供应商链接到每个供应商的发票,然后发票链接到该发票中购买的项目 tempcur.execute("""CREATE TABLE program ( vendorid INTEGER PRIMARY KEY, vendor TEXT, phone TEXT,

我正在尝试创建一个连接3个不同表的关系数据库。主程序数据库包含供应商,这些供应商链接到每个供应商的发票,然后发票链接到该发票中购买的项目

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列不应该自动递增。这是一个将手动插入的数字。这就是为什么我没有使用它作为主键…那么这会如何改变方程?它可以不是自动递增的,但它必须是主键。所以用户插入的值必须是唯一的。