Index: SQL/DDL/DDL.sql
===================================================================
--- SQL/DDL/DDL.sql	(revision c506097643ee3416563eb866ea22d706d1c98291)
+++ SQL/DDL/DDL.sql	(revision 222d78456c117f6b7cea3a1cf6bcb96b564137c5)
@@ -2,5 +2,5 @@
 (
     album_id  INT          NOT NULL,
-    title     VARCHAR(160) NOT NULL,
+    album_title     VARCHAR(160) NOT NULL,
     artist_id INT          NOT NULL,
     CONSTRAINT album_pkey PRIMARY KEY (album_id)
@@ -10,5 +10,5 @@
 (
     artist_id INT NOT NULL,
-    name      VARCHAR(120),
+    artist_name      VARCHAR(120),
     CONSTRAINT artist_pkey PRIMARY KEY (artist_id)
 );
@@ -43,5 +43,5 @@
 (
     genre_id INT NOT NULL,
-    name     VARCHAR(120),
+    genre_name     VARCHAR(120),
     CONSTRAINT genre_pkey PRIMARY KEY (genre_id)
 );
@@ -63,10 +63,9 @@
 CREATE TABLE invoice_line
 (
-    invoice_line_id INT            NOT NULL,
     invoice_id      INT            NOT NULL,
     track_id        INT            NOT NULL,
-    unit_price      NUMERIC(10, 2) NOT NULL,
     quantity        INT            NOT NULL,
-    CONSTRAINT invoice_line_pkey PRIMARY KEY (invoice_line_id)
+    unit_price    NUMERIC(10, 2) NOT NULL,
+    CONSTRAINT invoice_line_pkey PRIMARY KEY (invoice_id, track_id)
 );
 
@@ -96,5 +95,5 @@
     track_id      INT            NOT NULL,
     name          VARCHAR(200)   NOT NULL,
-    album_id      INT,
+    album_id      INT            NOT NULL,
     media_type_id INT            NOT NULL,
     genre_id      INT,
@@ -110,5 +109,5 @@
     price_id SERIAL PRIMARY KEY,
     value    NUMERIC(10, 2) NOT NULL,
-    date     TIMESTAMP      NOT NULL,
+    price_date     TIMESTAMP      NOT NULL,
     track_id INT            NOT NULL
 );
@@ -130,8 +129,5 @@
     state           TEXT,
     country         TEXT,
-    postalcode      TEXT,
-    phone           TEXT,
-    fax             TEXT,
-    email           TEXT,
+    postal_code      TEXT,
     CONSTRAINT address_info_pkey PRIMARY KEY (address_info_id)
 );
Index: SQL/indices/index.sql
===================================================================
--- SQL/indices/index.sql	(revision c506097643ee3416563eb866ea22d706d1c98291)
+++ SQL/indices/index.sql	(revision 222d78456c117f6b7cea3a1cf6bcb96b564137c5)
@@ -89,2 +89,9 @@
 CREATE INDEX idx_album_artist_id
     ON album(artist_id);
+
+-- DROP INDEX IF EXISTS idx_invoice_customer_id;
+-- DROP INDEX IF EXISTS idx_invoice_line_invoice_id;
+-- DROP INDEX IF EXISTS idx_invoice_line_track_id;
+-- DROP INDEX IF EXISTS idx_track_genre_id;
+-- DROP INDEX IF EXISTS idx_track_album_id;
+-- DROP INDEX IF EXISTS idx_album_artist_id;
Index: SQL/invoice_line_changes.sql
===================================================================
--- SQL/invoice_line_changes.sql	(revision 222d78456c117f6b7cea3a1cf6bcb96b564137c5)
+++ SQL/invoice_line_changes.sql	(revision 222d78456c117f6b7cea3a1cf6bcb96b564137c5)
@@ -0,0 +1,52 @@
+ALTER TABLE invoice_line
+    DROP CONSTRAINT invoice_line_pkey;
+
+DROP view rank_list_artists;
+CREATE VIEW rank_list_artists AS
+SELECT
+    ar.name,
+    COUNT(il.invoice_id) AS num_invoices,
+    COALESCE(SUM(i.total), 0) AS money_earned
+FROM artist ar
+LEFT JOIN album al ON ar.artist_id = al.artist_id
+LEFT JOIN track tr ON al.album_id = tr.album_id
+LEFT JOIN invoice_line il ON tr.track_id = il.track_id
+LEFT JOIN invoice i ON il.invoice_id = i.invoice_id
+WHERE ar.deleted_at IS NULL
+GROUP BY ar.name
+ORDER BY money_earned DESC;
+
+
+ALTER TABLE invoice_line
+    DROP COLUMN invoice_line_id;
+
+
+DROP TRIGGER IF EXISTS trg_soft_delete_invoice_line ON invoice_line;
+DROP FUNCTION IF EXISTS soft_delete_invoice_line();
+
+CREATE FUNCTION soft_delete_invoice_line()
+RETURNS trigger
+LANGUAGE plpgsql
+AS $$
+BEGIN
+    UPDATE invoice_line
+    SET deleted_at = NOW()
+    WHERE invoice_id = OLD.invoice_id
+      AND track_id = OLD.track_id;
+    RETURN NULL;
+END;
+$$;
+
+CREATE TRIGGER trg_soft_delete_invoice_line
+AFTER DELETE ON invoice_line
+FOR EACH ROW
+EXECUTE FUNCTION soft_delete_invoice_line();
+
+
+delete
+from invoice_line
+where invoice_id = 2 and track_id=6;
+
+
+ALTER TABLE invoice_line
+    ADD CONSTRAINT invoice_line_pkey PRIMARY KEY (invoice_id, track_id);
Index: SQL/views/rank_list_artists.sql
===================================================================
--- SQL/views/rank_list_artists.sql	(revision c506097643ee3416563eb866ea22d706d1c98291)
+++ SQL/views/rank_list_artists.sql	(revision 222d78456c117f6b7cea3a1cf6bcb96b564137c5)
@@ -1,12 +1,14 @@
+DROP view rank_list_artists;
 CREATE VIEW rank_list_artists AS
-SELECT ar.name,
-       count(il.invoice_line_id) AS num_invoices,
-       COALESCE(SUM(i.total), 0) AS money_earned
+SELECT
+    ar.name,
+    COUNT(il.invoice_id) AS num_invoices,
+    COALESCE(SUM(i.total), 0) AS money_earned
 FROM artist ar
-         LEFT JOIN album al ON ar.artist_id = al.album_id
-         LEFT JOIN track tr ON al.album_id = tr.album_id
-         LEFT JOIN invoice_line il ON tr.track_id = il.track_id
-         LEFT JOIN invoice i on il.invoice_id = i.invoice_id
-where ar.deleted_at is null
+LEFT JOIN album al ON ar.artist_id = al.artist_id
+LEFT JOIN track tr ON al.album_id = tr.album_id
+LEFT JOIN invoice_line il ON tr.track_id = il.track_id
+LEFT JOIN invoice i ON il.invoice_id = i.invoice_id
+WHERE ar.deleted_at IS NULL
 GROUP BY ar.name
 ORDER BY money_earned DESC;
