AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning · Lektion

Databasschema och ORM

Utforma ett effektivt databasschema för centrala SaaS-entiteter och integrera en Object-Relational Mapper (ORM) för datahantering.

Lektion 2 av 411 steg

Databasschema och ORM är en gratis lektion i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.

Databasschema: ritningen

Föreställ dig att du bygger ett hus. Du skulle väl inte bara börja lägga tegelstenar? Du behöver en ritning!

Ett databasschema är precis det: en ritning för din databas. Det definierar datastrukturen, inklusive tabeller, kolumner, datatyper och relationer mellan dem.

För en SaaS-applikation säkerställer ett välutformat schema att dina data är konsekventa, enkla att hantera och fungerar effektivt när antalet användare växer.

Centrala SaaS-entiteter

Alla SaaS-applikationer hanterar vissa grundläggande informationsdelar. Dessa kallas ofta entiteter.

Vanliga entiteter som finns i de flesta SaaS-appar är:

  • Användare: Vem använder din tjänst?
  • Produkter/abonnemang: Vad erbjuder du?
  • Abonnemang: Hur betalar användarna för din tjänst?
  • Betalningar: Transaktionsposter.

Varje entitet blir en tabell i din databas.

Utforma användartabellen

Vi börjar med entiteten User. Vilken information behöver vi för varje användare?

En enkel tabell users kan se ut så här:

  • id (primärnyckel, unik identifierare för varje användare)
  • email (unik, för inloggning)
  • password_hash (säkert lagrat lösenord)
  • created_at (tidsstämpel för när användaren registrerade sig)
  • updated_at (tidsstämpel för den senaste profiluppdateringen)

Varje kolumn har en specifik datatyp, till exempel text, tal eller datum.

Utforma produkt- och abonnemangstabeller

Nu ska vi titta på products och subscriptions.

Produktabell:

  • id (primärnyckel)
  • name (t.ex. 'Basic Plan', 'Premium Plan')
  • description (inkluderade funktioner)
  • price (produktens eller abonnemangets kostnad)

Abonnemangstabell:

  • id (primärnyckel)
  • user_id (främmande nyckel, länkar till tabellen users)
  • product_id (främmande nyckel, länkar till tabellen products)
  • status (t.ex. 'active', 'canceled')
  • start_date, end_date

Främmande nycklar är avgörande för att länka relaterade data mellan tabeller.

Introduktion till ORM

Att interagera direkt med databaser med SQL kan vara repetitivt och felbenäget. Det är här en Object-Relational Mapper (ORM) kommer in i bilden.

En ORM fungerar som en bro mellan applikationens objektorienterade kod (till exempel Java-klasser) och de relationella databastabellerna. Den gör det möjligt att interagera med databasen med hjälp av välbekanta objekt från programmeringsspråket, i stället för att skriva SQL-frågor direkt.

Tänk så här: du arbetar med objekt av typen 'User', och ORM:en översätter det till databaskommandon.

ORM: mappa objekt till tabeller

Med en ORM motsvarar varje databastabell ofta en modell eller entitetsklass i koden. Varje rad i tabellen blir en instans av den klassen.

Din tabell users skulle till exempel mappas till en klass User i programmeringsspråket.

ORM:en hanterar de komplexa detaljerna i mappningen av klassens egenskaper (som email) till databaskolumner (som email).

ORM i praktiken: datamanipulering

I stället för att skriva SQL som INSERT INTO users (email, password_hash) VALUES ('...', '...') kan du göra så här med en ORM:

public class Main {
  // Represents a User entity/model
  static class User {
    int id; // Maps to 'id' column
    String email; // Maps to 'email' column
    String passwordHash; // Maps to 'password_hash' column

    public User(String email, String passwordHash) {
      this.email = email;
      this.passwordHash = passwordHash;
    }

    // In a real app, ID would be set by DB or ORM upon saving
    public void setId(int id) { this.id = id; }

    @Override
    public String toString() {
      return "User{id=" + id + ", email='" + email + "'}";
    }
  }

  // Mock Repository to simulate ORM interaction
  static class UserRepository {
    private int nextId = 1;

