среда, 1 августа 2012 г.

module: db

Подтемы
    - Relational Model
    - MySQL
    - SQL 
    - JDBC
    - Connection Pooling 
    - Connector/J
    - RDBMS
    - RDBMS critique
    - NoSQL
    - NoSQL critique
    - Concurrency control
    - Crash recovery 

Что должны знать в итоге:
    Java-RDBMC: ORM mismatch, Dao, General Dao, ?
    JDBC: 4 составляющих JDBC, простое соединение с базой для select/insert/update/delete, Driver, DriverManager, DataSource, Connection, Statement, PreparedStatement, ResultSet, connection pooling (c3p0),
    RDBMS: нормальные формы, уровни изолированности транзакций, отношения один-ко-многим, многие-ко-многим, функциональные зависимости, топология типа "звезда", топология типа ???, правила Кодда, первичный ключ, внешний ключ, ограничения целостности
    SQL: JOIN, GROUP BY, HAVING, корелированные подзапросы
    MySQL: InnoDB vs MyISAM


    Постановка задачи:
    Quiz
    Quiz может быть разного типа - singlrechoise / multichoise (1).
    Quiz имеет один и только один правильный ответ (1).
    Quiz может иметь обоснование ответа (0..1).
    Обоснование ответа может содержать ссылки на внешние ресурсы типа URL (0..*) и типа Книги.
    Quiz groups
    Определены QG - не пустые множества Q. QG не может содержать один и тот же Q дважды.
    Один Q может принадлежать нескольким QG.
    Между QG определено отношение включение. QG("overriding") с QG("OOP").
    Один Q не может принадлежать двум QG если они состоят в отношении включения или его замыкания.
    Quiz relations
    2Q могут быть полными синонимами, т.е. быть переформулировками друг друга. Полная синонимия - рефлексивна, симметрична и транзитивна.
    2Q могут быть групповыми синонимами, т.е. быть однотипными но не идентичными вопросами в рамках одной группы. В рамках другой группы вопросы могут быть не групповыми синонимами.
    2Q могут состоять в отношении усложнения.
    2Q могут состоять в отношении обобщения.
    Quiz tags
    Q может быть отмечен любым количеством T (0..*). Одним и тем же T может быть отмечено любое количество Q (0..*).
    User
    x

    Test
    Тест состоит из ненулевого количества QG.
    QG не может входить дважды в один и тот же тест.
    QG может входить более чем в один тест.
    Атрибутом отношения QG-входит-в-тест является количество вопросов, которые надо взять из группы. Количество больше 0, но не больше колва-вопросов в QG. Или доля. Доля больше 0, и не больше 1. Округление вверх.

    User/Test History
    x