CSCI 305 Review for Midterm Exam One

Professor Xiannong Meng
Spring 2018

Our first mid-term exam will take place on February 26th, 2018 in our class time. Students will be allowed to bring one 8.5 by 11 sheet with hand-written information. No other sheets are allowed. Scratch paper will be provided as needed. No electronic device is allowed. The following topics are covered during the first period of the semester and the exam will draw from these topics.

Students are expected to understand the concepts, know how to use them, how to program them when appropriate, in SQLite3 or Python, or both.

  1. Relational database;
  2. SQLite; SQL commands and meta-commands; bulk loading data from CSV files;
  3. Tables, attributes, primary key, foreign keys in a relational database;
  4. Constraints and triggers;
  5. Basic SQLite commands, SFW, conditions, single tables and multiple tables; nested commands; aggregate operations;
    1. select from where
    2. order by
    3. join on
    4. intersect
    5. union
    6. except
    7. avg
    8. count
    9. group by
    10. having
  6. E/R: entities and relations;
  7. How information is represented in ER;
  8. Relations, attributes, representing relation as a table;
  9. Many-to-one, many-to-many, one-to-one relations;
  10. Sub-classes;
  11. Weak entities;
  12. Constraints;
  13. Functional dependency;
  14. First Normal Form;
  15. Boyce-Codd Normal Form (BCNF);
  16. Types of data anomalies: redundant, update anomaly, delete anomaly, insert anomaly;
  17. Armstrong's Rules;
  18. How to use Armstrong's Rules to find functional dependency;
  19. How to compute closures (Closure Algorithm);
  20. Super keys and key;
  21. Use BCNF algorithm to decompose attributes/relations;
  22. Lossy decomposition and lossless decomposition;
  23. Multi-value dependencies (MVDs).