112 lines
6.7 KiB
Markdown
112 lines
6.7 KiB
Markdown
|
|
# Local Real Estate
|
||
|
|
|
||
|
|
## Schema Overview
|
||
|
|
|
||
|
|
This database underpins a real estate application, managing properties, agents, firms, listings, and buyer preferences. It facilitates core operations from property management to agent-buyer matching.
|
||
|
|
|
||
|
|
## Table Summary
|
||
|
|
|
||
|
|
| Table Name | Primary Responsibility |
|
||
|
|
| :--------- | :--------------------- |
|
||
|
|
| `Property` | Defines the foundational details of all real estate holdings. |
|
||
|
|
| `House` | Stores specific attributes for residential properties. |
|
||
|
|
| `BusinessProperty` | Holds details unique to commercial real estate. |
|
||
|
|
| `Firm` | Manages real estate agencies. |
|
||
|
|
| `Agent` | Records information about real estate agents. |
|
||
|
|
| `Listing` | Links properties to agents for active sales. |
|
||
|
|
| `Buyer` | Captures detailed preferences for prospective property buyers. |
|
||
|
|
| `Work_With` | Establishes relationships between buyers and agents. |
|
||
|
|
|
||
|
|
## `Property` Table
|
||
|
|
|
||
|
|
This table serves as the supertype for all property listings, establishing a common base for houses and business properties. It is central to property identification and ownership tracking.
|
||
|
|
|
||
|
|
| Column Name | Data Type | Description |
|
||
|
|
| :---------- | :-------- | :---------- |
|
||
|
|
| `address` | VARCHAR(50) | Unique identifier for this entity. Used for all lookups and relationships. |
|
||
|
|
| `ownerName` | VARCHAR(30) (Optional) | The name of the property's current owner. |
|
||
|
|
| `price` | INT (Optional) | The listed price of the property. Map to `java.lang.Integer` or `java.math.BigDecimal` for robust calculations. |
|
||
|
|
|
||
|
|
## `House` Table
|
||
|
|
|
||
|
|
Contains attributes specific to residential properties, extending the general `Property` information. This table enables detailed filtering and searching for house listings.
|
||
|
|
|
||
|
|
| Column Name | Data Type | Description |
|
||
|
|
| :---------- | :-------- | :---------- |
|
||
|
|
| `address` | VARCHAR(50) | Establishes a relationship with `Property.address`. Essential for data integrity and joins. |
|
||
|
|
| `ownerName` | VARCHAR(30) (Optional) | The name of the house's current owner. Inherited from `Property`. |
|
||
|
|
| `price` | INT (Optional) | The listed price of the house. Inherited from `Property`. Map to `java.lang.Integer` or `java.math.BigDecimal` for robust calculations. |
|
||
|
|
| `bedrooms` | INT (Optional) | Number of bedrooms in the house. |
|
||
|
|
| `bathrooms` | INT (Optional) | Number of bathrooms in the house. |
|
||
|
|
| `size` | INT (Optional) | Square footage or similar size metric of the house. |
|
||
|
|
|
||
|
|
## `BusinessProperty` Table
|
||
|
|
|
||
|
|
Holds characteristics unique to commercial or business properties, differentiating them from residential listings.
|
||
|
|
|
||
|
|
| Column Name | Data Type | Description |
|
||
|
|
| :---------- | :-------- | :---------- |
|
||
|
|
| `address` | VARCHAR(50) | Establishes a relationship with `Property.address`. Essential for data integrity and joins. |
|
||
|
|
| `ownerName` | VARCHAR(30) (Optional) | The name of the business property's current owner. Inherited from `Property`. |
|
||
|
|
| `price` | INT (Optional) | The listed price of the business property. Inherited from `Property`. Map to `java.lang.Integer` or `java.math.BigDecimal` for robust calculations. |
|
||
|
|
| `type` | CHAR(20) (Optional) | Categorization of the business property (e.g., 'office space', 'retail'). Represents an enumerated value. |
|
||
|
|
| `size` | INT (Optional) | Square footage or similar size metric of the business property. |
|
||
|
|
|
||
|
|
## `Firm` Table
|
||
|
|
|
||
|
|
Manages records for real estate agencies, providing organizational context for agents and listings.
|
||
|
|
|
||
|
|
| Column Name | Data Type | Description |
|
||
|
|
| :---------- | :-------- | :---------- |
|
||
|
|
| `id` | INT | Unique identifier for this entity. Used for all lookups and relationships. |
|
||
|
|
| `name` | VARCHAR(30) (Optional) | The name of the real estate firm. |
|
||
|
|
| `address` | VARCHAR(50) (Optional) | The physical address of the firm. |
|
||
|
|
|
||
|
|
## `Agent` Table
|
||
|
|
|
||
|
|
Stores details for individual real estate agents, including their affiliation with firms.
|
||
|
|
|
||
|
|
| Column Name | Data Type | Description |
|
||
|
|
| :---------- | :-------- | :---------- |
|
||
|
|
| `agentId` | INT | Unique identifier for this entity. Used for all lookups and relationships. |
|
||
|
|
| `name` | VARCHAR(30) (Optional) | The agent's full name. |
|
||
|
|
| `phone` | CHAR(12) (Optional) | The agent's contact phone number. |
|
||
|
|
| `firmId` | INT | Establishes a relationship with `Firm.id`. Essential for data integrity and joins, indicating the agent's employer. |
|
||
|
|
| `dateStarted` | DATE (Optional) | The date the agent started working at the firm. Map to `java.time.LocalDate` for modern date handling. |
|
||
|
|
|
||
|
|
## `Listing` Table
|
||
|
|
|
||
|
|
Links properties with the agents responsible for their sale, including listing-specific details.
|
||
|
|
|
||
|
|
| Column Name | Data Type | Description |
|
||
|
|
| :---------- | :-------- | :---------- |
|
||
|
|
| `address` | VARCHAR(50) (Optional) | Establishes a relationship with `Property.address`. Essential for data integrity and joins. |
|
||
|
|
| `agentId` | INT (Optional) | Establishes a relationship with `Agent.agentId`. Essential for data integrity and joins, indicating the listing agent. |
|
||
|
|
| `mlsNumber` | INT | Unique identifier for this entity. Used for all lookups and relationships. This is the Multiple Listing Service number. |
|
||
|
|
| `dataListed` | DATE (Optional) | The date the property was listed. Map to `java.time.LocalDate` for modern date handling. |
|
||
|
|
|
||
|
|
## `Buyer` Table
|
||
|
|
|
||
|
|
Captures comprehensive search criteria and personal information for potential property buyers.
|
||
|
|
|
||
|
|
| Column Name | Data Type | Description |
|
||
|
|
| :---------- | :-------- | :---------- |
|
||
|
|
| `id` | INT | Unique identifier for this entity. Used for all lookups and relationships. |
|
||
|
|
| `name` | VARCHAR(30) (Optional) | The buyer's full name. |
|
||
|
|
| `phone` | CHAR(12) (Optional) | The buyer's contact phone number. |
|
||
|
|
| `propertyType` | CHAR(20) (Optional) | The preferred type of property (e.g., 'house', 'not applied'). Represents an enumerated value. |
|
||
|
|
| `bedrooms` | INT (Optional) | The minimum number of bedrooms desired for a house. |
|
||
|
|
| `bathrooms` | INT (Optional) | The minimum number of bathrooms desired for a house. |
|
||
|
|
| `businessPropertyType` | CHAR(20) (Optional) | The preferred type of business property (e.g., 'office space', 'not applied'). Represents an enumerated value. |
|
||
|
|
| `minimumPreferredPrice` | INT (Optional) | The lowest acceptable price for a property. Map to `java.lang.Integer` or `java.math.BigDecimal` for robust calculations. |
|
||
|
|
| `maximumPreferredPrice` | INT (Optional) | The highest acceptable price for a property. Map to `java.lang.Integer` or `java.math.BigDecimal` for robust calculations. |
|
||
|
|
|
||
|
|
## `Work_With` Table
|
||
|
|
|
||
|
|
A junction table establishing many-to-many relationships between buyers and agents, enabling tracking of client assignments.
|
||
|
|
|
||
|
|
| Column Name | Data Type | Description |
|
||
|
|
| :---------- | :-------- | :---------- |
|
||
|
|
| `buyerId` | INT (Optional) | Establishes a relationship with `Buyer.id`. Essential for data integrity and joins. |
|
||
|
|
| `agentId` | INT (Optional) | Establishes a relationship with `Agent.agentId`. Essential for data integrity and joins. |
|