Два отношения «один ко многим» с тремя таблицами - PullRequest
1 голос
/ 22 апреля 2011
import sqlite3

# get connection and cursor objects
conn = sqlite3.connect('iodatabase.sdb')
c = conn.cursor()

# create tables
c.execute('''create table grand_parent (
    id integer primary key autoincrement,
    name text
)''')


c.execute('''create table parent (
    id integer primary key autoincrement,
    name text
    grand_parent_id text,
    FOREIGN KEY(grand_parent_id) REFERENCES grand_parent(name)
)''')

c.execute('''create table child (
    id integer primary key autoincrement,
    name text,
    module text,
    type text,
    desc text,
    parent_id text,
    FOREIGN KEY(parent_id) REFERENCES parent(name)
)''')

c.execute("INSERT INTO grand_parent VALUES(null, 'AS1')")

c.execute("INSERT INTO parent VALUES(null, 'Parent1', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child1', 'AO', 'CVXY', '1', 'Parent1', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child2', 'AO', 'CVXY', '1', 'Parent1', 'AS1')"
c.execute("INSERT INTO child VALUES(null, 'Child3', 'AI', 'FTRE', '1', 'Parent1', 'AS1')"
c.execute("INSERT INTO child VALUES(null, 'Child4', 'AI', 'FTRE', '1', 'Parent1', 'AS1')")

c.execute("INSERT INTO parent VALUES(null, 'Parent2', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child1', 'AO', 'CVXY', '1', 'Parent2', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child6', 'AI', 'FTRE', '1', 'Parent2', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child4', 'BO', 'MESR', '1', 'Parent2', 'AS1')")

Привет всем,

У меня есть три стола. Один будет прародителем, один будет прародителем, а последний будет дочерним столом. Я имею в виду, я хочу, чтобы мои дочерние данные знали, к какому из родителей и какому из них они относятся. Кроме того, я хочу, чтобы мои родительские данные знали, к какому из них они принадлежат. Я пытался сделать это сам. Но я не мог. Как мне установить отношения между таблицами? Как должны быть структуры таблицы?

Заранее спасибо.

EDIT

Игнорировать код. Просто настройте три таблицы в raw sql, чтобы выполнить требуемое соотношение. Я впервые делаю такую ​​вещь, и мне нужно руководство.

1 Ответ

2 голосов
/ 02 мая 2011

Если я понял:

проблема здесь: FOREIGN KEY(parent_id) REFERENCES parent(name) и будет FOREIGN KEY(parent_id) REFERENCES parent(id). Ссылочный идентификатор вместо ИМЯ.

Ссылаясь на родительскую таблицу, посредством запроса вы можете вернуть запись деда из дочерней таблицы.

Пожалуйста, прокомментируйте, если это не то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...