(Python, sqlite3) Создание реляционной базы данных?

-4

Я пытаюсь создать реляционную базу данных в python с sqlite3. Я немного суетливый о том, как подключать таблицы в базе данных, чтобы одна сущность соединялась с другой через вторую таблицу. Я хочу, чтобы можно было выполнить поиск по имени человека через веб-страницу, а затем найти родителей, связанных с этим человеком. Я не уверен, что мне нужны две таблицы или три.

Вот как выглядит мой код прямо сейчас:

class Database:
'''Initiates the database.'''
def __init__(self):
self.db = sqlite3.connect('family2.db')
def createTable(self):
r = self.db.execute('''
CREATE TABLE IF NOT EXISTS family2 (
id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
fname TEXT,
sname TEXT,
birthdate TEXT,
deathdate TEXT,
mother TEXT,
father TEXT
)''')
self.db.commit()

g = self.db.execute('''CREATE TABLE IF NOT EXISTS parents(
id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
mother TEXT,
father TEXT)''')
self.db.commit()

b = self.db.execute('''CREATE TABLE IF NOT EXISTS relations(
id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
family2,
parents TEXT
)''')
self.db.commit()

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

спросил(а) 2013-11-21T18:34:00+04:00 6 лет, 6 месяцев назад
0
52

Вам не нужно несколько таблиц; вы можете хранить идентификаторы родителей в самой таблице:

CREATE TABLE persons(
id INTEGER PRIMARY KEY,
name TEXT,
mother_id INT,
father_id INT
);

Затем вы можете найти мать человека, которая идентифицируется по его имени, с таким запросом:

SELECT *
FROM persons
WHERE id = (SELECT mother_id
FROM persons
WHERE name = '...')

ответил(а) 2013-11-21T22:28:00+04:00 6 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема