Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Created SQL script that creates the tables according to our revised s…
…chema (Not populated)
  • Loading branch information
sec11008 committed Oct 28, 2015
1 parent 9224974 commit 57eb314
Showing 1 changed file with 359 additions and 0 deletions.
359 changes: 359 additions & 0 deletions Chinook_Rev1.sql
@@ -0,0 +1,359 @@

/*******************************************************************************
Drop database if it exists
********************************************************************************/
DROP DATABASE IF EXISTS `Chinook_Rev1`;


/*******************************************************************************
Create database
********************************************************************************/
CREATE DATABASE `Chinook_Rev1`;


USE `Chinook_Rev1`;


/*******************************************************************************
Create Tables
********************************************************************************/
CREATE TABLE `Album`
(
`AlbumId` INT NOT NULL,
`Title` NVARCHAR(160) NOT NULL,
`ArtistId` INT NOT NULL,
CONSTRAINT `PK_Album` PRIMARY KEY (`AlbumId`)
);

CREATE TABLE `ApplePay`
(
`PayId` INT NOT NULL,
`ApplePayToken` VARCHAR(45) NOT NULL,
CONSTRAINT `PK_ApplePay` PRIMARY KEY (`PayId`)
);


CREATE TABLE `Artist`
(
`ArtistId` INT NOT NULL,
`Name` NVARCHAR(120),
CONSTRAINT `PK_Artist` PRIMARY KEY (`ArtistId`)
);

CREATE TABLE `CreditCard`
(
`PayId` INT NOT NULL,
`CreditCardNumber` VARCHAR(45) NOT NULL,
`ExpirationDate` DATE NOT NULL,
CONSTRAINT `PK_CreditCard` PRIMARY KEY (`PayId`)
);

CREATE TABLE `Customer`
(
`PersonId` INT NOT NULL,
`CustomerId` INT NOT NULL,
`Company` NVARCHAR(80),
`SupportRepId` INT,
CONSTRAINT `PK_Customer` PRIMARY KEY (`CustomerId`)
);

CREATE TABLE `Employee`
(
`PersonId` INT NOT NULL,
`EmployeeId` INT NOT NULL,
`Title` NVARCHAR(30),
`ReportsTo` INT,
`BirthDate` DATETIME,
`HireDate` DATETIME,
CONSTRAINT `PK_Employee` PRIMARY KEY (`EmployeeId`)
);

CREATE TABLE `Genre`
(
`GenreId` INT NOT NULL,
`Name` NVARCHAR(120),
CONSTRAINT `PK_Genre` PRIMARY KEY (`GenreId`)
);

CREATE TABLE `GooglePay`
(
`PayId` INT NOT NULL,
`GoogleEmail` VARCHAR(45) NOT NULL,
`GoogleToken` VARCHAR(45) NOT NULL,
CONSTRAINT `PK_GooglePay` PRIMARY KEY (`PayId`)
);

CREATE TABLE `Invoice`
(
`InvoiceId` INT NOT NULL,
`CustomerId` INT NOT NULL,
`InvoiceDate` DATETIME NOT NULL,
`BillingAddress` NVARCHAR(70),
`BillingCity` NVARCHAR(40),
`BillingState` NVARCHAR(40),
`BillingCountry` NVARCHAR(40),
`BillingPostalCode` NVARCHAR(10),
`Total` NUMERIC(10,2) NOT NULL,
`PayId` INT,
CONSTRAINT `PK_Invoice` PRIMARY KEY (`InvoiceId`)
);

CREATE TABLE `InvoiceLine`
(
`InvoiceLineId` INT NOT NULL,
`InvoiceId` INT NOT NULL,
`TrackId` INT NOT NULL,
`UnitPrice` NUMERIC(10,2) NOT NULL,
`Quantity` INT NOT NULL,
CONSTRAINT `PK_InvoiceLine` PRIMARY KEY (`InvoiceLineId`)
);

CREATE TABLE `MediaType`
(
`MediaTypeId` INT NOT NULL,
`Name` NVARCHAR(120),
CONSTRAINT `PK_MediaType` PRIMARY KEY (`MediaTypeId`)
);

CREATE TABLE `MyPlaylist`
(
`PlaylistId` INT NOT NULL,
`Name` NVARCHAR(120),
`CustomerId` INT NOT NULL,
CONSTRAINT `PK_MyPlaylist` PRIMARY KEY (`PlaylistId`)
);

CREATE TABLE `MyPlaylistTrack`
(
`PlaylistId` INT NOT NULL,
`TrackId` INT NOT NULL,
CONSTRAINT `PK_MyPlaylistTrack` PRIMARY KEY (`PlaylistId`, `TrackId`)
);

