# Modellerade sjöfartsdomänen i 348 normaliserade tabeller i 34 PostgreSQL‑scheman — yrkesverksamma, företag, fartyg, jobb, recensioner och resten — med SMALLINT‑uppslag och UUID v7‑nycklar.

2025

**Situation.** Kärnan i plattformen är en tät maritim domän — yrkesverksamma, företag, fartyg, jobb, recensioner — och de här sakerna refererar ständigt till varandra. En yrkesverksam seglar på fartyg, arbetar för företag och lämnar recensioner; ett företag äger fartyg och publicerar jobb. Nästan varje funktion är en databasfråga över det nätet, så hur väl data modelleras avgör prestandan i större delen av appen och hur rimligt det är att bygga ut den.

**Uppgift.** Domänen behövde modelleras så att den förblev snabb och behöll sin integritet, och så att nästa entitetstyp kunde läggas till utan att någon behövde kämpa mot schemat.

**Handling.** Den är uppbyggd som normaliserade PostgreSQL‑scheman organiserade per domän — vid det här laget 348 tabeller fördelade på 34 av dem. De många små, stabila uppräkningarna — statusar, typer, kategorier — blev uppslagstabeller med SMALLINT, vilket håller raderna kompakta och joinarna billiga i stället för att textkoder lagras överallt. Entiteterna får primärnycklar med UUID v7, så att de är globalt unika men ändå tidsordnade i indexet. En och samma namnkonvention gäller genomgående — tabellnamn i plural inuti scheman med namn i singular — och tillämpas utan undantag, vilket som en bonus undviker en mängd kollisioner med reserverade ord. Och relationerna hålls uppe av riktiga främmande nycklar och villkor, så att integriteten är databasens uppgift och inte något som applikationen måste komma ihåg att sköta.

**Resultat.** Det blev en datamodell som är konsekvent och snabb, och förutsägbar att arbeta i eftersom samma regler gäller överallt — det finns inga specialfall att lägga på minnet. Att lägga till en funktion innebär oftast att schemat byggs ut längs de befintliga linjerna i stället för mot dem, vilket är det enda skälet till att 34 scheman är en struktur och inte ett spretigt virrvarr. Det är golvet som resten av plattformen står på.

---

- Roll: Dataingenjör
- Kategorier: [Plattformsarkitektur](https://software.engineer.company/sv/categories/platform-architecture/), [Databaser](https://software.engineer.company/sv/categories/databases/), [PostgreSQL](https://software.engineer.company/sv/categories/postgresql/), [SQL](https://software.engineer.company/sv/categories/sql/), [Data engineering](https://software.engineer.company/sv/categories/data-engineering/), [Datastyrning](https://software.engineer.company/sv/categories/data-governance/), [Prestandaoptimering](https://software.engineer.company/sv/categories/performance/)
- Tjänster: [Plattforms- och lösningsarkitektur](https://software.engineer.company/sv/services/platform-architecture/), [Databasdesign och datamodellering](https://software.engineer.company/sv/services/database-design/), [Datastyrning och datakvalitet](https://software.engineer.company/sv/services/data-governance/)

<https://software.engineer.company/sv/portfolio/modeled-the-maritime-domain-professionals-companies-ships-jobs-67/>
