CREATE TABLE AstronomicalObject (
-- AstronomicalObject has AstronomicalObject Code, AstronomicalObjectCode varchar(12) NOT NULL, -- AstronomicalObject is involved in Orbit, IsInOrbit bit NULL, -- maybe AstronomicalObject has Mass, Mass Real(32) NULL, -- maybe AstronomicalObject is a Moon and Moon has Moon Name, MoonName varchar(256) NULL, -- AstronomicalObject is involved in Orbit and Orbit is around AstronomicalObject and AstronomicalObject has AstronomicalObject Code, OrbitCenterAstronomicalObjectCode varchar(12) NULL, -- AstronomicalObject is involved in Orbit and maybe Orbit has a synodic period of Nr Days, OrbitNrDays Real(32) NULL, -- maybe AstronomicalObject is a Planet and Planet has Planet Name, PlanetName varchar(256) NULL, PRIMARY KEY(AstronomicalObjectCode), FOREIGN KEY (OrbitCenterAstronomicalObjectCode) REFERENCES AstronomicalObject (AstronomicalObjectCode)
) GO
CREATE VIEW dbo.MoonInAstronomicalObject_Name (MoonName) WITH SCHEMABINDING AS
SELECT MoonName FROM dbo.AstronomicalObject WHERE MoonName IS NOT NULL
GO
CREATE UNIQUE CLUSTERED INDEX PK_MoonInAstronomicalObject ON dbo.MoonInAstronomicalObject_Name(MoonName) GO
CREATE VIEW dbo.PlanetInAstronomicalObject_Name (PlanetName) WITH SCHEMABINDING AS
SELECT PlanetName FROM dbo.AstronomicalObject WHERE PlanetName IS NOT NULL
GO
CREATE UNIQUE CLUSTERED INDEX PK_PlanetInAstronomicalObject ON dbo.PlanetInAstronomicalObject_Name(PlanetName) GO