ID: dbdoc-TODOMojmír Němeček
Revize: 4.0SIS Spektrum
Klíčová slova: technická dokumentace, databáze
Statut: oficiální3.6.2005

Databázová struktura modulu TODO


Statut tohoto dokumentu

Toto je automaticky vygenerovaná část oficiální technické dokumentace.

Abstrakt

Tento dokument byl vygenerován automatem a popisuje databázovou strukturu modulu TODO.

Obsah

1. Úvod
2. Tabulky
2.1. Tabulka TaskGroup
2.2. Tabulka Task
2.3. Tabulka TaskNote
2.4. Interní tabulka PriorityEnum
2.5. Interní tabulka CategoryEnum
2.6. Interní tabulka StatusEnum
2.7. Interní tabulka ActivityEnum
Příloha A. SQL skripty pro založení tabulek

1. Úvod

Tento dokument byl vygenerován automatem a popisuje databázovou strukturu modulu TODO. Dokument zejména popisuje význam atributů v tabulkách které modul spravuje.

2. Tabulky

Modul TODO definuje a spravuje tyto tabulky: TaskGroup ( Seznam skupin úkolů ), Task ( Seznam úkolů ), TaskNote ( Seznam doplňujících poznámek k úkolům ), PriorityEnum ( Číselník priorit ), CategoryEnum ( Číselník kategorií úkolů ), StatusEnum ( Číselník stavů úkolu ), ActivityEnum ( Číselník aktivit úkolu ).

2.1. Tabulka TaskGroup

Záznamy v tabulce TaskGroup ( Seznam skupin úkolů ) jsou jednoznačně identifikovatelné hodnotou atributu GroupID. Pro generování jednoznačných hodnot klíčového atributu se používá generátor TaskGroup. Pro alternativní identifikaci záznamu je doporučený výraz Description. Tabulka obsahuje tyto atributy:

IDnázevpopis
TaskGroup.GroupIDProjektInterní identifikační kód projektu
TaskGroup.DescriptionNázevNázev projektu
TaskGroup.NumSeedNumSeedNaposledy přidělený číselný identifikátor úkolu
TaskGroup.ModifiedModifiedDatum poslední změny projektu

Na záznamy v tabulce TaskGroup se odkazují i jiné tabulky svými atributy:

Relace 1 <- N
1N
TaskGroup.GroupIDTask.GroupID
TaskGroup.GroupIDTaskNote.GroupID

2.2. Tabulka Task

Záznamy v tabulce Task ( Seznam úkolů ) jsou jednoznačně identifikovatelné hodnotou atributu TaskID. Pro generování jednoznačných hodnot klíčového atributu se používá generátor Task. Tabulka obsahuje tyto atributy:

IDnázevpopis
Task.TaskIDTaskIDInterní identifikační kód úkolu
Task.GroupIDProjektKód bezprostředně nadřazeného projektu
Task.NumIDČíselný identifikátor úkolu jednoznačný v rámci projektu
Task.ModuleModulTODO:
Task.CreatedVloženoDatum vložení úkolu
Task.ResolvedVyřešenoDatum vyřešení úkolu
Task.ClosedUzavřenoDatum uzavření úkolu
Task.NotesTextZadání úkolu
Task.PriorityPrioritaTODO:
Task.CategoryKategorieTODO:
Task.StatusStavTODO:
Task.ActivityAktivitaTODO:
Task.MilestoneMilníkTODO:
Task.ReporterIDAutorKdo úkol vložil do systému
Task.SolverIDŘešíKdo zodpovídá za vyřešení úkolu

Záznam v tabulce Task obsahuje identifikační odkazy na záznamy v jiných tabulkách:

Relace N -> 1
N1
Task.GroupIDTaskGroup.GroupID
Task.PriorityPriorityEnum.Num
Task.CategoryCategoryEnum.Num
Task.StatusStatusEnum.Num
Task.ActivityActivityEnum.Num
Task.ReporterIDMYS\Users.Primární klíč
Task.SolverIDMYS\Users.Primární klíč

Na záznamy v tabulce Task se odkazují i jiné tabulky svými atributy:

Relace 1 <- N
1N
Task.TaskIDTaskNote.TaskID

2.3. Tabulka TaskNote

Záznamy v tabulce TaskNote ( Seznam doplňujících poznámek k úkolům ) jsou jednoznačně identifikovatelné hodnotou atributu NoteID. Pro generování jednoznačných hodnot klíčového atributu se používá generátor TaskNote. Tabulka obsahuje tyto atributy:

IDnázevpopis
TaskNote.NoteIDNoteIDTODO:
TaskNote.TaskIDTaskIDTODO:
TaskNote.GroupIDProjektKód bezprostředně nadřazeného projektu
TaskNote.CreatedVloženoDatum vložení poznámky
TaskNote.NotesTextPoznámka k úkolu
TaskNote.ReporterIDAutorAutor poznámky

Záznam v tabulce TaskNote obsahuje identifikační odkazy na záznamy v jiných tabulkách:

Relace N -> 1
N1
TaskNote.TaskIDTask.TaskID
TaskNote.GroupIDTaskGroup.GroupID
TaskNote.ReporterIDMYS\Users.Primární klíč

2.4. Interní tabulka PriorityEnum

Záznamy v tabulce PriorityEnum ( Číselník priorit ) jsou jednoznačně identifikovatelné hodnotou atributu Num. Pro alternativní identifikaci záznamu je doporučený výraz Description. Tabulka obsahuje tyto atributy:

IDnázevpopis
PriorityEnum.NumNumTODO:
PriorityEnum.NumCodeNumCodeTODO:
PriorityEnum.DescriptionDescriptionTODO:

Na záznamy v tabulce PriorityEnum se odkazují i jiné tabulky svými atributy:

Relace 1 <- N
1N
PriorityEnum.NumTask.Priority

2.5. Interní tabulka CategoryEnum

Záznamy v tabulce CategoryEnum ( Číselník kategorií úkolů ) jsou jednoznačně identifikovatelné hodnotou atributu Num. Pro alternativní identifikaci záznamu je doporučený výraz Description. Tabulka obsahuje tyto atributy:

IDnázevpopis
CategoryEnum.NumNumTODO:
CategoryEnum.NumCodeNumCodeTODO:
CategoryEnum.DescriptionDescriptionTODO:

Na záznamy v tabulce CategoryEnum se odkazují i jiné tabulky svými atributy:

Relace 1 <- N
1N
CategoryEnum.NumTask.Category

2.6. Interní tabulka StatusEnum

Záznamy v tabulce StatusEnum ( Číselník stavů úkolu ) jsou jednoznačně identifikovatelné hodnotou atributu Num. Pro alternativní identifikaci záznamu je doporučený výraz Description. Tabulka obsahuje tyto atributy:

IDnázevpopis
StatusEnum.NumNumTODO:
StatusEnum.NumCodeNumCodeTODO:
StatusEnum.DescriptionDescriptionTODO:

Na záznamy v tabulce StatusEnum se odkazují i jiné tabulky svými atributy:

Relace 1 <- N
1N
StatusEnum.NumTask.Status

2.7. Interní tabulka ActivityEnum

Záznamy v tabulce ActivityEnum ( Číselník aktivit úkolu ) jsou jednoznačně identifikovatelné hodnotou atributu Num. Pro alternativní identifikaci záznamu je doporučený výraz Description. Tabulka obsahuje tyto atributy:

IDnázevpopis
ActivityEnum.NumNumTODO:
ActivityEnum.NumCodeNumCodeTODO:
ActivityEnum.DescriptionDescriptionTODO:

Na záznamy v tabulce ActivityEnum se odkazují i jiné tabulky svými atributy:

Relace 1 <- N
1N
ActivityEnum.NumTask.Activity

Příloha A. SQL skripty pro založení tabulek

Soubor instalace4.sql obsahuje příkazy v kódu Myška SQL, které založí popsanou databázovou strukturu:

/* 
   AppID = "TODO"
   AppVersion = 4
*/

create table TaskGroup (
  GroupID {db.type.generator} not null primary key,
  Description {db.type.string(40)},
  NumSeed {db.type.integer},
  Modified {db.type.datetime}
);

type.userID = '{db.type.integer}';

create table Task (
  TaskID {db.type.generator} not null primary key,
  GroupID {db.type.generator},
  Num {db.type.integer},
  Module {db.type.string(40)},
  Created {db.type.datetime},
  Resolved {db.type.datetime},
  Closed {db.type.datetime},
  Notes {db.type.memo},
  Priority {db.type.integer},
  Category {db.type.integer},
  Status {db.type.integer},
  Activity {db.type.integer},
  Milestone {db.type.date},
  ReporterID {type.userID},
  SolverID {type.userID}
);

