astrodatagui: StarsDB: improve database structure
This commit is contained in:
@@ -21,6 +21,7 @@ class StarDB():
|
||||
instance = StarDB(dbName)
|
||||
StarDB.__instances.append(instance)
|
||||
StarDB.__dbNames.append(dbName)
|
||||
return instance
|
||||
|
||||
def __init__(self, dbName: str):
|
||||
if(dbName in StarDB.__dbNames):
|
||||
@@ -59,28 +60,19 @@ class StarDB():
|
||||
|
||||
self.dbCursor.execute("""CREATE TABLE IF NOT EXISTS sequenceSourceNames
|
||||
(
|
||||
sequenceSourceNameID INTEGER NOT NULL,
|
||||
name TEXT UNIQUE,
|
||||
PRIMARY KEY (sequenceSourceNameID, name)
|
||||
);""")
|
||||
|
||||
self.dbCursor.execute("""CREATE TABLE IF NOT EXISTS sequences
|
||||
(
|
||||
sequencesID INTEGER NOT NULL,
|
||||
sequence INTEGER NOT NULL,
|
||||
PRIMARY KEY (sequencesID, sequence)
|
||||
sourceName TEXT,
|
||||
PRIMARY KEY (sourceName)
|
||||
);""")
|
||||
|
||||
self.dbCursor.execute("""CREATE TABLE IF NOT EXISTS stars
|
||||
(
|
||||
mainName TEXT NOT NULL,
|
||||
sequenceSourceNameID INTEGER NOT NULL,
|
||||
sequencesID INTEGER NOT NULL,
|
||||
filename TEXT,
|
||||
PRIMARY KEY (mainName, sequenceSourceNameID, sequencesID),
|
||||
sourceName TEXT NOT NULL,
|
||||
sequence INTEGER NOT NULL,
|
||||
filename TEXT NOT NULL,
|
||||
PRIMARY KEY (mainName, sourceName, sequence),
|
||||
FOREIGN KEY (mainName) REFERENCES starnames(mainName),
|
||||
FOREIGN KEY (sequenceSourceNameID) REFERENCES sequenceSourceNames(sequenceSourceNameID)
|
||||
FOREIGN KEY (sequencesID) REFERENCES sequences(sequencesID)
|
||||
FOREIGN KEY (sourceName) REFERENCES sequenceSourceNames(sourceName)
|
||||
);""")
|
||||
|
||||
self.insertDefaultValues()
|
||||
@@ -89,13 +81,13 @@ class StarDB():
|
||||
|
||||
def insertDefaultValues(self):
|
||||
sources = ["TESS", "Kepler", "K2"]
|
||||
for i, s in enumerate(sources):
|
||||
for s in sources:
|
||||
self.dbCursor.execute(f"""INSERT OR IGNORE INTO
|
||||
sequenceSourceNames(sequenceSourceNameID, name)
|
||||
VALUES({i}, \"{s}\")""")
|
||||
sequenceSourceNames(sourceName)
|
||||
VALUES(\"{s}\")""")
|
||||
|
||||
def insertStarAlternativeNames(self, mainName: str, altNames):
|
||||
for an in altNames:
|
||||
self.dbCursor.execute(f"""INSERT OR IGNORE INTO
|
||||
starnames(mainName, altName)
|
||||
VALUES(\"{mainName}\", \"{an["ID"]}\")""")
|
||||
VALUES(\"{mainName}\", \"{an["ID"]}\")""")
|
||||
|
||||
Reference in New Issue
Block a user