PRAGMA foreign_keys = ON;

CREATE TABLE Persona (
    ID_Persona NOT NULL,
    Nome NOT NULL,
    Cognome NOT NULL,
    Anno_di_Nascita NOT NULL,
    Anno_di_Morte,
    Cittadinanza,
    PRIMARY KEY (ID_Persona),
    CHECK (Anno_di_Nascita BETWEEN 1800 AND 2025),
    CHECK (
        Anno_di_Morte IS NULL
        OR Anno_di_Morte >= Anno_di_Nascita
    )
);

CREATE TABLE CEO (
    ID_Societa NOT NULL,
    ID_Persona NOT NULL,
    PRIMARY KEY (ID_Societa, ID_Persona),
    FOREIGN KEY (ID_Societa) REFERENCES Societa (ID_Societa),
    FOREIGN KEY (ID_Persona) REFERENCES Persona (ID_Persona)
);

CREATE TABLE Fondatore (
    ID_Societa NOT NULL,
    ID_Persona NOT NULL,
    PRIMARY KEY (ID_Societa, ID_Persona),
    FOREIGN KEY (ID_Societa) REFERENCES Societa (ID_Societa),
    FOREIGN KEY (ID_Persona) REFERENCES Persona (ID_Persona)
);

CREATE TABLE Societa (
    ID_Societa NOT NULL,
    Nome_alla_nascita NOT NULL,
    Nome_Attuale NOT NULL,
    Anno_di_Fondazione NOT NULL,
    Luogo_di_Fondazione NOT NULL,
    Sede_Attuale NOT NULL,
    Controllata_da,
    PRIMARY KEY (ID_Societa),
    FOREIGN KEY (Controllata_da) REFERENCES Societa (ID_Societa),
    CHECK (Anno_di_Fondazione BETWEEN 1800 AND 2025)
);

CREATE TABLE Servizi_Streaming (
    Nome NOT NULL,
    Anno_di_Nascita NOT NULL,
    Tipo NOT NULL, -- valori ammessi: 'audio', 'video'
    Costo_Minimo,
    Costo_Massimo,
    Societa_Controllante,
    CHECK (Anno_di_Nascita BETWEEN 1800 AND 2025),
    CHECK (Tipo IN ('audio', 'video')),
    CHECK (
        Costo_Minimo IS NULL
        OR Costo_Minimo >= 0
    ),
    CHECK (
        Costo_Massimo IS NULL
        OR Costo_Massimo >= Costo_Minimo
    ),
    FOREIGN KEY (Societa_Controllante) REFERENCES Societa (ID_Societa)
);

-- INSERIMENTI DATI
INSERT INTO
    Societa (
        ID_Societa,
        Nome_alla_nascita,
        Nome_Attuale,
        Anno_di_Fondazione,
        Luogo_di_Fondazione,
        Sede_Attuale,
        Controllata_da
    )