CREATE TABLE `Orders`
(
`OrderId` INT NOT NULL,
`CustomerId` INT NOT NULL,
CONSTRAINT `PK_Orders` PRIMARY KEY (`OrderId`)
);

CREATE TABLE `OrderTracks`
(
`OrderTrackId` INT NOT NULL,
`OrderId` INT NOT NULL,
`TrackId` INT NOT NULL,
CONSTRAINT `PK_OrderTracks` PRIMARY KEY (`OrderTrackID`)
);

CREATE TABLE `Payment`
(
`PayId` INT NOT NULL,
`CustomerId` INT NOT NULL,
CONSTRAINT `PK_Payment` PRIMARY KEY (`PayId`)
);

CREATE TABLE `Person`
(
`PersonId` INT NOT NULL,
`FirstName` NVARCHAR(40) NOT NULL,
`LastName` NVARCHAR(20) NOT NULL,
`Address` NVARCHAR(70),
`City` NVARCHAR(40),
`State` NVARCHAR(40),
`Country` NVARCHAR(40),
`PostalCode` NVARCHAR(10),
`Phone` NVARCHAR(24),
`Fax` NVARCHAR(24),
`Email` NVARCHAR(60) NOT NULL,
CONSTRAINT `PK_Person` PRIMARY KEY (`PersonID`)
);


CREATE TABLE `Playlist`
(
`PlaylistId` INT NOT NULL,
`Name` NVARCHAR(120),
CONSTRAINT `PK_Playlist` PRIMARY KEY (`PlaylistId`)
);

CREATE TABLE `PlaylistTrack`
(
`PlaylistId` INT NOT NULL,
`TrackId` INT NOT NULL,
CONSTRAINT `PK_PlaylistTrack` PRIMARY KEY (`PlaylistId`, `TrackId`)
);

CREATE TABLE `Track`
(
`TrackId` INT NOT NULL,
`Name` NVARCHAR(200) NOT NULL,
`AlbumId` INT,
`MediaTypeId` INT NOT NULL,
`GenreId` INT,
`Composer` NVARCHAR(220),
`Milliseconds` INT NOT NULL,
`Bytes` INT,
`UnitPrice` NUMERIC(10,2) NOT NULL,
CONSTRAINT `PK_Track` PRIMARY KEY (`TrackId`)
);

CREATE TABLE `TrackURL`
(
`TrackID` INT NOT NULL,
`URL` VARCHAR(45) NOT NULL,
CONSTRAINT `PK_TrackURL` PRIMARY KEY (`TrackID`)
);



/*******************************************************************************
Create Primary Key Unique Indexes
********************************************************************************/

/*******************************************************************************
Create Foreign Keys
********************************************************************************/

