2012-05-03 11 views
0

私は3つのテーブルを接続するリレーショナルデータベースを作ろうとしています。メインプログラムのデータベースにはベンダーが含まれており、各ベンダーの請求書にリンクし、その請求書で購入した品目へのリンクが表示されます。このリレーショナルデータベースを正しく設定しましたか(python、sqlite3)

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)""") 
+2

エラーが表示されますか? –

+2

あなたの質問は何ですか? –

答えて

1

いいえ、dairystoreの間違いをお持ちですか?

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

あなたはinvoicesテーブルからdairystore.invoiceに参照しようとしているので、dairystore.invoiceはレコードのIDである必要があります。それは次のようにする必要があります。あなたのコードでdairystore.invoiceprogram.vendoridへの参照であり、その値はprogramテーブルのレコードのidに等しいので、レコードのIDにすることはできません。

+0

それは順番に私の請求書のテーブルを間違っていますか? – Isov5

+0

そして、ナレッジ目的で 'ベンダーのINTEGER REFERENCESプログラム(ベンダーID)'の行を追加する必要がある理由について、すばやく答えることができますか?請求書番号にリンクすることはできませんか? – Isov5

+0

いくつかの説明を追加しました。わかりません。いいえ、請求書のテーブルは正しいです。 –

関連する問題