2013-11-21 155 views
-1

我想用sqlite3在python中創建一個關係數據庫。我有點煩惱如何連接數據庫中的表,以便一個實體通過第二個表連接到另一個實體。我希望能夠通過網頁搜索人名,然後找到與該人相關的父母。我不知道我是否需要兩張桌子或三張桌子。(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() 

謝謝!

回答

1

你不需要多個表;你可以存儲父母的ID在表本身:

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 = '...') 
+0

我欣賞即時響應,但這個解決方案是我已經提出的。我想了解關係數據庫,因此需要我的數據庫中有兩個表。 – user3018178

+0

當只有一個對象類型(人)時,兩個表格沒有意義。 –