Pushing skills to a new level

Published: (March 15, 2026 at 08:07 PM EDT)
4 min read
Source: Dev.to

Source: Dev.to

Introduction

As a developer, a professional, or just starting out, you must continually learn and hone your craft. A great way to accomplish this is to write down objectives and then create a side project.

The objective here is to create a contact solution using a SQL Server relational database and Microsoft EF Core to interact with it, implemented in a class project.

Database creation

Developers should consider using AI tools to build their databases, especially if they have limited experience with relational databases and proper indices.

Using ChatGPT to create the database

Prompt

For the contact database, the following prompt was used:

For Microsoft SQL Server, create a new relational database script for the following to create a contact database.
Database name: Contacts
Person table, gender reference table (Male, Female, Other), United States reference table, Address type reference table, Address table, Device table (Home phone, Work phone, Home email, Work email)
What other tables do I need?

The last sentence invites ChatGPT (or another tool) to make recommendations. In this case, several junction tables were included.

Note

A junction table (also known as an associative, bridge, or linking table) is a standard relational database design practice used to manage many‑to‑many relationships between two other tables.

Populating database tables

For reference tables, the ChatGPT‑generated script included several tables, including a gender table populated with data.

Executing the script created by ChatGPT

Using SSMS (SQL Server Management Studio)

  1. Create the Contacts database.
  2. Run the script generated by ChatGPT.
  3. Create a backup of the database.
  4. Fully populate one contact.

Read the contact using the following statement to validate the schema:

SELECT P.PersonId,
       P.FirstName,
       P.LastName,
       P.MiddleName,
       P.DateOfBirth,
       P.GenderId,
       G.GenderName,
       P.CreatedAt,
       P.UpdatedAt,
       D.IsActive,
       D.DeviceValue,
       DT.DeviceTypeName,
       DT.DeviceKind,
       DT.DeviceTypeId,
       P.Notes
FROM dbo.DeviceType AS DT
INNER JOIN dbo.Device AS D
        ON DT.DeviceTypeId = D.DeviceTypeId
INNER JOIN dbo.PersonDevice AS PD
        ON D.DeviceId = PD.DeviceId
INNER JOIN dbo.Person AS P
        ON PD.PersonId = P.PersonId
INNER JOIN dbo.Gender AS G
        ON P.GenderId = G.GenderId;
  • Continue with the current schema or make adjustments and re‑validate the schema.

Reverse engineering the database

This is best done with a Microsoft Visual Studio extension, EF Power Tools, which is easy to use.
Watch a 25‑minute demo for an introduction to the tool.

The reverse engineering is performed in a class project, allowing one or more frontend projects to work with the generated model.

Integration to a frontend

Select the frontend project type (desktop, mobile, or web). Rather than jumping straight into code or using an AI tool, first create a plan for the look and feel, identify which classes are needed for forms or pages, and add modals as required.

Planning

Two ways to start planning:

  • Using a document and images.
  • Using Gherkin syntax for Behaviour‑Driven Development (BDD).

Before coding

Create a GitHub repository for the solution (private or public) that houses only working code.

Coding

Take your time, follow your plan, and be prepared for the plan to evolve while coding; update it as needed.

Documentation

Documentation is essential—you may not fully understand code written today when you revisit it next week.

  • Each project needs a README.md to at least describe the project.
  • Document all classes, methods, and inline code.
  • For mobile and web projects, document CSS styles.

Summary

Although the database base code and script have been provided, try this out on your next learning project. The frontend project selection offers plenty to learn; resist the urge to use AI tools unless you are truly stuck. Remember, the primary goal is to learn—this is the number‑one reason to steer clear of “vibe coding.”

Source code

0 views
Back to Blog

Related posts

Read more »

Travigo

Travel as fast as you speak with Gemini! Where live agents meet immersive storytelling & 3D navigation. This project was created for entering the Gemini Live Ag...

Micro games

Hey Gamers! 👾 As part of the Rapid Games Prototyping module, we are tasked with reviewing a peer's game. The challenge is to analyse a prototype built in just...