AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie · Les

Databaseschema en ORM

Ontwerp een efficiënt databaseschema voor de belangrijkste SaaS-entiteiten en integreer een Object-Relational Mapper (ORM) voor gegevensinteractie.

Les 2 van 411 stappen

Databaseschema en ORM is een gratis AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie bevat in totaal 4 lessen.

Databaseschema: de blauwdruk

Stel je voor dat je een huis bouwt. Je begint toch niet zomaar met stenen leggen? Je hebt een blauwdruk nodig!

Een databaseschema is precies dat: een blauwdruk voor je database. Het definieert de structuur van je gegevens, waaronder de tabellen, kolommen, gegevenstypen en relaties ertussen.

Voor een SaaS-toepassing zorgt een goed ontworpen schema ervoor dat je gegevens consistent en eenvoudig te beheren zijn en efficiënt blijven werken naarmate je gebruikersbestand groeit.

Kernentiteiten van SaaS

Elke SaaS-toepassing werkt met bepaalde fundamentele stukjes informatie. Deze worden vaak entiteiten genoemd.

Veelvoorkomende entiteiten in de meeste SaaS-apps zijn:

  • Gebruikers: Wie gebruikt je dienst?
  • Producten/pakketten: Wat bied je aan?
  • Abonnementen: Hoe betalen gebruikers voor je dienst?
  • Betalingen: Registraties van transacties.

Elke entiteit wordt een tabel in je database.

De gebruikerstabel ontwerpen

Laten we beginnen met de entiteit User. Welke informatie hebben we voor elke gebruiker nodig?

Een eenvoudige tabel users kan er zo uitzien:

  • id (primaire sleutel, unieke identificatie voor elke gebruiker)
  • email (uniek, voor het inloggen)
  • password_hash (veilig opgeslagen wachtwoord)
  • created_at (tijdstip waarop de gebruiker zich heeft geregistreerd)
  • updated_at (tijdstip van de laatste profielupdate)

Elke kolom heeft een specifiek gegevenstype, zoals tekst, een getal of een datum.

Product- en abonnementstabellen ontwerpen

Laten we vervolgens kijken naar products en subscriptions.

Productentabel:

  • id (primaire sleutel)
  • name (bijvoorbeeld 'Basic Plan', 'Premium Plan')
  • description (opgenomen functies)
  • price (prijs van het product/pakket)

Abonnemententabel:

  • id (primaire sleutel)
  • user_id (vreemde sleutel, verwijst naar de tabel users)
  • product_id (vreemde sleutel, verwijst naar de tabel products)
  • status (bijvoorbeeld 'active', 'canceled')
  • start_date, end_date

Vreemde sleutels zijn cruciaal om gerelateerde gegevens in verschillende tabellen aan elkaar te koppelen.

Kennismaken met de ORM

Rechtstreeks met databases werken via SQL kan repetitief zijn en gemakkelijk tot fouten leiden. Dit is waar een Object-Relational Mapper (ORM) van pas komt.

Een ORM vormt een brug tussen de objectgeoriënteerde code van je toepassing (zoals Java-klassen) en je relationele databasetabellen. Je kunt ermee communiceren met je database via vertrouwde objecten uit je programmeertaal, in plaats van onbewerkte SQL-query's te schrijven.

Je kunt het zo zien: je werkt met objecten van het type 'User' en de ORM vertaalt dat naar databaseopdrachten.

ORM: objecten aan tabellen koppelen

Met een ORM komt elke databasetabel vaak overeen met een model of entiteitsklasse in je code. Elke rij in de tabel wordt een exemplaar van die klasse.

Zo wordt je tabel users gekoppeld aan een klasse User in je programmeertaal.

De ORM handelt de complexe details af van het koppelen van klasse-eigenschappen (zoals email) aan databasekolommen (zoals email).

ORM in actie: gegevens manipuleren

In plaats van SQL te schrijven zoals INSERT INTO users (email, password_hash) VALUES ('...', '...'), kun je met een ORM dit doen:

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 in actie: gegevens ophalen

Ook het ophalen van gegevens komt neer op het werken met objecten. Geen `SELECT * FROM users WHERE id = 1;` meer.

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).");
    }
  }
}

Voordelen van een ORM

ORM's bieden verschillende voordelen voor SaaS-ontwikkeling:

  • Minder SQL-code: Je schrijft minder standaard-SQL en kunt je richten op bedrijfslogica.
  • Typeveiligheid: Je werkt met objecten in je programmeertaal en benut het typesysteem ervan om veelvoorkomende fouten te voorkomen.
  • Databaseonafhankelijkheid: Met veel ORM's kun je van database wisselen (bijvoorbeeld van PostgreSQL naar MySQL) met minimale wijzigingen in de code.
  • Hogere productiviteit: Snellere ontwikkelcycli dankzij abstractie.

Populaire ORM's zijn Hibernate (Java), SQLAlchemy (Python) en Entity Framework (.NET).

Controle van schema en ORM

Bekijk een eenvoudige SaaS-toepassing waarmee gebruikers taken kunnen maken. Elke taak hoort bij een gebruiker.

Welke van de volgende uitspraken is WAAR met betrekking tot de interactie tussen het databaseschema en de ORM in dit scenario?

Samenvatting: schema en ORM

In deze les hebben we de cruciale rol onderzocht van een databaseschema als blauwdruk voor je SaaS-gegevens, waarin tabellen, kolommen en relaties worden gedefinieerd.

We hebben basisschema's ontworpen voor kerntiteiten zoals User, Product en Subscription, waarbij we het belang van primaire en vreemde sleutels hebben benadrukt.

Tot slot hebben we Object-Relational Mappers (ORM's) geïntroduceerd als krachtige hulpmiddelen die interactie met databases vereenvoudigen doordat je met objecten kunt werken in plaats van met onbewerkte SQL. Zo verhogen ze de productiviteit en wordt code gemakkelijker te onderhouden.

Gratis beginnen

Leer AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
12
Lessen
48

Veelgestelde vragen

Is de les “Databaseschema en ORM” gratis?

Ja — de volledige tekst van “Databaseschema en ORM” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie bevat in totaal 4 lessen.

Wat leer ik in “Databaseschema en ORM”?

Ontwerp een efficiënt databaseschema voor de belangrijkste SaaS-entiteiten en integreer een Object-Relational Mapper (ORM) voor gegevensinteractie. Je oefent met AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie te beginnen?

Ervaring vooraf is niet nodig. AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “Databaseschema en ORM”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie?

Ja. Elke les over AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Ontwerpprincipes voor RESTful API's
  2. Databaseschema en ORM
  3. Eerste API-eindpunten
  4. API-paginering, filtering en sortering
← Terug naar AI-aangedreven SaaS: Stripe + authenticatie + facturering + implementatie