Alarm and Alarm instances tables in default DeskClock application

I am trying to learn and understand design patterns and approaches of developing responsible, reliable and well-coded applications. Now I am studying default DeskClock applications (comes with 4.4 and higher). I have noticed such weird thing for me. There two tables for storing alarms : alarms and alarms instances.
Here is attributes of this tables.

private static void createAlarmsTable(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + ALARMS_TABLE_NAME + " (" +
            ClockContract.AlarmsColumns._ID + " INTEGER PRIMARY KEY," +
            ClockContract.AlarmsColumns.HOUR + " INTEGER NOT NULL, " +
            ClockContract.AlarmsColumns.MINUTES + " INTEGER NOT NULL, " +
            ClockContract.AlarmsColumns.DAYS_OF_WEEK + " INTEGER NOT NULL, " +
            ClockContract.AlarmsColumns.ENABLED + " INTEGER NOT NULL, " +
            ClockContract.AlarmsColumns.VIBRATE + " INTEGER NOT NULL, " +
            ClockContract.AlarmsColumns.LABEL + " TEXT NOT NULL, " +
            ClockContract.AlarmsColumns.RINGTONE + " TEXT, " +
            ClockContract.AlarmsColumns.DELETE_AFTER_USE + " INTEGER NOT NULL DEFAULT 0);");
    LogUtils.i("Alarms Table created");
}

And for instance table

 private static void createInstanceTable(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + INSTANCES_TABLE_NAME + " (" +
                ClockContract.InstancesColumns._ID + " INTEGER PRIMARY KEY," +
                ClockContract.InstancesColumns.YEAR + " INTEGER NOT NULL, " +
                ClockContract.InstancesColumns.MONTH + " INTEGER NOT NULL, " +
                ClockContract.InstancesColumns.DAY + " INTEGER NOT NULL, " +
                ClockContract.InstancesColumns.HOUR + " INTEGER NOT NULL, " +
                ClockContract.InstancesColumns.MINUTES + " INTEGER NOT NULL, " +
                ClockContract.InstancesColumns.VIBRATE + " INTEGER NOT NULL, " +
                ClockContract.InstancesColumns.LABEL + " TEXT NOT NULL, " +
                ClockContract.InstancesColumns.RINGTONE + " TEXT, " +
                ClockContract.InstancesColumns.ALARM_STATE + " INTEGER NOT NULL, " +
                ClockContract.InstancesColumns.ALARM_ID + " INTEGER REFERENCES " +
                    ALARMS_TABLE_NAME + "(" + ClockContract.AlarmsColumns._ID + ") " +
                    "ON UPDATE CASCADE ON DELETE CASCADE" +
                ");");
        LogUtils.i("Instance table created");
    }

I have found only some comments in the code.

/**

  • Constants for the Instance table, which contains the state of each alarm.
    */

And

/**

  • Constants for the Alarms table, which contains the user created alarms.
    */

So if instance table contains state of each alarm. Okey , we will store state of alarm in this table. Here is ALARM_STATE attribute, and there is no ENABLED. Also there is no date in alarm table. I don’t understand logic of doing in such way. Why should we repeat attributes in both tables. Why not to store only state in instance table.
Please explain this design and approach.
What are pros and cons ?
Thanks everyone in advance.