ALTER TABLE `ApplePay` ADD CONSTRAINT `FK_ApplePayId`
FOREIGN KEY (`PayId`) REFERENCES `Payment` (`PayId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_ApplePayId` ON `ApplePay` (`PayId`);

ALTER TABLE `Album` ADD CONSTRAINT `FK_AlbumArtistId`
FOREIGN KEY (`ArtistId`) REFERENCES `Artist` (`ArtistId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_AlbumArtistId` ON `Album` (`ArtistId`);

ALTER TABLE `CreditCard` ADD CONSTRAINT `FK_CreditCardPayId`
FOREIGN KEY (`PayId`) REFERENCES `Payment` (`PayId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_CreditCardPayId` ON `CreditCard` (`PayId`);

ALTER TABLE `Customer` ADD CONSTRAINT `FK_CustomerSupportRepId`
FOREIGN KEY (`SupportRepId`) REFERENCES `Employee` (`EmployeeId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_CustomerSupportRepId` ON `Customer` (`SupportRepId`);

ALTER TABLE `Customer` ADD CONSTRAINT `FK_CustomerPersonId`
FOREIGN KEY (`PersonId`) REFERENCES `Person` (`PersonId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_CustomerPersonId` ON `Customer` (`PersonId`);

ALTER TABLE `Employee` ADD CONSTRAINT `FK_EmployeeReportsTo`
FOREIGN KEY (`ReportsTo`) REFERENCES `Employee` (`EmployeeId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_EmployeeReportsTo` ON `Employee` (`ReportsTo`);

ALTER TABLE `Employee` ADD CONSTRAINT `FK_EmployeePersonId`
FOREIGN KEY (`PersonId`) REFERENCES `Person` (`PersonId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_EmployeePersonId` ON `Employee` (`PersonId`);

ALTER TABLE `GooglePay` ADD CONSTRAINT `FK_GooglePayId`
FOREIGN KEY (`PayId`) REFERENCES `Payment` (`PayId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_GooglePayId` ON `GooglePay` (`PayId`);

ALTER TABLE `Invoice` ADD CONSTRAINT `FK_InvoiceCustomerId`
FOREIGN KEY (`CustomerId`) REFERENCES `Customer` (`CustomerId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_InvoiceCustomerId` ON `Invoice` (`CustomerId`);

ALTER TABLE `Invoice` ADD CONSTRAINT `FK_InvoicePayId`
FOREIGN KEY (`PayId`) REFERENCES `Payment` (`PayId`);

CREATE INDEX `IFK_InvoicePayId` ON `Invoice` (`PayId`);

ALTER TABLE `InvoiceLine` ADD CONSTRAINT `FK_InvoiceLineInvoiceId`
FOREIGN KEY (`InvoiceId`) REFERENCES `Invoice` (`InvoiceId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_InvoiceLineInvoiceId` ON `InvoiceLine` (`InvoiceId`);

ALTER TABLE `InvoiceLine` ADD CONSTRAINT `FK_InvoiceLineTrackId`
FOREIGN KEY (`TrackId`) REFERENCES `Track` (`TrackId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_InvoiceLineTrackId` ON `InvoiceLine` (`TrackId`);

ALTER TABLE `MyPlaylist` ADD CONSTRAINT `FK_MyPlaylistCustomerId`
FOREIGN KEY (`CustomerId`) REFERENCES `Customer` (`CustomerId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_MyPlaylistCustomerId` ON `MyPlaylist` (`CustomerId`);

ALTER TABLE `MyPlaylistTrack` ADD CONSTRAINT `FK_MyPlaylistTrackPlaylistId`
FOREIGN KEY (`PlaylistId`) REFERENCES `MyPlaylist` (`PlaylistId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_MyPlaylistTrackPlaylistId` ON `MyPlaylistTrack` (`PlaylistId`);

ALTER TABLE `MyPlaylistTrack` ADD CONSTRAINT `FK_MyPlaylistTrackTrackId`
FOREIGN KEY (`TrackId`) REFERENCES `Track` (`TrackId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_MyPlaylistTrackTrackId` ON `MyPlaylistTrack` (`TrackId`);

ALTER TABLE `Orders` ADD CONSTRAINT `FK_OrdersCustomerId`
FOREIGN KEY (`CustomerId`) REFERENCES `Track` (`TrackId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_OrdersCustomerId` ON `Orders` (`CustomerId`);

ALTER TABLE `OrderTracks` ADD CONSTRAINT `FK_OrderTracksOrderId`
FOREIGN KEY (`OrderId`) REFERENCES `Orders` (`OrderId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_OrdertracksOrderId` ON `OrderTracks` (`OrderId`);

ALTER TABLE `OrderTracks` ADD CONSTRAINT `FK_OrderTracksTrackId`
FOREIGN KEY (`TrackId`) REFERENCES `Track` (`TrackId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_OrdertracksTrackId` ON `OrderTracks` (`TrackId`);

ALTER TABLE `Payment` ADD CONSTRAINT `FK_PaymentCustomerId`
FOREIGN KEY (`CustomerId`) REFERENCES `Customer` (`CustomerId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_PaymentCustomerId` ON `Payment` (`CustomerId`);

ALTER TABLE `PlaylistTrack` ADD CONSTRAINT `FK_PlaylistTrackPlaylistId`
FOREIGN KEY (`PlaylistId`) REFERENCES `Playlist` (`PlaylistId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

ALTER TABLE `PlaylistTrack` ADD CONSTRAINT `FK_PlaylistTrackTrackId`
FOREIGN KEY (`TrackId`) REFERENCES `Track` (`TrackId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_PlaylistTrackTrackId` ON `PlaylistTrack` (`TrackId`);

ALTER TABLE `Track` ADD CONSTRAINT `FK_TrackAlbumId`
FOREIGN KEY (`AlbumId`) REFERENCES `Album` (`AlbumId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_TrackAlbumId` ON `Track` (`AlbumId`);

ALTER TABLE `Track` ADD CONSTRAINT `FK_TrackGenreId`
FOREIGN KEY (`GenreId`) REFERENCES `Genre` (`GenreId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_TrackGenreId` ON `Track` (`GenreId`);

ALTER TABLE `Track` ADD CONSTRAINT `FK_TrackMediaTypeId`
FOREIGN KEY (`MediaTypeId`) REFERENCES `MediaType` (`MediaTypeId`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_TrackMediaTypeId` ON `Track` (`MediaTypeId`);

ALTER TABLE `TrackURL` ADD CONSTRAINT `FK_TrackURLID`
FOREIGN KEY (`TrackID`) REFERENCES `Track` (`TrackID`) ON DELETE NO ACTION ON UPDATE NO ACTION;

CREATE INDEX `IFK_TrackURLID` ON `TrackURL` (`TrackID`);





















0 comments on commit 57eb314

Please sign in to comment.