Files
databases.softwareshinobi.com/landing/docs/realestate.md
Software Shinobi 89c04a328f
All checks were successful
learn org at code.softwareshinobi.com/databases.softwareshinobi.com/pipeline/head This commit looks good
ready for rewrite of content
2025-06-19 12:14:28 -04:00

6.7 KiB

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.