VALUES
    (
        1,
        'Apple Computer, Inc.',
        'Apple Inc.',
        1976,
        'Cupertino, California, USA',
        'Cupertino, California, USA',
        NULL
    ),
    (
        2,
        'Google, Inc.',
        'Google LLC',
        1998,
        'Menlo Park, California, USA',
        'Mountain View, California, USA',
        NULL
    ),
    (
        3,
        'YouTube, Inc.',
        'YouTube',
        2005,
        'San Bruno, California, USA',
        'San Bruno, California, USA',
        2
    ),
    (
        4,
        'Micro-Soft, Inc.',
        'Microsoft Corp.',
        1975,
        'Albuquerque, New Mexico, USA',
        'Redmond, Washington, USA',
        NULL
    ),
    (
        5,
        'OpenAI, Inc.',
        'OpenAI',
        2015,
        'San Francisco, California, USA',
        'San Francisco, California, USA',
        NULL
    ),
    (
        6,
        'Facebook, Inc.',
        'Meta Platforms, Inc.',
        2004,
        'Cambridge, Massachusetts, USA',
        'Menlo Park, California, USA',
        NULL
    ),
    (
        7,
        'Instagram, Inc.',
        'Instagram',
        2010,
        'San Francisco, California, USA',
        'Menlo Park, California, USA',
        6
    ),
    (
        8,
        'WhatsApp Inc.',
        'WhatsApp',
        2009,
        'Mountain View, California, USA',
        'Menlo Park, California, USA',
        6
    ),
    (
        9,
        'Douyin (Cina)',
        'TikTok',
        2016,
        'Pechino, Cina',
        'Los Angeles, California, USA',
        NULL
    ),
    (
        10,
        'Snapchat, Inc.',
        'Snap Inc.',
        2011,
        'Los Angeles, California, USA',
        'Santa Monica, California, USA',
        NULL
    ),
    (
        11,
        'Amazon.com, Inc.',
        'Amazon.com, Inc.',
        1994,
        'Seattle, Washington, USA',
        'Seattle, Washington, USA',
        NULL
    ),
    (
        12,
        'Tesla Motors, Inc.',
        'Tesla, Inc.',
        2003,
        'Palo Alto, California, USA',
        'Palo Alto, California, USA',
        NULL
    ),
    (
        13,
        'Odeo, Inc.',
        'X',
        2006,
        'San Francisco, California, USA',
        'San Francisco, California, USA',
        NULL
    ),
    (
        14,
        'Spotify AB',
        'Spotify Technology S.A.',
        2006,
        'Stoccolma, Svezia',
        'Stoccolma, Svezia',
        NULL
    );

INSERT INTO
    Persona (
        ID_Persona,
        Nome,
        Cognome,
        Anno_di_Nascita,
        Anno_di_Morte,
        Cittadinanza
    )
VALUES
    (1, 'Tim', 'Cook', 1960, NULL, 'Statunitense'),
    (2, 'Sundar', 'Pichai', 1972, NULL, 'Indiano'),
    (3, 'Neal', 'Mohan', 1977, NULL, 'Statunitense'),
    (4, 'Satya', 'Nadella', 1967, NULL, 'Statunitense'),
    (5, 'Sam', 'Altman', 1985, NULL, 'Statunitense'),
    (
        6,
        'Mark',
        'Zuckerberg',
        1984,
        NULL,
        'Statunitense'
    ),
    (7, 'Adam', 'Mosseri', 1983, NULL, 'Statunitense'),
    (8, 'Will', 'Cathcart', 1987, NULL, 'Statunitense'),
    (9, 'Shou Zi', 'Chew', 1983, NULL, 'Singaporeano'),
    (10, 'Evan', 'Spiegel', 1990, NULL, 'Statunitense'),
    (11, 'Andy', 'Jassy', 1968, NULL, 'Statunitense'),
    (
        12,
        'Elon',
        'Musk',
        1971,
        NULL,
        'Sudafricano, Canadese, Statunitense'
    ),
    (
        13,
        'Linda',
        'Yaccarino',
        1963,
        NULL,
        'Statunitense'
    ),
    (14, 'Daniel', 'Ek', 1983, NULL, 'Svedese'),
    (15, 'Steve', 'Jobs', 1955, 2011, 'Statunitense'),
    (
        16,
        'Steve',
        'Wozniak',
        1950,
        NULL,
        'Statunitense'
    ),
    (17, 'Ronald', 'Wayne', 1934, NULL, 'Statunitense'),
    (18, 'Larry', 'Page', 1973, NULL, 'Statunitense'),
    (19, 'Sergey', 'Brin', 1973, NULL, 'Statunitense'),
    (20, 'Chad', 'Hurley', 1977, NULL, 'Statunitense'),
    (21, 'Steve', 'Chen', 1978, NULL, 'Statunitense'),
    (22, 'Jawed', 'Karim', 1979, NULL, 'Statunitense'),
    (23, 'Bill', 'Gates', 1955, NULL, 'Statunitense'),
    (24, 'Paul', 'Allen', 1953, 2018, 'Statunitense'),
    (
        25,
        'Greg',
        'Brockman',
        1988,
        NULL,
        'Statunitense'
    ),
    (26, 'Ilya', 'Sutskever', 1985, NULL, 'Canadese'),
    (
        27,
        'John',
        'Schulman',
        1987,
        NULL,
        'Statunitense'
    ),
    (
        28,
        'Wojciech',
        'Zaremba',
        1986,
        NULL,
        'Polacco, Statunitense'
    ),
    (
        29,
        'Eduardo',
        'Saverin',
        1982,
        NULL,
        'Singaporeano, Statunitense'
    ),
    (
        30,
        'Andrew',
        'McCollum',
        1983,
        NULL,
        'Statunitense'
    ),
    (
        31,
        'Dustin',
        'Moskovitz',
        1984,
        NULL,
        'Statunitense'
    ),
    (32, 'Chris', 'Hughes', 1983, NULL, 'Statunitense'),
    (
        33,
        'Kevin',
        'Systrom',
        1983,
        NULL,
        'Statunitense'
    ),
    (34, 'Mike', 'Krieger', 1986, NULL, 'Statunitense'),
    (
        35,
        'Jan',
        'Koum',
        1976,
        NULL,
        'Ucraino, Statunitense'
    ),
    (36, 'Brian', 'Acton', 1969, NULL, 'Statunitense'),
    (37, 'Zhang', 'Yiming', 1983, NULL, 'Cinese'),
    (38, 'Bobby', 'Murphy', 1988, NULL, 'Statunitense'),
    (39, 'Reggie', 'Brown', 1989, NULL, 'Statunitense'),
    (40, 'Jeff', 'Bezos', 1964, NULL, 'Statunitense'),
    (41, 'Biz', 'Stone', 1974, NULL, 'Statunitense'),
    (
        42,
        'Evan',
        'Williams',
        1972,
        NULL,
        'Statunitense'
    ),
    (43, 'Noah', 'Glass', 1975, NULL, 'Statunitense'),
    (44, 'Martin', 'Lorentzon', 1969, NULL, 'Svedese');

