2012-05-03 2 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 
) 

Вы пытаетесь ссылаться на dairystore.invoice из invoices таблицы, поэтому dairystore.invoice должен быть идентификатор записи. В вашем коде dairystore.invoice не может быть идентификатором записи, поскольку он ссылается на program.vendorid, и его значения будут равны идентификаторам записей в таблице program.

+0

делает это, в свою очередь, неверным таблицей счетов? – Isov5

+0

И можете ли вы дать мне быстрый ответ о том, почему мне нужно добавить строку «vendor INTEGER REFERENCES program (vendorid)» для целей знания? Невозможно ли связать номер счета? – Isov5

+0

Добавлено некоторое объяснение. Я не уверен, что это ясно. Нет, ваша таблица счетов-фактур верна. –