Created
December 9, 2010 14:55
-
-
Save damienix/734786 to your computer and use it in GitHub Desktop.
Stars Database
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Creates ------------------------------------------------------------ | |
CREATE DATABASE stars; | |
-- TRUNCATE TABLE objects; | |
CREATE TABLE objects ( | |
oname VARCHAR(32) PRIMARY KEY, | |
distance FLOAT NULL | |
); | |
CREATE TABLE collections ( | |
colname VARCHAR(32) PRIMARY KEY REFERENCES objects | |
); | |
CREATE TABLE heavenly_bodies ( | |
hname VARCHAR(32) PRIMARY KEY REFERENCES objects, | |
description VARCHAR(1024) NULL, | |
mass FLOAT NULL, | |
age INT NULL, | |
day FLOAT NULL, | |
radius FLOAT NULL, | |
temperature INT NULL | |
); | |
CREATE TABLE stars ( | |
sname VARCHAR(32) PRIMARY KEY REFERENCES heavenly_bodies, | |
spactral_class VARCHAR(32)NULL, | |
root_collection VARCHAR(32) REFERENCES collections NOT NULL | |
); | |
CREATE TABLE planets ( | |
pname VARCHAR(32) PRIMARY KEY REFERENCES heavenly_bodies, | |
orbital_period FLOAT NULL, | |
root_star VARCHAR(32)REFERENCES stars NOT NULL | |
); | |
CREATE TABLE moons ( | |
mname VARCHAR(32) PRIMARY KEY REFERENCES heavenly_bodies, | |
orbital_period FLOAT NULL, | |
root_planet VARCHAR(32)REFERENCES planets NOT NULL | |
); | |
CREATE TABLE constellations( | |
conname VARCHAR(32) PRIMARY KEY REFERENCES collections, | |
stars_marked INT NULL, | |
stars_with_planet INT NULL, | |
stars_bigger INT NULL | |
); | |
CREATE TABLE galaxies ( | |
gname VARCHAR(32) PRIMARY KEY REFERENCES collections, | |
type VARCHAR(16) NOT NULL, | |
apparent_magnitude FLOAT NOT NULL, | |
addarent_dim_x FLOAT NOT NULL, | |
addarent_dim_y FLOAT NOT NULL, | |
root_constellation VARCHAR(32) REFERENCES constellations NOT NULL | |
); | |
CREATE TABLE elements ( | |
atomic_number INT PRIMARY KEY, | |
elname VARCHAR(32) NOT NULL | |
); | |
CREATE TABLE is_built_of ( | |
id INT IDENTITY PRIMARY KEY, | |
percantage FLOAT NOT NULL, | |
element INT REFERENCES elements NOT NULL, | |
object VARCHAR(32) REFERENCES objects NOT NULL | |
); | |
CREATE TABLE discoveries ( | |
id INT IDENTITY PRIMARY KEY, | |
object VARCHAR(32) REFERENCES objects UNIQUE, | |
date DATE NULL | |
); | |
CREATE TABLE scientists ( | |
name VARCHAR(64) PRIMARY KEY | |
); | |
CREATE TABLE finding ( | |
id INT IDENTITY PRIMARY KEY, | |
discovery INT REFERENCES discoveries NOT NULL, | |
discoverer VARCHAR(64) REFERENCES scientists NOT NULL | |
); | |
-- Inserts ----------------------------------------------------------- | |
-- Constellations | |
INSERT INTO objects VALUES ('Milk Way', NULL), | |
('Antilia', NULL), | |
('Aries', NULL); | |
INSERT INTO collections VALUES ('Milk Way'), | |
('Antilia'), | |
('Aries'); | |
INSERT INTO constellations VALUES ('Milk Way', NULL, NULL, NULL), | |
('Antilia', NULL, NULL, NULL), | |
('Aries', NULL, NULL, NULL); | |
-- Galaxies | |
INSERT INTO objects VALUES ('Creter', NULL), | |
('Crux', NULL), | |
('Pae', NULL); | |
INSERT INTO collections VALUES ('Creter'), | |
('Crux'), | |
('Pae'); | |
INSERT INTO galaxies VALUES ('Creter', 'spiral', 2.42, 1.345, 1.23, 'Milk Way'), | |
('Crux', 'spiral', 4.123, 1.234, 3.23, 'Aries'), | |
('Pae', 'eliptic', 5.1234, 1.234, 6.2341, 'Milk Way'); | |
-- Stars | |
INSERT INTO objects VALUES ('Sun', 1); | |
INSERT INTO objects VALUES ('Aim', 29); | |
INSERT INTO objects VALUES ('Caph', 101); | |
INSERT INTO objects VALUES ('Syrius', 50); | |
INSERT INTO objects VALUES ('1 Ari', 542); | |
INSERT INTO objects VALUES ('14 Ari', 32); | |
INSERT INTO objects VALUES ('33 Ari', 135); | |
INSERT INTO objects VALUES ('19 Ari', 600); | |
INSERT INTO heavenly_bodies VALUES ('Sun', 'Our sun', 2022341.0, 10452134, 3.112, 50.32, 1200000000); | |
INSERT INTO heavenly_bodies VALUES ('Aim', '', 2041.0, 3452134, 23.112, 20.32, 23100002); | |
INSERT INTO heavenly_bodies VALUES ('Caph', '', 4022341.0, 852134, 50.112, 500.32, 812000000); | |
INSERT INTO heavenly_bodies VALUES ('Syrius', '', 431.0, 754, 5202, 180.32, 1851200); | |
INSERT INTO heavenly_bodies VALUES ('1 Ari', '', 1241.0, 645, 5112, 180.32, 451200); | |
INSERT INTO heavenly_bodies VALUES ('14 Ari', '', 2141.0, 123434, 76512, 12.32, 2251200); | |
INSERT INTO heavenly_bodies VALUES ('33 Ari', '', 12341.0, 121234, 652, 250.32, 21200); | |
INSERT INTO heavenly_bodies VALUES ('19 Ari', '', 6534, 12124, 520.0, 230.32, 2351200); | |
INSERT INTO stars VALUES ('Sun', 10, 'Milk Way'); | |
INSERT INTO stars VALUES ('Aim', 22, 'Aries'); | |
INSERT INTO stars VALUES ('Caph', 31, 'Crux'); | |
INSERT INTO stars VALUES ('Syrius', 321, 'Crux'); | |
INSERT INTO stars VALUES ('1 Ari', '12H', 'Aries'); | |
INSERT INTO stars VALUES ('14 Ari', 'B8V', 'Aries'); | |
INSERT INTO stars VALUES ('33 Ari', 'G2V', 'Aries'); | |
INSERT INTO stars VALUES ('19 Ari', 'C9G', 'Aries'); | |
-- Planets | |
INSERT INTO objects VALUES ('Mercury', 6300000); | |
INSERT INTO objects VALUES ('Venus', 7300000); | |
INSERT INTO objects VALUES ('Earth', 8300000); | |
INSERT INTO objects VALUES ('Mars', 8900000); | |
INSERT INTO objects VALUES ('Jupiter', 9000000); | |
INSERT INTO objects VALUES ('Saturn', 10000000); | |
INSERT INTO objects VALUES ('Uranus', 11000000), | |
('Pluto', 20000000); | |
INSERT INTO heavenly_bodies VALUES ('Mercury', '', 300000.0, 2345200, 0.3412, 1.00, 12); | |
INSERT INTO heavenly_bodies VALUES ('Venus', '', 8003000.0, 23500, 123.12, 4.12, 100); | |
INSERT INTO heavenly_bodies VALUES ('Earth', 'Sky-blue planet.', 6300.0, 575100, 023, 0.8321, 2120); | |
INSERT INTO heavenly_bodies VALUES ('Mars', 'Planet we are going to live on ;)', 6230.0, 2313, 333, 821, 50); | |
INSERT INTO heavenly_bodies VALUES ('Jupiter', '', 1630.0, 235240, 223, 0.8321, 20); | |
INSERT INTO heavenly_bodies VALUES ('Saturn', '', 8630.0, 23500, 323, 521, 234); | |
INSERT INTO heavenly_bodies VALUES ('Uranus', '', 1630.0, 23100, 5123, 8321, 242), | |
('Pluto', '', 3, 20, 0.3, 300, '-200'); | |
INSERT INTO planets VALUES ('Mercury', 0.41, 'Sun'); | |
INSERT INTO planets VALUES ('Venus', 1.4, 'Sun');; | |
INSERT INTO planets VALUES ('Earth', 10.2, 'Sun'); | |
INSERT INTO planets VALUES ('Mars', 2.1, 'Sun'); | |
INSERT INTO planets VALUES ('Jupiter', 2.2, 'Sun') | |
INSERT INTO planets VALUES ('Saturn', 7.2, 'Sun'); | |
INSERT INTO planets VALUES ('Uranus', 20.1, 'Sun'), | |
('Pluto', 10, 'Sun'); | |
-- Moons | |
INSERT INTO objects VALUES ('Europa', 31.1), | |
('Moon', 112.1), | |
('Deimos', 12.1), | |
('Phobos', 30); | |
INSERT INTO heavenly_bodies VALUES ('Europa', '', 3.0, 2345200, 0.3412, 1.00, 122), | |
('Moon', '', 8.0, 2300, 13.12, 4.12, 10), | |
('Deimos', '', 60.0, 260, 0.12, 0.8321, 140), | |
('Phobos', '', 4, 234, 0.5, 0.9, 80); | |
INSERT INTO moons VALUES ('Europa', 1.2, 'Jupiter'), | |
('Moon', 2.2, 'Earth'), | |
('Deimos', 0.7, 'Mars'), | |
('Phobos', 0.07, 'Mars'); | |
-- Elements | |
INSERT INTO elements VALUES (1, 'Gal'); | |
INSERT INTO elements VALUES (2, 'Hel'); | |
INSERT INTO elements VALUES (3, 'Arsen'), | |
(5, 'Boron'), | |
(6, 'Carbon'), | |
(7, 'Nitrogen'), | |
(8, 'Oxygen'), | |
(9, 'Fluorine'), | |
(10, 'Neon'), | |
(11, 'Sodium'); | |
-- Built of | |
INSERT INTO is_built_of VALUES (3.134, 1, 'Milk Way'); | |
INSERT INTO is_built_of VALUES (6.123, 2, 'Pae'); | |
INSERT INTO is_built_of VALUES (0.12, 3, 'Crux'); | |
INSERT INTO is_built_of VALUES (6.14, 1, 'Pae'), | |
(20, 6, 'Earth'), | |
(5.3, 8, 'Earth'), | |
(0.04, 10, 'Earth'), | |
(33.2, 6, 'Mars'), | |
(1.12, 7, 'Mars'); | |
-- Scientists | |
INSERT INTO scientists VALUES ('Damian Skrodzki') | |
INSERT INTO scientists VALUES ('Pawel Matuszewski'); | |
INSERT INTO scientists VALUES ('Jan Kowalski'); | |
INSERT INTO scientists VALUES ('Ela Rogowska'); | |
INSERT INTO scientists VALUES ('Tomcio Paluch'); | |
INSERT INTO scientists VALUES ('Cezary Andryskowski'); | |
-- Discoveries | |
INSERT INTO discoveries VALUES ('Milk Way', '1000-01-01'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Damian Skrodzki'); | |
INSERT INTO discoveries VALUES ('Crux', '1996-01-05'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Damian Skrodzki'); | |
INSERT INTO discoveries VALUES ('Sun', '2010-12-08'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Damian Skrodzki'); | |
INSERT INTO discoveries VALUES ('Aim', '2000-12-08'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Damian Skrodzki'); | |
INSERT INTO discoveries VALUES ('Caph', '1990-12-08'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Damian Skrodzki'); | |
INSERT INTO discoveries VALUES ('Earth', '2004-12-08'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Tomcio Paluch'); | |
INSERT INTO discoveries VALUES ('Pae', '1996-01-05'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Jan Kowalski'); | |
INSERT INTO discoveries VALUES ('Antilia', '1996-07-15'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Jan Kowalski'); | |
INSERT INTO discoveries VALUES ('Aries', '1804-01-23'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Cezary Andryskowski'); | |
INSERT INTO discoveries VALUES ('Moon', '2010-12-08'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Cezary Andryskowski'); | |
INSERT INTO discoveries VALUES ('Jupiter', '2010-09-08'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Pawel Matuszewski'); | |
INSERT INTO discoveries VALUES ('Mars', '2010-12-10'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Pawel Matuszewski'); | |
INSERT INTO discoveries VALUES ('Europa', '2010-02-08'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Ela Rogowska'); | |
INSERT INTO discoveries VALUES ('Venus', '2010-03-08'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Ela Rogowska'); | |
INSERT INTO discoveries VALUES ('Deimos', '2010-11-08'); | |
INSERT INTO finding VALUES (IDENT_CURRENT('discoveries'), 'Ela Rogowska'); | |
-- Selects ------------------------------------------------------------------ | |
-- Wypisuje wszystkie obiekty odkryte przez "Damian Skrodzki" | |
-- w chronoligicznej kolejności | |
SELECT discoveries.date "Data odkrycia", discoveries.object "Obiekt" | |
FROM finding f, discoveries | |
WHERE f.discoverer = 'Damian Skrodzki' and | |
discoveries.id = f.discovery | |
ORDER BY discoveries.date; | |
-- Konstalacja zawierajca najwicej galaktyk + gwiazd(bez tych w galaktykach) | |
select top 1 c.conname "Największa konstelacja" | |
from constellations c | |
order by ((select COUNT(*) | |
from stars s | |
where s.root_collection = c.conname)+ | |
(select COUNT(*) | |
from galaxies g | |
where g.root_constellation = c.conname)) desc; | |
-- Liczba gwiazd (samotnych + tych z galaktyk) dla każdej konstelacji | |
select conname "Nazwa gwiazdozbioru", (select count(*) | |
from galaxies, stars | |
where galaxies.root_constellation=conname | |
and stars.root_collection=gname) as "W galaktykach", (select COUNT(*) | |
from stars | |
where root_collection=conname) as "Samotnych gwiazd", (select count(*) | |
from galaxies, stars | |
where galaxies.root_constellation=conname | |
and stars.root_collection=gname) + (select COUNT(*) | |
from stars | |
where root_collection=conname) as "Suma gwiazd" | |
from constellations c | |
order by ("Suma gwiazd") desc; | |
-- Wszyskie księżyce układu słonecznego malejąco wg masy | |
select mname as 'Nazwa księżyca', mass as "Masa" | |
from hmoons, planets p | |
where hmoons.root_planet=p.pname and p.root_star='Sun' | |
order by mass desc; | |
-- Wszystkie księżyce w układzie słonecznym posortowane po odległości planety | |
-- wokol ktorej kraza od slonca. | |
select mname as 'Nazwa księżyca', mass as "Masa", | |
objects.distance as "Odległość planety ok słońca" | |
from moons, planets, heavenly_bodies, objects | |
where root_planet=pname and root_star='Sun' and hname=mname and oname=pname | |
order by "Odległość planety ok słońca" desc; | |
-- Dla każdego ksiezyca podac mniejsze od niego planety | |
select mname, h1.mass as 'mass of moon', pname, h2.mass as 'mass of planet' | |
from moons, planets, heavenly_bodies h1, heavenly_bodies h2 | |
where mname=h1.hname and pname=h2.hname | |
and h2.mass < h1.mass | |
order by pname; | |
-- Ilość każdego pierwiastka we wszechświecie posortowana od najczęściej | |
-- występujących. | |
select elname as "Nazwa pierwiastka" , sum(mass*percantage) as "Masa" | |
from is_built_of, heavenly_bodies, elements | |
where atomic_number=element and is_built_of.object=hname | |
group by elname | |
order by "Masa" desc; | |
-- 10 ostatnio odkrytych obiektów + nazwy odkrywców, od ostatnio odkrytego | |
select top 10 date, oname, scientists.name | |
from discoveries, objects, finding f, scientists | |
where object=oname and f.discoverer=scientists.name and f.discovery=discoveries.id | |
order by date desc; | |
-- Najbardziej aktywny odkrywca w ciągu ostatnich 5 lat | |
-- kolekcja (konstalacja lub galaktyka) z największą liczbą gwiazd | |
select top 1 colname, COUNT(*) as sum | |
from stars s, collections c | |
where s.root_collection = colname | |
group by colname | |
order by COUNT(*) desc; | |
-- konstelacja z największą liczbą gwiazd | |
select top 1 conname, COUNT(*) as sum | |
from stars s, constellations c | |
where s.root_collection = conname | |
group by conname | |
order by COUNT(*) desc; | |
-- konstelacja z największą liczbą galaktyk | |
select top 1 conname, COUNT(*) | |
from constellations, galaxies | |
where root_constellation=conname | |
group by conname | |
order by COUNT(*) desc; | |
-- Delete database | |
USE master | |
GO | |
ALTER DATABASE stars | |
SET SINGLE_USER | |
WITH ROLLBACK IMMEDIATE; | |
DROP DATABASE stars; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- Widok łączący informacje o księżycach. 'root_planet' i 'mname' z 'moons' | |
-- oraz 'mass' z tabeli 'heavenly_bodies'. Warunkiem złączenia jest nazwa 'mname' | |
create view hmoons | |
as select mname, mass, root_planet | |
from moons, heavenly_bodies | |
where hname=mname; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment