Data Management
Matthew Barnes
Contents
Navigating the Unix file system 7
Unix pipes, processes and filters 14
Running a process when logged off 14
Elements of an HTTP response 20
Keys and functional dependencies 24
Bad relations and anomalies 29
Aggregate functions with unary operator 34
SQL - Structured Query Language 42
Data definition language (DDL) 42
Data manipulation language (DML) 42
Data Protection and the GDPR 49
| Owner | Group | Other | ||||||||||||||||||
| 
 
 
 | 
 
 
 | 
 
 
 | 
| Owner | Group | Other | ||||||||||||||||||
| 
 
 
 | 
 
 
 | 
 
 
 | 
| Binary | Decimal | Meaning | 
| 000 | 0 | No permissions | 
| 001 | 1 | Execute only | 
| 010 | 2 | Write only | 
| 011 | 3 | Write + Execute | 
| 100 | 4 | Read only | 
| 101 | 5 | Read + Execute | 
| 110 | 6 | Read + Write | 
| 111 | 7 | All permissions | 
| Person accessing | Operation | Type of permission | 
| ‘u’ - user | ‘+’ - grant | ‘r’ = read | 
| ‘g’ - group | ‘-’ - revoke | ‘w’ = write | 
| ‘o’ - others | ‘=’ - set | ‘x’ = execute | 
| ‘a’ - all | 
 | ‘-’ = none | 
| Command | Meaning | 
| screen | Create a new screen | 
| screen -d | Detach from existing screen | 
| screen -list | List available screens | 
| screen -r <id> | Resume screen given ID | 
| CTRL-D | Kill screen | 
| Filter | Function of filter | 
| head | Takes first 10 lines | 
| tail | Takes last 10 lines | 
| sort | Organises data | 
| wc | Prints number of newlines | 
| uniq | Remove duplicate lines | 
| du | Estimate file space usage | 
| xargs | Build + execute command lines | 
| Command | Function of command | 
| find | Search for files in directory hierarchy | 
| tar | Create file archive / extract | 
| gzip/gunzip & zip/unzip | Compress files | 
| nohup | Run command in background | 
| parallel | Run jobs in parallel | 
| basename | Removes parent folders from pathname e.g. basename /home/jsmith = jsmith | 
| cut | Extract sections from each line of input | 
| w3m | Text-based WWW browser | 
More regex syntax:
| Layer | Explanation | Examples | 
| Application | Protocols that software uses to communicate over networks | HTTP (documents), FTP (files), SMTP (sending mail), POP (receiving mail) | 
| Transport | Protocols that manage how the data is sent to the recipient | TCP (establishing a connection, make sure that each system receives messages), UDP (fire and forget) | 
| Internet | Protocols that manage how the packets are structured and distributed | IP, ICMP, IGMP | 
| Link | Protocols concerning the physical hardware used for sending data | DSL, Ethernet, ARP | 
| Method | Meaning | 
| GET | Request for a web page or object from a server | 
| POST | Send data/information about client to server | 
| PUT | Send document to server | 
| DELETE | Delete object on server | 
| HEAD | Request information about page/document | 
| TRACE | Trace proxies or tunnels in path from client to server | 
| OPTION | Determines server capabilities | 
| 
                            <menu id="file" value="File"> | 
| 
                            {"menu": { | 
| 
                            x,y | 
| First name | Last name | Age | Sex | 
| Matthew | Barnes | 19 | M | 
| Elon | Musk | 46 | M | 
| Melinda | Gates | 53 | F | 
| hPdmrLZk | Barnes | 99 | F | 
| First name | Last name | Age | Sex | 
| Matthew | Barnes | 19 | M | 
| Elon | Musk | 46 | M | 
| Melinda | Gates | 53 | F | 
| hPdmrLZk | Barnes | 99 | F | 
| First name | Last name | Age | Sex | 
| Matthew | Barnes | 19 | M | 
| Elon | Musk | 46 | M | 
| Melinda | Gates | 53 | F | 
| hPdmrLZk | Barnes | 99 | F | 
| Matthew | Patrick | 31 | M | 
| Xn | Value | Explanation | 
| X0 | {A, C} | In the beginning, we start with the values in X, that is, the set we want to determine if it is a superkey or not. | 
| X1 | {A, C} ∪ {E, H} | In F, there is a C → EH, and we have a ‘C’ in X0. Therefore, we can union the result of that functional dependency with our X and increment its index. | 
| X1 | {A, C, E, H} | It should now look like this. | 
| X2 | {A, C, E, H} ∪ {H} | In F, there is an AC → H, and we have an ‘A’ and a ‘C’ in X1, so we can union ‘H’ with our X. | 
| X2 | {A, C, E, H} | Hmm, that didn’t seem to do anything. Additionally, there are no more functional dependencies of interest for us to look at. Therefore, this will be our output: this is {A, C}+. | 
| Xn | Value | Explanation | 
| X0 | {A, B} | In the beginning, we start with the values in X, that is, the set we want to determine if it is a superkey or not. | 
| X1 | {A, B} ∪ {C, D} | In F, there is an AB → CD, and we have an ‘A’ and a ‘B’ in X0. Therefore, we can union the result of that functional dependency with our X and increment its index. | 
| X1 | {A, B, C, D} | It should now look like this. | 
| X2 | {A, B, C, D} ∪ {E, H} | In F, there is a C → EH, and we now have a ‘C’ in X1 so we can union ‘H’ and ‘E’ with our X. | 
| X2 | {A, B, C, D, E, H} | Now we have this. | 
| X3 | {A, B, C, D, E, H} ∪ {G} | In F, there is a D → G. Since we have ‘D’ in X3, we can union ‘G’ with our X. | 
| X3 | {A, B, C, D, E, H, G} | We’re done here now; there are no more functional dependencies of interest. This is {A, B}+. | 
 symbol.
symbol.
            
| 
 
 
 | 
 | 
 
 
 | = | 
 
 
 | 
| 
 
 
 | 
 | 
 
 
 | = | 
 
 
 | 
 
            
| 
 
 
 | 
 
 
 | ||||||||||||||||||||||||||||||||||||

 ’ is the condition to use, and ‘<relation
                    name>’ is the name of the table of records to
                    check.
’ is the condition to use, and ‘<relation
                    name>’ is the name of the table of records to
                    check.
            
| 
 
 
 | 
 
 
 | 
 
 
 | ||||||||||||||||||||||||||


| 
 
 
 | 
 
 
 | ||||||||||||||||||||||||
 -Join isn’t really an operation that you use;
                    it’s more of a “special query” of a
                    certain form.
-Join isn’t really an operation that you use;
                    it’s more of a “special query” of a
                    certain form.
            
| 
 
 
 | 
 
 
 | 
 
 
 | ||||||||||||||||||||||||||||||||||||||||||||||||
 (Joestar x Birthyears)
(Joestar x Birthyears) 
             -Join, and also uses the projection operation to discard
                    repeated columns.
-Join, and also uses the projection operation to discard
                    repeated columns.
            
 (R1 x R2)
(R1 x R2) 
             -Join’, except it’s packaged into one
                    operation.
-Join’, except it’s packaged into one
                    operation.
            
| 
 
 
 | 
 
 
 | 
 
 
 | ||||||||||||||||||||||||||||||||||||||||||
| STUDENT_ID | AVERAGE_SCORE | 
| 1 | 5.78 | 
| 2 | 4.89 | 
| 3 | 3.68 | 
| 4 | 8.45 | 
| Stand users | ||||
| Stand user | Stand name | Birthyear | Part | Stand Type | 
| Joseph Joestar | Hermit Purple | 1920 | Part 2, Part 3, Part 4 | Tool Stand | 
| Joseph Joestar | Hermit Purple | 1920 | Part 2, Part 3, Part 4 | Integrated Stand | 
| Jotaro Kujo | Star Platinum | 1970 | Part 3, Part 4, Part 5, Part 6 | Close-range Stand | 
| Jotaro Kujo | Star Platinum | 1970 | Part 3, Part 4, Part 5, Part 6 | Range Irrelevant | 
| Josuke Higashikata | Crazy Diamond | 1983 | Part 4 | Close-range Stand | 
| Yoshikage Kira | Killer Queen | 1966 | Part 4 | Close-range Stand | 
| Stand users | |||
| Stand user (PK) | Stand name | Birthyear | Stand type (PK) | 
| Joseph Joestar | Hermit Purple | 1920 | Tool Stand | 
| Joseph Joestar | Hermit Purple | 1920 | Integrated Stand | 
| Jotaro Kujo | Star Platinum | 1970 | Close-range Stand | 
| Jotaro Kujo | Star Platinum | 1970 | Range Irrelevant | 
| Josuke Higashikata | Crazy Diamond | 1983 | Close-range Stand | 
| Yoshikage Kira | Killer Queen | 1966 | Close-range Stand | 
| Stand user parts | |
| Stand user (PK) | Part (PK) | 
| Joseph Joestar | Part 2 | 
| Joseph Joestar | Part 3 | 
| Joseph Joestar | Part 4 | 
| Jotaro Kujo | Part 3 | 
| Jotaro Kujo | Part 4 | 
| Jotaro Kujo | Part 5 | 
| Jotaro Kujo | Part 6 | 
| Stand users | ||
| Stand user (PK) | Stand name | Birthyear | 
| Joseph Joestar | Hermit Purple | 1920 | 
| Jotaro Kujo | Star Platinum | 1970 | 
| Josuke Higashikata | Crazy Diamond | 1983 | 
| Yoshikage Kira | Killer Queen | 1966 | 
| Stand user parts | |
| Stand user (PK) | Part (PK) | 
| Joseph Joestar | Part 2 | 
| Joseph Joestar | Part 3 | 
| Joseph Joestar | Part 4 | 
| Jotaro Kujo | Part 3 | 
| Jotaro Kujo | Part 4 | 
| Jotaro Kujo | Part 5 | 
| Jotaro Kujo | Part 6 | 
| Stand types | |
| Stand name (PK) | Stand type (PK) | 
| Hermit Purple | Tool Stand | 
| Hermit Purple | Integrated Stand | 
| Star Platinum | Close-range Stand | 
| Star Platinum | Range Irrelevant | 
| Crazy Diamond | Close-range Stand | 
| Killer Queen | Close-range Stand | 
| Protagonists | ||
| Part (PK) | Protagonist | Stand name | 
| Part 2 | Joseph Joestar | Hermit Purple | 
| Part 3 | Jotaro Kujo | Star Platinum | 
| Part 4 | Josuke Higashikata | Crazy Diamond | 
| Protagonists | |
| Part (PK) | Protagonist | 
| Part 2 | Joseph Joestar | 
| Part 3 | Jotaro Kujo | 
| Part 4 | Josuke Higashikata | 
| Stands | |
| Protagonist (PK) | Stand name | 
| Joseph Joestar | Hermit Purple | 
| Jotaro Kujo | Star Platinum | 
| Josuke Higashikata | Crazy Diamond | 
| Enrolment | ||
| Student ID (PK) | Subject (PK) | Professor | 
| 101 | Java | P.Java | 
| 101 | C++ | P.Cpp | 
| 102 | Java | P.Java2 | 
| 103 | C# | P.Csharp | 
| 104 | Java | P.Java | 
| Students-Professors | |
| Student ID (PK) | Professor (PK, FK) | 
| 101 | P.Java | 
| 101 | P.Cpp | 
| 102 | P.Java2 | 
| 103 | P.Csharp | 
| 104 | P.Java | 
| Professors-Subjects | |
| Professor (PK) | Subjects | 
| P.Java | Java | 
| P.Cpp | C++ | 
| P.Java2 | Java | 
| P.Csharp | C# | 
| CREATE DATABASE databasename; | 
| 
                            DROP TABLE IF EXISTS Student; | 
| 
                            CREATE TABLE Student | 
| 
                            CREATE TABLE Student 
                              class integer, 
                              FOREIGN KEY (class) REFERENCES Class(ID) | 
| 
 
 
 | 
 
 
 | 
 
 
 | ||||||||||||||||||||||||||||||||
| 
 
 
 | 
 
 
 | 
 
 
 | |||||||||||||||||||||||||||||||||||
| 
 
 
 | 
 
 
 | 
 
 
 | |||||||||||||||||||||||||||||||||||
| 
 
 
 | 
 
 
 | 
 
 
 | ||||||||||||||||||||||||||||||||||||||
| SQL | Relational Algebra | 
| SELECT | 
                            Projection  | 
| FROM | 
                            Cartesian product  | 
| WHERE | 
                            Selection  | 
 TABLE (a cartesian product on two equal
                    relations)
 TABLE (a cartesian product on two equal
                    relations)
             FATHER
 FATHER