| 17 | | admin_id (VARCHAR(36), required) - Automatically generated unique identifier for each admin. This attribute would be the primary key. |
| 18 | | name (VARCHAR(128), required) - Full name of the administrator. Must not be empty. |
| 19 | | email (VARCHAR(128), required, unique) - Email address of the administrator used for system login. Must be of valid email format (contains @ symbol and domain). |
| 20 | | password (VARCHAR(128), required) - Encrypted password for authentication. Stored using a hashing algorithm. Minimum 8 characters required before hashing. (Could introduce further restrictions for special characters) |
| | 17 | * admin_id (VARCHAR(36), required) - Automatically generated unique identifier for each admin. This attribute would be the primary key. |
| | 18 | * name (VARCHAR(128), required) - Full name of the administrator. Must not be empty. |
| | 19 | * email (VARCHAR(128), required, unique) - Email address of the administrator used for system login. Must be of valid email format (contains @ symbol and domain). |
| | 20 | * password (VARCHAR(128), required) - Encrypted password for authentication. Stored using a hashing algorithm. Minimum 8 characters required before hashing. (Could introduce further restrictions for special characters) |
| 47 | | building_id (VARCHAR(36), required) - Automatically generated unique identifier for each building. This attribute is the primary key. |
| 48 | | name (VARCHAR(256), required) - Descriptive name for the building. Must not be empty. |
| 49 | | address (VARCHAR(512), required) - Complete address of the building including street, city, and postal code. Must not be empty. |
| 50 | | description (TEXT, optional) - Detailed description of the building mainly for marketing purposes. |
| | 47 | * building_id (VARCHAR(36), required) - Automatically generated unique identifier for each building. This attribute is the primary key. |
| | 48 | * name (VARCHAR(256), required) - Descriptive name for the building. Must not be empty. |
| | 49 | * address (VARCHAR(512), required) - Complete address of the building including street, city, and postal code. Must not be empty. |
| | 50 | * description (TEXT, optional) - Detailed description of the building mainly for marketing purposes. |
| 62 | | floor_id (VARCHAR(36), required) - Automatically generated unique identifier for each floor. This attribute is the primary key. |
| 63 | | floor_number (INTEGER, required, unique) - The numeric level of the floor within the building. Must be unique within a building. |
| 64 | | layout_image (VARCHAR(512), required) - URL or file path to the floor's image. Will be used for interactive flat selection from the image and this image will be the base on which flat images will be overlaid. |
| | 62 | * floor_id (VARCHAR(36), required) - Automatically generated unique identifier for each floor. This attribute is the primary key. |
| | 63 | * floor_number (INTEGER, required, unique) - The numeric level of the floor within the building. Must be unique within a building. |
| | 64 | * layout_image (VARCHAR(512), required) - URL or file path to the floor's image. Will be used for interactive flat selection from the image and this image will be the base on which flat images will be overlaid. |
| 77 | | unit_id (VARCHAR(36), required) - Automatically generated unique identifier for each unit. This attribute is the primary key. |
| 78 | | unit_number (VARCHAR(64), required, unique) - Presentable identifier of the unit. Must be unique within a floor. |
| 79 | | room_number (INTEGER, required) - Total number of rooms in the unit. Must be a positive integer. |
| 80 | | status (VARCHAR(32), required) - Current availability status of the unit. Allowed values: "Available", "Reserved", "Sold". Default: "Available". |
| 81 | | price (DECIMAL(15,2), required) - Sale price of the unit in the system's base currency. Must be a positive number. |
| 82 | | floor_area (DECIMAL(10,2), required) - Total floor area of the unit in square meters. Must be a positive number. |
| 83 | | image (VARCHAR(512), optional) - URL or file path to the promotional image of the unit. Used for listings and thumbnails. |
| 84 | | floorplan (VARCHAR(512), optional) - URL or file path to the unit's floorplan image or PDF showing room layout and dimensions. |
| 85 | | vector_image (VARCHAR(512), required) - URL or file path to a vector representation of the unit for overlaying on top of the floor image for interactive flat selections within a floor. |
| | 77 | * unit_id (VARCHAR(36), required) - Automatically generated unique identifier for each unit. This attribute is the primary key. |
| | 78 | * unit_number (VARCHAR(64), required, unique) - Presentable identifier of the unit. Must be unique within a floor. |
| | 79 | * room_number (INTEGER, required) - Total number of rooms in the unit. Must be a positive integer. |
| | 80 | * status (VARCHAR(32), required) - Current availability status of the unit. Allowed values: "Available", "Reserved", "Sold". Default: "Available". |
| | 81 | * price (DECIMAL(15,2), required) - Sale price of the unit in the system's base currency. Must be a positive number. |
| | 82 | * floor_area (DECIMAL(10,2), required) - Total floor area of the unit in square meters. Must be a positive number. |
| | 83 | * image (VARCHAR(512), optional) - URL or file path to the promotional image of the unit. Used for listings and thumbnails. |
| | 84 | * floorplan (VARCHAR(512), optional) - URL or file path to the unit's floorplan image or PDF showing room layout and dimensions. |
| | 85 | * vector_image (VARCHAR(512), required) - URL or file path to a vector representation of the unit for overlaying on top of the floor image for interactive flat selections within a floor. |
| 98 | | client_id (VARCHAR(36), required) - Automatically generated unique identifier for each client. This attribute is the primary key. |
| 99 | | name (VARCHAR(128), required) - The full name of the client as provided in inquiry or appointment forms. Must not be empty. |
| 100 | | email (VARCHAR(256), required, unique) - Email address of the client for communication. Must follow valid email format. |
| 101 | | phone (VARCHAR(32), required) - Phone number of the client for direct contact. Format validation varies by country. Must not be empty. |
| | 98 | * client_id (VARCHAR(36), required) - Automatically generated unique identifier for each client. This attribute is the primary key. |
| | 99 | * name (VARCHAR(128), required) - The full name of the client as provided in inquiry or appointment forms. Must not be empty. |
| | 100 | * email (VARCHAR(256), required, unique) - Email address of the client for communication. Must follow valid email format. |
| | 101 | * phone (VARCHAR(32), required) - Phone number of the client for direct contact. Format validation varies by country. Must not be empty. |
| 113 | | agent_id (VARCHAR(36), required) - Automatically generated unique identifier for each agent. This entity is the primary key. |
| 114 | | name (VARCHAR(256), required) - Full name of the agent. Must not be empty. |
| 115 | | email (VARCHAR(256), required, unique) - Email address of the agent used for system login. Must follow valid email format. |
| 116 | | password (VARCHAR(256), required) - Encrypted password for authentication. Stored using a hashing algorithm. Minimum 8 characters required before hashing. (Could introduce further restrictions for special characters) |
| | 113 | * agent_id (VARCHAR(36), required) - Automatically generated unique identifier for each agent. This entity is the primary key. |
| | 114 | * name (VARCHAR(256), required) - Full name of the agent. Must not be empty. |
| | 115 | * email (VARCHAR(256), required, unique) - Email address of the agent used for system login. Must follow valid email format. |
| | 116 | * password (VARCHAR(256), required) - Encrypted password for authentication. Stored using a hashing algorithm. Minimum 8 characters required before hashing. (Could introduce further restrictions for special characters) |
| 128 | | inquiry_id (VARCHAR(36), required) - Automatically generated unique identifier for each inquiry. This attribute is the primary key. |
| 129 | | message (TEXT, required) - The text content of the client's questions or detailed information that they request. Must not be empty. |
| 130 | | status (VARCHAR(32), required) - Current state of the inquiry. Allowed values: "New", "Replied", "Closed". Default: "New". |
| 131 | | created_at (TIMESTAMP, required) - Automatically set to current timestamp when inquiry is submitted. Used for sorting. |
| | 128 | * inquiry_id (VARCHAR(36), required) - Automatically generated unique identifier for each inquiry. This attribute is the primary key. |
| | 129 | * message (TEXT, required) - The text content of the client's questions or detailed information that they request. Must not be empty. |
| | 130 | * status (VARCHAR(32), required) - Current state of the inquiry. Allowed values: "New", "Replied", "Closed". Default: "New". |
| | 131 | * created_at (TIMESTAMP, required) - Automatically set to current timestamp when inquiry is submitted. Used for sorting. |
| 143 | | appointment_id (VARCHAR(36), required) - Automatically generated unique identifier for each appointment. This attribute is the primary key. |
| 144 | | status (VARCHAR(32), required) - Current state of the appointment. Allowed values: "Scheduled", "Completed", "Cancelled". Default: "Scheduled". |
| | 143 | * appointment_id (VARCHAR(36), required) - Automatically generated unique identifier for each appointment. This attribute is the primary key. |
| | 144 | * status (VARCHAR(32), required) - Current state of the appointment. Allowed values: "Scheduled", "Completed", "Cancelled". Default: "Scheduled". |
| 156 | | timeslot_id (VARCHAR(36), required) - Automatically generated unique identifier for each timeslot. This attribute is the primary key. |
| 157 | | date (DATE, required) - The calendar date for this timeslot. Format: DD-MM-YYYY. Must be today or in the future. |
| 158 | | time_start (TIME, required) - Start time of the timeslot window. Format: HH:MM:SS. |
| 159 | | time_end (TIME, required) - End time of the timeslot window. Format: HH:MM:SS. Must be after time_start. |
| 160 | | status (VARCHAR(32), required) - Current state of the timeslot. Allowed values: "Available", "Booked". Default: "Available". |
| | 156 | * timeslot_id (VARCHAR(36), required) - Automatically generated unique identifier for each timeslot. This attribute is the primary key. |
| | 157 | * date (DATE, required) - The calendar date for this timeslot. Format: DD-MM-YYYY. Must be today or in the future. |
| | 158 | * time_start (TIME, required) - Start time of the timeslot window. Format: HH:MM:SS. |
| | 159 | * time_end (TIME, required) - End time of the timeslot window. Format: HH:MM:SS. Must be after time_start. |
| | 160 | * status (VARCHAR(32), required) - Current state of the timeslot. Allowed values: "Available", "Booked". Default: "Available". |