Table: Project
Columns
Name | Type | Constraints | Description
project_KEY | int | NOT NULL | AUTO-INCREMENT: Database assigned primary key for this table.
update__staff_KEY | int | NOT NULL |
schedule_item_KEY | int | NOT NULL | The [Schedule_Item] that owns this link.
project_number | int | NOT NULL | User defined number (unique).
long_description | nvarchar (-1) | NOT NULL | Long description to use on invoices.
responsible__staff_KEY | int |  | Key to a Staff that will be responsible for generated projects.
department_KEY | int |  | Key to a Department that will be used for generated projects.
target | nvarchar (1000) | NOT NULL | Target to execute. File name or url.
completion_event | nvarchar (50) | NOT NULL | Description of a "User" type client status event that will mark this Project as being complete.
budgeted_based_on_tasks | bit | NOT NULL | When set to 1 will indicate that the budget is entirely based off the budget of the Tasks for the generated project.
budgeted_amount | decimal (9, 2) | NOT NULL | Amount budgeted to this project (when budgeted_based_on_tasks = 0).
percent_complete | decimal (3, 2) | NOT NULL | Percent complete as a decimal (0 to 1.00).
received_date | smalldatetime |  | Date the information required to begin the project was recieved.
actual_start_date | smalldatetime |  | The actual start date.
actual_complete_date | smalldatetime |  | The actual complete date.
row_version | timestamp | NOT NULL |
project_template_KEY | int | NOT NULL | Key to the Project Template that was used to generate this Project.
original_due_date | smalldatetime | NOT NULL | The original due date of the project; readonly once the record is created.
extension_number | int | NOT NULL | Number of the current extension. 0=not extended, 1=first extension, etc. We expect to find a record in dbo.Project_Extension with this project_KEY and extension_number but not absolutely required (weak relationship).
solution_type_name | nvarchar (50) | NOT NULL | Name of the type of solution that is used for this Project. The system has a finite set of solution type names defined.
completion_event_recorded_date_utc | datetime | NOT NULL | Only completion events recorded after this date (in UTC) are eligible to complete this Project. When the completion event is used to complete the Project this value must be updated.
budgeted_amount_is_calculated | bit | NOT NULL |
percent_complete_is_overridden | bit | NOT NULL |
extension_event | nvarchar (50) | NOT NULL | Description of a "User" type client status event that will cause this [Project] to be extended.
project_template_id | nvarchar (11) | NOT NULL | Cached value of the project_template_id for the associated Project template.
project_template_id_sortable | varchar (48) | NOT NULL | Cached value of the project_template_id_sortable for the associated Project template.
gofileroom_workflow_KEY | int |  | GoFileRoom Workflow associated with this Project.
create__changeset_KEY | int | NOT NULL |
update__changeset_KEY | int | NOT NULL |

Primary key
Name | Columns | Description
PK_Project$project_KEY | project_KEY | CLUSTERED
Unique constraints
Name | Columns | Description
UK_Project$project_KEY$project_template_KEY | project_KEY, project_template_KEY | This unique constraint supports the relationship from Project to Task to Task_Template where a Task_Template assigned to a Task must also be assigned the same Project_Template as the Project.
UK_Project$project_KEY$schedule_item_KEY | project_KEY, schedule_item_KEY | This unique constraint supports the relationship between project_KEY and project__schedule_item_KEY on Sheet_Entry.
UK_Project$project_number | project_number |
UK_Project$project_template_KEY$project_KEY | project_template_KEY, project_KEY |
UK_Project$schedule_item_KEY | schedule_item_KEY |
Indexes
Name | Columns | Description
IX_Project$department_KEY | department_KEY | Index supports foreign key FK_Project__Department__department_KEY
IX_Project$project_template_id | project_template_id |
IX_Project$project_template_id_sortable | project_template_id_sortable |
IX_Project$project_template_KEY$project_template_id$project_template_id_sortable | project_template_KEY, project_template_id, project_template_id_sortable | Index supports foreign key FK_Project__Project_Template__project_template_KEY__project_template_id__project_template_id_sortable
IX_Project$responsible__staff_KEY | responsible__staff_KEY | Index supports foreign key FK_Project__Staff__responsible__staff_KEY

Foreign keys
Name | Columns | Referenced table | Description
FK_Project__Department__department_KEY | department_KEY | Department |
FK_Project__Gofileroom_Workflow__gofileroom_workflow_KEY | gofileroom_workflow_KEY | Gofileroom_Workflow |
FK_Project__Project_Template__project_template_KEY | project_template_KEY | Project_Template |
FK_Project__Project_Template__project_template_KEY__project_template_id__project_template_id_sortable | project_template_KEY, project_template_id, project_template_id_sortable | Project_Template | on update cascade;
FK_Project__Schedule_Item__schedule_item_KEY | schedule_item_KEY | Schedule_Item |
FK_Project__Staff__responsible__staff_KEY | responsible__staff_KEY | Staff |

Incoming foreign keys
Name | Columns | Referencing table | Description
FK_Project_Extension__Project__project_KEY | project_KEY | Project_Extension | on delete cascade;
FK_Task__Project__project_KEY | project_KEY | Task |
FK_Task__Project__project_KEY__project_template_KEY | project_KEY, project_template_KEY | Task | on delete cascade;
FK_Sheet_Entry__Project__project_KEY | project_KEY | Sheet_Entry |
FK_Sheet_Entry__Project__project_KEY__project__schedule_item_KEY | project_KEY, project__schedule_item_KEY | Sheet_Entry |