0

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)""")
4

1 に答える 1

1

いいえ、dairystoreテーブルに間違いがあります。次のようになります。

CREATE TABLE dairystore (
  invoice INTEGER  PRIMARY KEY,
  vendor INTEGER REFERENCES program(vendorid), 
  date VARCHAR
)

テーブルから参照しようとしているので、レコードのIDであるdairystore.invoice必要があります。コード内でレコードのIDにすることはできません。これは、それが参照されており、その値がテーブル内のレコードのIDと等しくなるためです。invoicesdairystore.invoicedairystore.invoiceprogram.vendoridprogram

于 2012-05-03T16:35:21.660 に答える