    public User save(User user) {
      // Simulates ORM inserting into DB and setting ID
      user.setId(nextId++);
      System.out.println("Simulating saving user: " + user.email + " with ID " + user.id);
      return user;
    }
  }

  public static void main(String[] args) {
    UserRepository userRepository = new UserRepository();

    // Create a new User object
    User newUser = new User("alice@example.com", "hashedpass123");
    
    // Use the ORM (via repository) to save the user
    userRepository.save(newUser);

    System.out.println("User object after save: " + newUser);
  }
}

ORM i praktiken: hämta data

På samma sätt innebär hämtning av data att du arbetar med objekt. Inga fler `SELECT * FROM users WHERE id = 1;`

public class Main {
  static class User {
    int id;
    String email;
    String passwordHash;

    public User(int id, String email, String passwordHash) {
      this.id = id;
      this.email = email;
      this.passwordHash = passwordHash;
    }

    @Override
    public String toString() {
      return "User{id=" + id + ", email='" + email + "'}";
    }
  }

  static class UserRepository {
    // Mock data storage for demonstration
    private java.util.Map<Integer, User> users = new java.util.HashMap<>();

    public UserRepository() {
      users.put(1, new User(1, "bob@example.com", "hashed_bob"));
      users.put(2, new User(2, "charlie@example.com", "hashed_charlie"));
    }

    public User findById(int id) {
      System.out.println("Simulating finding user with ID: " + id);
      return users.get(id);
    }
  }

  public static void main(String[] args) {
    UserRepository userRepository = new UserRepository();

    // Use the ORM to find a user by ID
    User foundUser = userRepository.findById(1);

    if (foundUser != null) {
      System.out.println("Found user: " + foundUser);
    } else {
      System.out.println("User not found.");
    }

    User anotherUser = userRepository.findById(99);
    if (anotherUser == null) {
        System.out.println("User with ID 99 not found (as expected).");
    }
  }
}

Fördelar med att använda en ORM

ORM:er erbjuder flera fördelar vid SaaS-utveckling:

  • Mindre SQL-kod: Du skriver mindre repetitiv SQL och kan fokusera på affärslogiken.
  • Typsäkerhet: Du arbetar med objekt i programmeringsspråket och utnyttjar dess typsystem för att förebygga vanliga fel.
  • Databasoberoende: Många ORM:er gör det möjligt att byta databas (t.ex. från PostgreSQL till MySQL) med minimala kodändringar.
  • Ökad produktivitet: Utvecklingscyklerna blir snabbare tack vare abstraktionen.

Populära ORM:er är Hibernate (Java), SQLAlchemy (Python) och Entity Framework (.NET).

Kontroll av schema och ORM

Tänk på en enkel SaaS-applikation där användare kan skapa uppgifter. Varje uppgift tillhör en användare.

Vilket av följande påståenden är SANT när det gäller databasschemat och ORM:ens samspel i detta scenario?

Sammanfattning: schema och ORM

I den här lektionen undersökte vi den centrala rollen för ett databasschema som ritning för dina SaaS-data, där tabeller, kolumner och relationer definieras.

Vi utformade grundläggande scheman för centrala entiteter som User, Product och Subscription, och betonade betydelsen av primärnycklar och främmande nycklar.

Slutligen introducerade vi Object-Relational Mappers (ORM:er) som kraftfulla verktyg som förenklar databasinteraktioner genom att låta dig arbeta med objekt i stället för direkt SQL, vilket ökar produktiviteten och kodens underhållbarhet.

Gratis att börja

Lär dig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Databasschema och ORM” gratis?

Ja – hela texten till ”Databasschema och ORM” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning innehåller totalt 4 lektioner.

Vad lär jag mig i ”Databasschema och ORM”?

Utforma ett effektivt databasschema för centrala SaaS-entiteter och integrera en Object-Relational Mapper (ORM) för datahantering. Ni övar på AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning?

Du behöver inga förkunskaper. Utbildningen i AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Databasschema och ORM”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektionen?

Ja. Varje AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Principer för RESTful API-design
  2. Databasschema och ORM
  3. De första API-endpointsen
  4. API-paginering, filtrering och sortering
← Tillbaka till AI-drivna SaaS-appar: Stripe + autentisering + fakturering + driftsättning