Zrezygnowałem z diagramu ER i od razu podaję stosowne zapytania
W razie pytań pisz śmiało. SQL oczywiście napisany pod SQLite
Mam nadzieję, że referencje napisałem poprawnie w SQLite.
PS: szkoda, że SQLite nie ma typu danych enum. Jest obejście na to w postaci triggera, ale zawsze to obejście, a nie docelowe rozwiązanie.
Tak się zastanawiam czy nie byłoby lepiej oprócz nazwy gwiazdy dodać jeszcze jedno pole z skrótem gwiazdozbioru. To się może przydać w przypadku selectów typu np.: pokaż obserwacje gwiazdek z gwiazdozbioru AND
Można też rozbić nazwę zmiennę na jej faktyczną nazwę np. R i gwiazdozbiór w którym leży np. TRI. I tu właśnie mamy temat do przedyskutowania
Oto moja propozycja relacji (tabelek) w bazie danych:
/*Visual or Photographic Observations */
CREATE TABLE "main"."vphobservations" (
"id_obs" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
"id_czl" INTEGER NOT NULL, /* id of observer from table observers */
"star_name" VARCHAR NOT NULL ,
"jd" VARCHAR NOT NULL ,
"ut" DATETIME NOT NULL ,
"mag" FLOAT NOT NULL ,
"fainter" CHAR NOT NULL DEFAULT 'n', /* n – no, y – yes */
"comp1" FLOAT NOT NULL ,
"comp2" FLOAT NOT NULL ,
"chart" VARCHAR,
"comCode" CHAR,
"notes" TEXT,
"obsType" CHAR NOT NULL DEFAULT 'v', /* v – visual, f – photographic */
FOREIGN KEY (id_czl) REFERENCES observers (id_man)
)
/*CCD or PEP Observations */
CREATE TABLE "main"."ccdpepobservations" (
"id_obs" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
"id_czl" INTEGER NOT NULL, /* id of observer from table observers */
"star_name" VARCHAR NOT NULL ,
"jd" VARCHAR NOT NULL ,
"ut" DATETIME NOT NULL ,
"fainter" CHAR NOT NULL DEFAULT 'n', /* n - no, y - yes */
"mag_err" FLOAT NOT NULL ,
"mag_type" CHAR NOT NULL DEFAULT 's', /* s-standard, d – differential */
"comCode" CHAR,
"trans" CHAR NOT NULL DEFAULT 'n', /* n – no, y – yes */
"filter" VARCHAR,
"comp_label" VARCHAR NOT NULL ,
"comp_mag" FLOAT NOT NULL ,
"check_label" VARCHAR NOT NULL ,
"check_mag" FLOAT NOT NULL ,
"airmass" FLOAT NOT NULL ,
"group" INTEGER,
"chart" VARCHAR NOT NULL ,
"notes" TEXT NOT NULL ,
"obsType" CHAR NOT NULL DEFAULT 'c', /* c – ccd, p - pep*/
FOREIGN KEY (id_czl) REFERENCES observers (id_man)
)
/* Observers */
CREATE TABLE "main"."observers" (
"id_man" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
"aavsoid" VARCHAR, /* observer’s AAVSO code */
"name" VARCHAR NOT NULL ,
"surname" VARCHAR NOT NULL ,
"city" NOT NULL,
"id_sc" INTEGER NOT NULL, /* id of telescope from table telescopes */
FOREIGN KEY (id_sc) REFERENCES telescopes (id_scope)
)
/* Telescopes */
CREATE TABLE "main"."telescopes" (
"id_scope" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
"aperture" FLOAT NOT NULL,
"scopeType" CHAR NOT NULL DEFAULT 'n' /* n – newton, b – binoculars, r – refractor, m – maksutov, o - other */
)