create table TaskNote (
  NoteID {db.type.generator} not null primary key,
  TaskID {db.type.generator},
  GroupID {db.type.generator},
  Created {db.type.datetime},
  Notes {db.type.memo},
  ReporterID {type.userID}
);

create table {app.table.name(PriorityEnum)} (
  Num {db.type.integer} not null primary key,
  NumCode {db.type.string(40)},
  Description {db.type.string(40)}
);

create index Task_1
  on Task(Num);

create index Task_2
  on Task(GroupID);
  
create index TaskNote_1
  on TaskNote(GroupID); 

@insert = 'insert into {app.table.name(PriorityEnum)}(Num, NumCode, Description) values';

{@insert} (1, 'highFix'       , 'musí se vyřešit !!');
{@insert} (2, 'mediumFix'     , 'musí se vyřešit !' );
{@insert} (3, 'lowFix'        , 'musí se vyřešit'   );
{@insert} (4, 'highWhenIdle'  , 'až bude čas !!'    );
{@insert} (5, 'mediumWhenIdle', 'až bude čas !'     );
{@insert} (6, 'lowWhenIdle'   , 'až bude čas'       );
{@insert} (7, 'dontFix'       , 'neřešit'           );

create table {app.table.name(CategoryEnum)} (
  Num {db.type.integer} not null primary key,
  NumCode {db.type.string(40)},
  Description {db.type.string(40)}
);

@insert = 'insert into {app.table.name(CategoryEnum)}(Num, NumCode, Description) values';

{@insert} (1, 'bug'     , 'chyba'  );
{@insert} (2, 'task'    , 'úkol'   );
{@insert} (3, 'feature' , 'námět'  );
{@insert} (4, 'question', 'otázka' );
{@insert} (5, 'event'   , 'událost');

create table {app.table.name(StatusEnum)} (
  Num {db.type.integer} not null primary key,
  NumCode {db.type.string(40)},
  Description {db.type.string(40)}
);

@insert = 'insert into {app.table.name(StatusEnum)}(Num, NumCode, Description) values';

{@insert} (1 , 'active'                   , 'aktivní'                );
{@insert} (2 , 'bugFixed'                 , 'opraveno'               );
{@insert} (3 , 'bugNoReproduce'           , 'neopakovatelné'         );
{@insert} (4 , 'bugDuplicate'             , 'duplicitní'             );
{@insert} (5 , 'bugPostponed'             , 'odloženo'               );
{@insert} (6 , 'bugWontFix'               , 'nebude se opravovat'    );
{@insert} (7 , 'bugNotBug'                , 'vlastnost není chyba'   );
{@insert} (8 , 'taskFixed'                , 'splněno'                );
{@insert} (9 , 'taskDuplicate'            , 'duplicitní'             );
{@insert} (10, 'taskWontFix'              , 'nebude se dělat'        );
{@insert} (11, 'taskAlreadyImplemented'   , 'už je to hotové'        );
{@insert} (12, 'featureImplemented'       , 'implementováno'         );
{@insert} (13, 'featureWontImplement'     , 'nebude se implementovat');
{@insert} (14, 'featureAlreadyImplemented', 'už implementováno'      );
{@insert} (15, 'questionResponded'        , 'zodpovězena'            );
{@insert} (16, 'questionWontRespond'      , 'nebude se reagovat'     );
{@insert} (17, 'questionSPAM'             , 'šum'                    );
{@insert} (18, 'questionWaitingForInfo'   , 'je třeba více informací');
{@insert} (19, 'featureDuplicate'         , 'duplicitní požadavek'   );

create table {app.table.name(ActivityEnum)} (
  Num {db.type.integer} not null primary key,
  NumCode {db.type.string(40)},
  Description {db.type.string(40)}
);

@insert = 'insert into {app.table.name(ActivityEnum)}(Num, NumCode, Description) values';

{@insert} (1, 'notStarted'          , 'čeká'               );
{@insert} (2, 'scheduledDevelopment', 'plánovaná výroba'   );
{@insert} (3, 'developing'          , 've výrobě'          );
{@insert} (4, 'scheduledTesting'    , 'plánované testování');
{@insert} (5, 'testing'             , 'v testování'        );
{@insert} (6, 'complete'            , 'hotovo'             );
{@insert} (7, 'closed'              , 'uzavřeno'           );
{@insert} (8, 'deleted'             , 'smazáno'            );