INSERT INTO
    CEO (ID_Societa, ID_Persona)
VALUES
    (1, 1),
    (2, 2),
    (3, 3),
    (4, 4),
    (5, 5),
    (6, 6),
    (7, 7),
    (8, 8),
    (9, 9),
    (10, 10),
    (11, 11),
    (12, 12),
    (13, 13),
    (14, 14);

INSERT INTO
    Fondatore (ID_Societa, ID_Persona)
VALUES
    (1, 15),
    (1, 16),
    (1, 17),
    (2, 18),
    (2, 19),
    (3, 20),
    (3, 21),
    (3, 22),
    (4, 23),
    (4, 24),
    (5, 12),
    (5, 5),
    (5, 25),
    (5, 26),
    (5, 27),
    (5, 28),
    (6, 6),
    (6, 29),
    (6, 30),
    (6, 31),
    (6, 32),
    (7, 33),
    (7, 34),
    (8, 35),
    (8, 36),
    (9, 37),
    (10, 9),
    (11, 10),
    (11, 38),
    (11, 39),
    (12, 40),
    (13, 13),
    (13, 41),
    (13, 42),
    (13, 43),
    (14, 14),
    (14, 44);

INSERT INTO
    Servizi_Streaming (
        Nome,
        Anno_di_Nascita,
        Tipo,
        Costo_Minimo,
        Costo_Massimo,
        Societa_Controllante
    )
VALUES
    ('Spotify', 2006, 'audio', 0.0, 10.99, 14),
    ('Apple Music', 2015, 'audio', 5.99, 10.99, 1),
    ('YouTube Music', 2015, 'audio', 0.0, 10.99, 2),
    ('YouTube', 2005, 'video', 0.0, 13.99, 2),
    (
        'Amazon Prime Video',
        2006,
        'video',
        8.99,
        14.99,
        11
    ),
    ('Netflix', 1997, 'video', 7.99, 19.99, NULL),
    ('Disney+', 2019, 'video', 7.99, 13.99, NULL),
    ('Hulu', 2007, 'video', 7.99, 17.99, NULL),
    ('Tidal', 2014, 'audio', 0.0, 19.99, NULL);
