Заработай на задачках

Таблицы баз данных должны быть спроектированы таким образом, чтобы не возникало аномалий при их модификации. Нормализация (приведение базы данных к виду, отвечающему нормальным формам) обеспечивает минимальную логическую избыточность, упрощает доступ к данным.

Первая нормальная форма (1НФ)

  • Таблица должна быть двумерной, содержать строки (записи, raws) и столбцы (поле, атрибут, columns).
  • Каждая строка содержит информацию, которая описывает только одну сущность или часть одной сущности.
  • Каждый столбец содержит информацию для отдельного атрибута сущности, которая описана.
  • Каждая ячейка (пересечение записи и поля, cell) таблицы должна содержать только одно значение.
  • Все ячейки столбца (атрибута) одного вида.
  • Нет двух идентичных строк.
  • Порядок столбцов и строк не имеет значения.

Вторая нормальная форма (2НФ)

  • Таблица должна соответствовать первой начальной форме (1НФ).
  • Каждый не ключевой атрибут (столбец) зависит от первичного ключа.
  • Третья нормальная форма (3НФ)

  • Таблица соответствует второй начальной форме (2НФ)
  • В таблице нет транзитивных зависимостей (не должно быть ячеек, содержимое которых может относиться к нескольким записям(строкам)).
  • Частичный перевод https://www.git-tower.com/blog/git-cheat-sheet/

    Создание репозитория

    Получить копию существующего репозитория

    $ git clone ssh://user@example.com/repo.git

    Создать новый локальный репозиторий

    $ git init

    Локальные изменения

    Изменённые файлы в рабочем каталоге

    $ git status

    Изменения в отслеживаемых файлах

    $ git diff

    Добавить все изменения в индекс git (для последующей фиксации состояния)

    $ git add .

    Добавить изменения в файлах _file list_ в индекс git (для последующей фиксации состояния)

    $ git add -p _file list_

    Зафиксировать все изменения в отслеживаемых файлах (проиндексировав перед этим известные файлы)

    $ git commit -a

    Зафиксировать текущее состояние репозитория (не обновляется индекс)

    $ git commit

    Изменить последнюю фиксацию состояния репозитория (использовать только на неопубликованной локальной копии)

    $ git commit --amend

    История фиксации изменений

    Показать все точки фиксации, начиная с последней

    $ git log

    Отобразить все изменения файла _file_

    $ git log -p _file_

    Получить сведения о том, кто и когда изменял файл _file_

    $ git blame _file_

    Ветки и метки

    Просмотр всех существующих веток репозитория

    $ git branch -av

    Переключиться на ветку _branch_

    $ git checkout _branch_

    Создать новую ветку _new-branch_, основанную на текущей

    $ git branch _new-branch_

    Создать новую отслеживаемую ветку, основанную на удалённой _remote/branch

    $ git checkout --track _remote/branch_

    Удалить локальную ветку _branch_

    $ git branch -d _branch_

    Установить метку текущей фиксации изменений

    $ git tag _tag-name_

    Обновление и публикация

    Отобразить список удалённых репозиторий

    $ git remote -v

    Получить информацию об удалённом репозитории _remote

    $ git remote show _remote_

    Добавить новый удалённый репозиторий по ссылке _url_ с сокращённым названием _shortname_

    $ git remote add _shortname_ _url_

    Получить все изменения из удалённого репозитория _remote_ как отдельную ветку (не объединяя с текущей)

    $ git fetch _remote_

    Получить все изменения из удалённого репозитория _remote_ и объеденить их с веткой _branch_

    $ git pull _remote_ _branch_

    Опубликовать локальные изменения ветки _branch_ в удалённый репозиторий _remote_

    $ git push _remote_ _branch_

    Удалить ветку _branch_ на удалённом репозитории _remote_

    $ git branch -dr _remote/branch_

    Опубликовать метки

    $ git push --tags

    Слияние (объединения) и перемещение

    Объеденить ветку _branch_ и текущую

    $ git merge _branch_

    Переместить HEAD на _branch_ (использовать только на локальной копии репозитория)

    $ git rebase _branch_

    Отменить перемещение

    $ git rebase --abort

    Продолжить перемещение после разрешения конфликтов

    $ git rebase --continue

    Запустить свою сконфигурированную программу для разрешения конфликтов

    $ git mergetool

    Использовать текстовый редактор для разрешения конфликтов и пометить их как разрешённые

    $ git add _resolved_files_
    $ git rm _resolved_files_

    Отмена действий

    Откатить все изменения в рабочей директории

    $ git reset --hard HEAD

    Откатить изменения для конкретного файла _file_

    $ git checkout HEAD _file_

    Вернуться к точке фиксации изменения _commut_ (создаётся новая точка с фиксацией всех изменений)

    $ git revert _commit_

    Переместить HEAD на предыдущую точку фиксации _commit_
    …и отменить все изменения после неё

    $ git reset --hard _commit_

    …и пометить все изменения как непроиндексированные

    $ git reset commit

    …и сохранить незафиксированные изменения

    $ git reset --keep commit

    Существует достаточно простая утилита recode, которую можно установить в Debian следующим образом:
    # apt-get install recode

    После установки можно легко сменить кодировку любого файла, к примеру с CP866 на utf-8:
    $ recode cp866..utf-8 file_name.txt