Tag: Database Design

How to Become a Database Designer

Database modeling has some science, some art, a lot of techniques, and quite a bit of general wisdom. All good database modelers study a lot, practice a lot, cultivate creativity, and develop interpersonal skills. The road to becoming a database designer may seem arduous. But if you enjoy working with data, giving structure where there seemingly is none, and helping people find hidden truths in tides of information, you will definitely find the journey enjoyable.

Database Design for Audit Logging

Thinking of a database design for audit logging? Remember what happened to Hansel and Gretel: they thought leaving a simple trail of breadcrumbs was a good way to trace their steps. When we design a data model, we are trained to apply the philosophy that now is all that exists. For example, if we design a schema to store prices for a product catalog, we may think that the database only needs to tell us the price of each product at the present moment.

What Skills and Knowledge Do Database Designers Need?

Feeling overwhelmed by the amount of time it will take you to learn to be a database designer? Read about the essential skills and talents you’ll need – it’s not so terrible! When you walk down the aisles of the supermarket, shopping cart in one hand and grocery list in the other, what are you thinking? If you're like me, you're imagining how to improve the organization of the shelves so that your weekly shopping is less time-consuming.

Why Do You Need Data Modeling?

You need data modeling to save yourself or your organization lots of money, hours, and issues. Read on to find out how data models do its magic. Data modeling is the process of creating a conceptual view of the information a database contains or should contain. As a result of this process, a data model is created, giving form to data objects (all those entities for which information is to be stored), the associations or relationships among them, and rules or restrictions that govern the information that enters the database.

What Is a Candidate Key in Database Design?

A candidate key is an important concept in database normalization. Read on to find out what a candidate key is and how to check if a set of attributes is a candidate key. The candidate key, also simply called a key, is an important part of database design. It is the theoretical foundation for technical concepts like primary and alternate (unique) keys. Every database designer should be aware of how to identify candidate keys and how to choose the right one for their table.

Database Design With Vertabelo

Database design goes way beyond just drawing lines and boxes. In this article, I reflect on the process of data modeling with an emphasis on best practices, as well as on how to use tools to implement those best practices to create a good database design. Database design is the process of producing a detailed model of a database. The start of database modeling involves getting a grasp on the business area and the functionality being developed.

What Is a One-to-One Relationship in a Database?

What is a one-to-one relationship in data modeling? How do you implement this relationship in a database? The examples in this article will answer these questions. There are three types of relationships between entities (tables) in data modeling: One-to-many relationships (also denoted as 1:M). Many-to-many relationships (M:N). One-to-one relationships (1:1). The most common type of relationship is a one-to-many relationship, where a record in one entity can be referenced by multiple records in another entity.

What Is a One-to-Many Relationship in a Database? An Explanation with Examples

One-to-many relationships are one of the most common database relationships. If you want to learn when and how to use one-to-many relationships, then this article is a great starting point. You will surely use one-to-many relationships to store information in any relational database, whether you are designing enterprise-level software or just creating a simple database to keep track of your uncle’s stamp collection. A Brief Introduction to the Relational Model Relational databases are a core component of any modern transactional application.

What Is a Many-to-Many Relationship in a Database? An Explanation with Three Examples

What is a many-to-many relationship in database modeling? How do you implement this relationship in a database? The examples in this article will answer these questions. Many-to-many relationships are probably the trickiest relationships to show in a database. So, my first step in this article will be to explain what they are. Then I’ll move on to giving you several examples of many-to-many relationships, keeping them as close to real life as possible.

Common ER Diagram Mistakes

Get to know the ER (Entity Relationship) diagram, its parts, and what often goes wrong when creating it. Have you ever created a relational database model? Or maybe you're trying to create your first one? You know (or you'll soon find out) that translating real-world problems to database logic can sometimes be quite difficult. One of the tools that might help you is the ER diagram. Common database design wisdom holds that the better your ER diagram, the easier it will be to build the database model.

Integrated Transport Data Model

Integrated transport is something we often hear about on the internet or in the news. While it’s not something new, it’s definitely an ongoing process, with constant changes being implemented. Today, we’ll take a look at a data model that could handle zone, passenger, and ticket info. Let’s dig right into our integrated transport data model, starting with the idea behind it all. Idea Integrating transportation is necessary to maximize its efficiency and, for customers, its easy use.

Payroll Data Model

A payroll data model allows you to easily calculate your employees’ salary. How does this model work? No matter whether you’re running a small or large company, you need some kind of payroll solution. That’s where a payroll application comes in handy. Plus, the bigger the company, the harder it gets to handle the employees' salary calculations; here, a payroll application becomes a necessity. To help you understand all the data required for such an application, we’ll walk you through a related data model.

911/112: An Emergency Call Service Data Model

Calling an emergency number like 911 or 112 is not something we’re looking forward to, but we’re glad to have it when we need it! On the other end of the line, it’s a stressful job, and there’s little room for mistakes. Everything needs to work perfectly. Today, we’ll take a look at the data model an emergency service could use to process and respond to incoming calls.

A Public Opinion Agency Data Model

How does all that public opinion data get stored? We check out an opinion poll data model. Everyone wants to know what the public thinks, from politicians and companies to individuals who want to know what others think on a certain topic. This kind of job is usually performed by agencies that specialize in that type of research. Today, we’ll take a look at a data model such an agency could use to store all relevant poll data, from questions and predefined answers to the actual feedback.

Track Signals with a Signal Processing Data Model

Cameras, revolving doors, elevators, temperature sensors, alarms – all of these devices produce a large number of interconnected signals that are related to events happening around us. Now imagine you’re the person who needs to track statuses, produce real-time reports, and make predictions based on all this signal data. To do this, you’d first need to store that data. A data model that supports such signal processing is the topic of today’s article.

A Library Data Model

What data model would allow you to comfortably search for books and borrow them in your local library? Have you ever gone to a library and borrowed a book? Maybe that seems old-fashioned in today's world of instant internet knowledge and e-books. But I'm sure there's still this analog part of you that still likes to smell, touch, and read books. Or maybe you were forced to use a library when you couldn't find something on the internet!

Using Python and MySQL in the ETL Process: Using Python and SQLAlchemy

In the previous two articles of this series, we discussed how to use Python and SQLAlchemy to perform the ETL process. Today we’ll do the same, but this time using Python and SQL Alchemy without SQL commands in textual format. This will enable us to use SQLAlchemy regardless of the database engine we’re connected to. So, let’s start. Today we’ll discuss how to perform the ETL process using Python and SQLAlchemy.

Using Python and MySQL in the ETL Process: SQLAlchemy

SQLAlchemy helps you work with databases in Python. In this post, we tell you everything you need to know to get started with this module. In the previous article, we talked about how to use Python in the ETL process. We focused on getting the job done by executing stored procedures and SQL queries. In this article and the next, we’ll use a different approach. Instead of writing SQL code, we’ll use the SQLAlchemy toolkit.

Using Python and MySQL in the ETL Process

Python is very popular these days. Since Python is a general-purpose programming language, it can also be used to perform the Extract, Transform, Load (ETL) process. Different ETL modules are available, but today we’ll stick with the combination of Python and MySQL. We’ll use Python to invoke stored procedures and prepare and execute SQL statements. We’ll use two similar-but-different approaches. First, we’ll invoke stored procedures that will do the whole job, and after that we’ll analyze how we could do the same process without stored procedures by using MySQL code in Python.

Designing a Database for a Recruitment System

Do you want to learn how to design a database system and map a business process to a data model? Then this post is for you. In this article, you’ll see how to design a simple database schema for a recruitment company. After reading this tutorial, you will be able to understand how database schemas are designed for real-world applications. The Recruitment System Business Process Before designing any database or data model, it is imperative to understand the basic business process for that system.

A SaaS Subscription Data Model

SaaS (Software as a Service) is one of the three main components of Cloud computing. Usually, SaaS applications are web-based and can handle many different users at one time. Subscription-based solutions are very popular SaaS offerings. Some well-known SaaS products include Microsoft Office 365, Amazon Web Services (AWS), Slack, Jira, Stripe, and (of course) Vertabelo! Today we’ll take a look at a data model that would allow us to manage SaaS subscriptions.

The Important Dates Data Model

Are you forgetting something? A data model to help you remember important dates – before they happen. Have you ever forgotten an important date – your mom’s birthday or your anniversary? Or that you’re giving a lecture? Yup, things like that happen in real life. Maybe not to all of us, but to some of us (including me), they certainly do. To prevent such disasters, we’ll create a data model you could use as the background for an application that will notify you right on time.

A Peer-to-Peer Lending Platform Data Model

There are many online portals which allow investors to lend money directly to individual borrowers – with no banks acting as intermediaries. What data model might underlie such a site? Online lending platforms bring borrowers and investors together and allow them to choose to whom they want to lend their money (in the case of investors) and who they want to borrow money from (in the case of borrowers). Some peer-to-peer lending sites also allow borrowers and investors to make their own deals in terms of lending rates (i.

Automobile Repair Shop Data Model

Running an automobile/car repair shop is a really complex business. You’ll need to make appointments while some customers will drive in and you don’t want to have them wait for hours. Also, you’ll need to organize employees, track repairs, materials, charge customers, etc. You’ll definitely need an IT solution and, of course, a data model in the background. Today we’ll talk about one such model. The Idea I’ve already mentioned that this business model is really complex.

The Smart Home Data Model

Smart homes used to be strictly in the future; now they are a reality. Most of us have heard about them, but they are not so widespread as they will be in the near future. Managing your home the ‘smart’ way will definitely produce a lot of data. Today, we’ll analyze a data model we could use to store smart home data. The Data Model When you think of a smart home, you probably think of remotely locking and unlocking your home, activating alarms, lights, or cameras from your phone, having thermometers that automatically manage your heating and cooling, etc.

The 9 Most Common Database Design Errors

You’ve probably made some of these mistakes when you were starting your database design career. Maybe you’re still making them, or you’ll make some in the future. We can’t go back in time and help you undo your errors, but we can save you from some future (or present) headaches. Reading this article might save you many hours spent fixing design and code problems, so let’s dive in. I’ve split the list of errors into two main groups: those that are non-technical in nature and those that are strictly technical.

A Subscription Business Data Model

In the previous two parts, we’ve presented the live database model for a subscription-based business and a data warehouse (DWH) we could use for reporting. While it’s obvious that they should work together, there was no connection between these two models. Today, we’ll take that next step and write the code to transfer data from the live database into our DWH. The Data Models Before we dive into the code, let’s remind ourselves of the two models we’ll work with.

A Subscription Business Data Model

Can you design an OLAP database model from an OLTP model? In this article, we’ll show you how! This is the second article of our data warehouse (DWH) series. You can find the first one here. The idea behind the series is to start with the OLTP (Online Transaction Processing) database model, present a possible solution for the reporting/OLAP (Online Analytical Processing) data model, and then finally consider the code we’ll use to perform the ETL process.

Querying MySQL’s INFORMATION SCHEMA: Why? How?

Databases need to run optimally, but that’s not such an easy task. The INFORMATION SCHEMA database can be your secret weapon in the war of database optimization. We’re used to creating databases using a graphical interface or a series of SQL commands. That’s completely fine, but it’s also good to understand a bit about what is going on in the background. This is important for the creation, maintenance, and optimization of a database, and it’s also a good way to track changes that happen ‘behind the scenes’.

A Subscription Business Data Model

Welcome to a new series that shows you the practical side of the data warehouse (DWH)! In the first article, we’ll tackle a data model for a subscription business. In previous data warehouse articles (The Star Schema, The Snowflake Schema, Star Schema vs. Snowflake Schema) we focused more on the theory. In this series, we’ll show you how you could create a data warehouse for a real-life application, such as a database model.

A Marathon Training App Data Model

Do you dream of running a marathon? Let’s look at the data model for an app that could take you from lazy couch potato to marathoner. What do you need to run a marathon? You’ll need enthusiasm and determination. A good pair of running shoes. And lots of physical training! Let’s say you have an app that helps you go from novice runner to marathon finisher. What would the data model look like?

The Secrets of Dominoes, or A Domino Game Data Model

Board games like dominoes are still very popular. Let’s take a look at dominoes from a data modeling point of view. The game of dominoes has been around for hundreds of years, and it’s played all over the world. As you might expect, this means a lot of variations in play! In this article, we’re going to examine a data model that could support the most common variants – draw and block.

Spreadsheets vs. Databases: Is It Time to Switch? Part 2

Spreadsheets – Excel, Google Sheets, or a sheet by any other name – are really cool and powerful tools. But then, so are databases. When should you stick with a spreadsheet? When should you move up to a database? This is the continuation of my previous article “Spreadsheets vs. Databases: Is It Time to Switch?” where we’ve discussed the most common disadvantages of using spreadsheets to organize lots of data.

Spreadsheets vs. Databases: Is It Time to Switch? Part 1

Spreadsheets – Excel, Google Sheets, or a sheet by any other name – are really cool and powerful tools. But then, so are databases. When should you stick with a spreadsheet? When should you move up to a database? You can use spreadsheets and databases for similar purposes. Given that both organize data and facilitate reporting, at times it can be hard to determine which is the best one to use.

Earn Money with Unused Stuff: A Sharing Economy Data Model

There isn’t much chance you’ve missed the whole idea of the sharing economy – whether you like it or not. Popularized by companies like Airbnb, Uber, Lyft, and many others, it lets people earn some cash by renting out their unused stuff. Let’s see the data model behind such an application. Got a spare room? Sign up with Airbnb and make some extra money renting it out. Got a car and some free time?

A Grocery Delivery Data Model

If there’s a way to order groceries online, why not use it? This article examines the data model behind a grocery store’s delivery system. We still get a special feeling from picking something from the garden and then preparing it right away – but it’s not something we can do often. Today’s fast pace doesn’t allow it. In fact, sometimes it doesn’t even allow us to go to the store to “pick” our groceries.

Tap and Park: A Parking App Data Model

Various apps promise to make your search for parking painless. Let’s examine this type of app using our data modeling glasses. What does the underlying model look like? In an earlier article, we explained how a parking lot is structured and how a data model can be designed to manage one. In this article, we are examining the data model for a parking app. You know these apps: they list nearby parking options, tell you the prices, and let you book or reserve a space or buy a parking pass.

A Children’s Party Data Model

Organizing children's parties is not an easy job: everything has to be perfectly planned and delivered. Otherwise, chaos happens. It’s up to the adults – more specifically, the party planners – to take care of everything and do it properly. Is there a better way to do this than to organize everything in a database? We don’t think so! Children’s parties vary a lot. Some are simple, like birthday parties that include just invitations, food (snacks, beverages, and a cake) and maybe a clown or a magician to entertain the kids.

A Restaurant Delivery Data Model

Hungry but you don’t want to cook? Call up a restaurant, order your favorite meal, and read about a data model that can organize the whole process. Despite an abundance of “time-saving” technology, we seem to have less time to fulfill basic needs – such as eating. If we want to eat something but we don’t have the time (or the skills) to cook it ourselves, we can order food from a restaurant (i.

A Data Model for a Weather App

Lots of people use mobile weather apps to plan their day – or at least decide if they need to carry an umbrella! What sort of data model lies underneath these popular programs? We all want to know how nasty the weather is before we step outside. Windows, iOS, and Android apps give us accurate and reliable information about current weather conditions. This article explains a detailed data model that could be used for such apps.

A Data Model for Trading Stocks, Funds, and Cryptocurrencies

Trading cryptocurrencies, buying stocks, and the like is extremely popular these days – it’s perceived as easy profit. Prices are currently rising, but we can’t know when that will change. On the other hand, we know it will at some point. But we’re not here to make financial predictions. Instead, we’ll talk about a data model that can be used to support the trade of cryptocurrencies and financial instruments like stocks or fund shares.

Star Trek 3D Chess Data Model

If you’re a Star Trek fan, you likely know that Captain Kirk and Mr. Spock frequently play a variant of chess called Tri-Dimensional Chess, or 3D chess, a game that’s similar to standard chess but with notable differences. In this article, we’ll build a data model for a 3D chess application that allows players to compete against each other. Beam us up, Scotty! The Concept of 3D Chess While chess itself is already a complex game, combining boards and multiple sets of pieces can significantly increase the game’s complexity.

Delivering Christmas Presents: Santa’s Data Model

With the holidays quickly approaching, Santa needs some additional help to deliver presents to children around the world. Today, we’ll develop a data model that can help Santa and his elves work more efficiently. Background Santa’s job is extremely important, so he needs to do everything he can to ensure on-time success. Just remember all the problems Howard encountered in ‘Jingle All the Way’ when trying to find a single Turbo Man figure—we can’t let Santa slip up again, or his reputation will be ruined.

Constructing a Data Model for a Parking Lot Management System

Research shows that cars remain parked for 95% of their lifetime, suggesting that parking lot management systems should be smart, efficient, and robust. In this article, we’ll construct a data model for such a system. Introduction Before we begin constructing our data model, we should first understand how parking lots are structured and how they operate. Let’s take a brief look at these two key areas. How are parking lots structured?

Wedding Organization Data Model

Weddings are often accompanied by merriment and celebration, with numerous guests, food, drinks, music, and dancing. But all of this can’t happen without the proper preparation and coordination. Let’s take a closer look at how data modeling can help us better organize a wedding so everything runs smoothly. Preliminary Background Though we’re mostly all aware of what a typical wedding ceremonies looks like, it can’t hurt to briefly consider some aspects that could potentially impact our data model.

Life Insurance Data Model

Life insurance is something we all hope we won’t need, but as we know, life is unpredictable. In this article, we’ll focus on formulating a data model that a life insurance company may use to store its information. Life Insurance as a Concept Before we start discussing the actual data model for a life insurance company, we’ll briefly remind ourselves of what insurance is and how it works so we have a better idea of what we’re working with.

Modeling an Open Marketplace for Education

Keeping up with the latest changes in technology is necessary if you want to get ahead in today’s competitive job market. In this article, we’ll build a data model for online portals that offer a more engaging platform for learning new skills, using Native Monks as our guide. Introduction In one of our recent articles, we built a working data model for an e-learning portal, and we explained how courses can be split into recorded/transcript lessons and made available to students.

A Pet Care Data Model

Pet care is a huge industry. Is there a data model that can help pet owners and professionals manage their activities? There is now! Many people share their lives with cats, dogs, birds, and other animals. (I once had a pigeon for a while, until its wing mended.) What a lot of pet owners don't realize is just how big a business pet care is. In the United States, pet owners spent $66.

Hire or Get Hired: A Data Model for the Recruitment Process

No matter which side of the equation you’re on, sometimes it’s tough to find a qualified person for a specific job. In this post, we look at a data model to help recruiters and HR departments stay organized during the hiring process. Most of us have been involved in the hiring process – most often as the job applicant. However, we can also find ourselves involved on the hiring side, maybe by testing the applicant’s technical knowledge.

A Data Model for a Medical Appointment Booking App

Booking a doctor’s appointment using an online app is an innovation that simplifies the entire process. Let’s dive into the data model behind an appointment booking app. Why use an app? It makes it easier for people to find the doctors of their choice, letting them see the doctor’s professional records and patient reviews. When someone finds a doctor they like, they can book an appointment with them without leaving the app.

An Event Management Data Model

Organizing an event is a lot of work! In this article, we examine the data model behind an event organization app. If you’ve ever tried to organize an event for more than ten people (and don’t count parties or business meetings here) you know how complicated event management can be! Have we invited everyone? Have they confirmed if they are coming? Is the venue booked and prepared? Who will host the event?

A Real Estate Agency Data Model

Other than location, what’s it take to run a successful real estate business? We examine a data model to help real estate agencies stay organized. Buying, selling, and renting apartments or houses is really big business today. Most people are happy to pay a fee and let a professional real estate agency do the work for them. On the other hand, the company could act in its own behalf, buying properties to resell or rent.

A Data Model to Keep Track of Your Most Precious Possession

Being healthy and fit is a lifestyle, not a fad. People who realize the value of health make it a priority, keeping records of all their fitness-related facts. In this article, we’ll examine the design of the database behind a health and fitness application. There are many applications which let users log their health and fitness information. A couple of big players like Apple, Google, and Microsoft have launched their own development APIs specifically for this market.

Improving Our Online Job Portal Data Model

In this era of tough competition, job portals are not just platforms for publishing and finding jobs. They are leveraging advanced services and features to keep their customers engaged. Let’s dive into some advanced features and build a data model that can handle them. I explained the basic features needed for a job portal website in a previous article. The model is shown below. We’ll consider this model as a base, which we will change to meet the new requirements.

Designing a Database for an Online Job Portal

Across the globe, the job portal site is a well-known feature of the Internet landscape. Big players like Indeed and Monster have turned job hunting and recruiting into a veritable online industry. Let’s dive into the elementary features leveraged by job portals and build a data model that can support them. People love saving time by using technological innovations; the online job portal is another version of working smarter, not harder.

A Database Model for a MOOC Platform

If you ran a MOOC online learning platform like edX or Coursera, how would you keep it organized? In this article, we’ll look at a database model that would do the job. You’ve probably heard of MOOC (Massive Open Online Course), a trending way to learn online. And if you haven’t, think of a MOOC program as university subjects with all materials, tests, and feedback available online. Two of the most popular online MOOC providers are Coursera (founded by Stanford University) and edX (founded by Massachusetts Institute of Technology and Harvard University).

A Database Model for a Taxi Service

Call them taxis or cabs, these convenient rides for rent have been around for centuries. Nowadays, it’s a lot more complicated to run a taxi service. In this article, we’ll look at a database model designed to meet the needs of a cab company. The history of “calling a cab” began in 17th century London. In most places, cabs are more affordable than ever. They are also becoming a lot more accessible: we can order a taxi by phone, via mobile applications, or on the Web.

Database Models for E-Commerce Part 1: The Newsletter

In general, people do not like receiving unsolicited e-mails. Nevertheless, they sometimes subscribe to newsletters in order to get a discount or to keep up-to-date with new products. This article will present one approach to designing a newsletter database. Why Worry About Newsletter Emails? Newsletter subscribers represent an extremely valuable group of clients – they are interested in our products, they trust us, and they spend time reviewing our offers and promotions.

Again and Again! Managing Recurring Events In a Data Model

A recurring event, by definition, is an event that recurs at an interval; it’s also called a periodic event. There are many applications which allow their users to setup recurring events. How does a database system manage recurring events? In this article, we’ll explore one way that they are handled. Recurrence is not easy for applications to deal with. It can become a hurricane task, especially when it comes to covering every possible recurring scenario – including creating bi-weekly or quarterly events or allowing the rescheduling of all future event instances.

Serving Delicious Food (and Data) – A Data Model for Restaurants

What part does database design play in running a restaurant? What might the data model for a restaurant database look like? Find out in this article. A restaurant serves people with ready-made food. This is a type of business that is thriving all over the world, and often with a lot of flare. People feel very comfortable going to restaurants, and they are starting to expect a wide range of options when it comes to their next meal.

Does Evolving Contact Information Mean Changing Your Database?

There are a number of ways to contact someone these days, right? We have various phones: mobile and landline, personal and work. We have different addresses – residential, mailing, billing, business, etc. – and likely several email addresses, too. Don’t forget Skype and various messaging apps. Now add in LinkedIn and Facebook –which by the way, both have their own messaging elements. Not that long ago, many of these didn’t exist.

What Do the Olympic Games, UEFA Euro 2016 Football Matches, and Databases Have In Common?

On hearing what I do, people tend to ask me the same question: Can you develop a system that predicts football match results? Or Olympic medal outcomes? Personally, I don’t put much faith in predictions. Still, if we had a large amount of historical data and relevant indicators, we could certainly design a system to help us come up with more accurate assumptions. In this article, we’ll consider a model that can store the results of matches and tournaments.

Dimensions of Dimensions: A Look at Data Warehousing’s Most Common Dimensional Table Types

When we start a data warehousing project, the first thing we do is define the dimensional tables. Dimensional tables are the interesting bits, the framework around which we build our measurements. They come in many shapes and sizes. In this article, we are going to take a closer look at each type of dimensional table. Dimensional tables provide context to the business processes we wish to measure. They tell us all we need to know about an event.

Party Relationship Pattern. How to Model Relationships

Relationships are everywhere: between people, between organizations, between organizations and people. Think about being an employee of a company, being a member of a project team, or being a subsidiary of another company. Is there a straightforward way to accurately model and manage all these relationships? Can we easily answer the question ‘Who knows who?’ A Quick Review of Relationships Exactly how this basic model was derived was described in my previous article, Flexible and Manageable Bill of Materials (BOM) Designs.

Flexible and Manageable Bill of Materials (BOM) Designs

The bill of materials design pattern is deceptively simple, yet incredibly powerful. This article will introduce an example, familiar to IT professionals, that you may not have thought fits the BOM pattern. It will also introduce concepts to show you how to make your BOM structures more flexible and much easier to manage. A Short Recap of the BOM A bill of materials has its roots in manufacturing. It is a list of the raw materials, sub-assemblies, intermediate assemblies, sub-components, parts, and the quantities of each needed to manufacture an end product.

MMO Games and Database Design

Let’s be honest: we all love to play games, especially on our computers. Until the Internet became widespread, most of us played computer games by ourselves, usually against AI opponents. It was fun, but as soon as you realized how the gameplay mechanics worked, the game lost most of its magic. The development of the Internet moved games online. Now, we can play against human opponents and test our skills against theirs.

Identifying the Bill of Materials (BOM) Structure in Databases

The bill of materials (BOM) design pattern is deceptively simple, yet incredibly powerful. Historically, it’s been employed to model product structures, but the pattern can be used to do much more than simply define a hierarchy. This article will introduce three very different examples to help you to recognize the pattern in your own projects. What Is a Bill of Materials, or BOM? A bill of materials has its roots in manufacturing.

Beverly Hills 90210 and ZIP+4: Handling Addresses in Data Models

In my last post, I wrote about ensuring that your data model properly handles global information: numbers, currencies, phone numbers, addresses, dates, and time zones, among other things. However, I’ve realized that many example data models have exactly the “self-centric” or “Amero-centric” approach that I cautioned against. As an American living abroad (for almost 30 years now), I often find that people make too many assumptions about the universality of what they know.

Looking for a Simple Full-Text Search? Try MySQL InnoDB + CakePHP with Word Stemming

Implementing a user-friendly search can be tricky, but it can also be done very efficiently. How do I know this? Not long ago, I needed to implement a search engine on a mobile app. The app was built on the Ionic framework and would connect to a CakePHP 2 backend. The idea was to display results as the user was typing. There were several options for this, but not all of them met my project’s requirements.

7 Key Things to Remember About Data Model Globalization

Very few database authors mention the challenges of globalization and localization in any meaningful way. There’s a similar lack of foresight from database architects. The fact is that many authors and designers are frequently very ‘self-centric’: they create (or write about) data models that only properly handle their local time zones, addresses, etc. A self-centric approach has a big problem: the resulting model will only support local data. In today’s Internet-fueled world, applications are often unexpectedly accessed by users around the globe.

What Do Poker, Blackjack, Belot and Préférence Have to Do with Databases?

How to design a database flexible enough to accommodate several very different card games. Recently, we showed how a database could be used to store board game results. Board games are fun, but they’re not the only online version of classic games going. Card games are also very popular. They introduce an element of luck into gameplay, and there is much more than luck involved in a good card game!

Star Schema vs. Snowflake Schema

In the previous two articles, we considered the two most common data warehouse models: the star schema and the snowflake schema. Today, we’ll examine the differences between these two schemas and we’ll explain when it’s better to use one or the other. The star schema and the snowflake schema are ways to organize data marts or entire data warehouses using relational databases. Both of them use dimension tables to describe data aggregated in a fact table.

How to Design a Localization-Ready System

In this era of globalization, companies – including software developers – are always interested in expanding to new markets. This often means localizing their products for different areas. In this article, we’ll explain a few approaches to designing your data model for localization – specifically, for managing content in multiple languages. What Is Localization? Localization is the process of adapting a product to various markets. It is a prominent factor in achieving maximum market share in terms of product sales.

The Snowflake Schema

In a previous article we discussed the star schema model. The snowflake schema is next to the star schema in terms of its importance in data warehouse modeling. It was developed out of the star schema, and it offers some advantages over its predecessor. But these advantages come at a cost. In this article, we’ll discuss when and how to use the snowflake schema. The Snowflake Schema if (typeof VertabeloEmbededObject === 'undefined') {var VertabeloEmbededObject = "

Security Approaches in Data Modeling. Part 4

This is the fourth in our multi–part series on data modeling for information security as well as data characteristics. A simple data model for a fictional website that supports shared–interest organizations (bird–watching clubs, etc.) has provided us with content for exploring data modeling from a security viewpoint. In Oscar Wilde’s play Lady Windermere’s Fan, Lord Darlington tags a cynic as “somebody who knows the price of everything, and the value of nothing.

The Star Schema

Today, reports and analytics are almost as important as core business. Reports can be built out of your live data; often this approach will do the trick for small- and medium-sized companies without lots of data. But when things get bigger – or the amount of data starts increasing dramatically – it’s time to think about separating your operational and reporting systems. Before we tackle basic data modeling, we need some background on the systems involved.

Database Design

I’ve been practicing agile database techniques for about twenty years now. My use of these techniques didn’t start as a set plan; rather, it evolved over time as I consulted on various projects. It made sense to look for ways of working faster and with greater customer interaction. I can think of at least three kinds of agile database techniques: Data modeling Data warehouse development Database reverse engineering Agile Data Modeling Many think of data modeling as a laborious task.

Part 3 – Customers, Calls, and Meetings

Previously in this series, we imported SuiteCRM’s database model into Vertabelo and showed how to use Vertabelo’s features to organize it. In this article, we’ll see how common CRM data is stored in its database. We’ll also check the assumptions made in Part 2 about the relations between tables and their functions. If needed, we’ll make modifications to the model. What Do We Currently Have? In Part 1, we installed SuiteCRM locally using the Bitnami installation pack.

Using Configuration Tables to Define the Actual Workflow

The first part of this series introduced some basic steps for managing the lifecycle of any entity in a database. Our second and final part will show you how to define the actual workflow using additional configuration tables. This is where the user is presented with allowable options each step of the way. We’ll also demonstrate a technique for working around the strict reuse of ‘assemblies’ and ‘sub-assemblies’ in a Bill of Materials structure.

Crow’s Foot Notation

The most recognizable characteristic of crow’s foot notation (also known as IE notation) is that it uses graphical symbols to indicate the ‘many’ side of the relationship. The three-pronged ‘many’ symbol is also how this widely-used notation style got its name. Let’s see where crow’s foot is placed in the history of data modeling and take a look at its symbols. History: How Crow’s Foot Notation Got Started The beginning of crow’s foot notation dates back to an article by Gordon Everest (1976, Fifth Computing Conference, IEEE).

Denormalization: When, Why, and How

Databases are designed in different ways. Most of the time we can use “school examples”: normalize the database and everything will work just fine. But there are situations that will require another approach. We can remove references to gain more flexibility. But what if we have to improve performance when everything was done by the book? In that case, denormalization is a technique that we should consider. In this article, we’ll discuss the benefits and disadvantages of denormalization and what situations may warrant it.

Using Workflow Patterns to Manage the State of Any Entity

Have you ever come across a situation where you need to manage the state of an entity that changes over time? There are many examples out there. Let’s start with an easy one: merging customer records. Suppose we are merging lists of customers from two different sources. We could have any of the following states arise: Duplicates Identified – the system has found two potentially duplicate entities; Confirmed Duplicates – a user validates the two entities are indeed duplicates; or Confirmed Unique – the user decides the two entities are unique.

Security Approaches in Data Modeling. Part 3

This is the third of our multi-part series on applying information security approaches to data modeling. The series uses a simple data model, something to manage social clubs and interest groups, to provide the content we look to secure. Later we will address modeling for authorization and user management, as well as other parts of a secure database implementation. In social situations, it’s common to “read between the lines” – deducing the unspoken assumptions and assertions in a conversation.

Part 2 – How to Organize a Large Database Diagram

In Part 1 of this series, we successfully imported the SuiteCRM database structure into our online database modeling tool. That’s when we saw that the model contains 201 tables without relationships between them. We got a wild bunch of tables that looked really messy. In this article, I will show you how you can organize such a large model. Just after importing to Vertabelo, the SuiteCRM database model looks as follows:

13 Blog Articles on Database Design Best Practices and Tips

There’s a lot to keep in mind when you’re designing a database, and very few of us can remember every valuable tip and trick we’ve learned. So, let’s take a look at some online resources that feature database design tips and best practices. As we go, I’ll share my own opinions on the ideas presented, based on my experience in database design. Obviously, this article is not an exhaustive list, but I’ve tried to review and comment on a cross section of sources.

Part 1 – How to Install SuiteCRM and Reverse Engineer Its Database

Customer Relationship Management applications (CRMs) have been around for some time. We could argue a lot about their advantages and disadvantages when comparing them to each other. In this series, we’ll take a look at the database behind one popular open-source CRM: SuiteCRM. We will also show how to install everything we need. In upcoming articles, we’ll organize the data model and see how it reacts to changes made on the user interface.

Viewing Holidays With Data Modeler’s Eyes

Celebration!! Family time!! Long drive!! A day at the beach!! All these words buzz into our minds when we think of holidays. Have you ever considered how a multinational company keeps track of holidays across the globe? There must be a data dictionary to maintain all these details so that they can ensure seamless business with their local partners. This article will explain such a data model. The Project Requirements in a Nutshell I have quite simple and straightforward requirements this time.

“Is It Secret? Is It Safe?” Handling Sensitive Data in Your Data Modeling

Early in the movie “The Fellowship of the Ring”, the wizard Gandalf asks the hero Frodo this question: “Is it secret? Is it safe?” We may not have a magic ring to protect, but we’re asking the same question. But we’re talking about information. This is the second in a multi-part series on how to apply information security principles and techniques as part of data modeling. This series uses a simple data model designed to manage non-commercial clubs as an example of security approaches.

The Reference Data Pattern: Extensible and Flexible

Having reference tables in your database is no big deal, right? You just need to tie a code or ID with a description for each reference type. But what if you literally have dozens and dozens of reference tables? Is there an alternative to the one-table-per-type approach? Read on to discover a generic and extensible database design for handling all your reference data. This unusual-looking diagram is a bird’s-eye view of a logical data model (LDM) containing all the reference types for an enterprise system.

19 Online Resources for Learning About Database Design Errors

We all make mistakes, and we can all learn from other people’s mistakes. In this post, we’ll take a look at numerous online resources for avoiding poor database design that can lead to many problems and cost both time and money. And in an upcoming article, we’ll tell you where to find tips and best practices. Database Design Errors and Mistakes to Avoid There are numerous online resources to help database designers avoid common errors and mistakes.

WordPress – Behind the Scenes, Part 2

In Part 1 of this series, I demonstrated how to install WordPress locally and how to import a WordPress database into Vertabelo. In this article, we’ll take a closer look at the tables in the WordPress database. A Quick Look at the WordPress Database Model and the Dashboard In the previous part, I imported the WordPress database into our online database modeling tool. For the record, the structure of the database is as follows:

WordPress – Behind the Scenes, Part 1

How often have you wondered about the structure of an existing database? It could be a 5-year-old legacy system or a brand-new open-source project. Let’s take a look at the ERD diagram of the database behind the most famous content management system: WordPress. What Is WordPress and How Does It Work? WordPress is an open-source CMS (content management system) that was initially released in 2003. It started out as a blogging platform, but it has developed so much that today it can be used for almost anything.

Logging in With External Services

Inputting a username and password is one way of accessing an account, but it’s not the only one. In this article, we’ll see how to enable external services (like Google or Facebook) when logging in to a database. What Are External Service Logins? Giving a user the option to access their system accounts through external services is a growing trend among web designers. This option can provide several benefits, such as giving users one less name-and-password combination to remember.

Creating a Data Model for Carpooling

Nowadays, carpooling is accepted and promoted by people around the globe. It certainly reduces one’s personal carbon footprint, and it can be more cost-effective than renting or buying a car. Carpooling also takes a lot of work – organizational work that can readily be done by a well-designed database. This article explains a detailed data model that a carpooling website could use. Data Design, Meet Carpooling So, we need to design a data model for a ride-share (aka carpooling) website.

Problem Set 2 – Identifying Entities and Attributes

function toggleDiv(id) { $("#hide-show-div-" + id).toggle(); var button = $("#hide-show-button-" + id); var label = button.prop('value'); if (label == 'Hide Solution') { button.prop("value", "Show Solution"); } else { button.prop("value", "Hide Solution"); } } In an earlier article on data modeling we promised to give you a set of exercises to practice finding entities and attributes. Here is the second installment of our problem set. Enjoy. Problem 1: Countries Description: Find the right entities and their attributes to represent all the countries in the world, their interior regions (which can be called states, provinces, or regions) and their cities.

Renting out Cars Is as Simple as Driving: A Data Model for a Car Rental Company

You might have rented a car on your last vacation. You reserved your car online, and then picked it up from its designated location after paying all the previously-agreed charges. Once you were done, you returned it to the agency and perhaps paid some additional fees. Did you ever think about the system that makes all these things happen? In this article, we’ll look at a data model for a car rental system.

Problem Set 1 – Identifying Entities

function toggleDiv(id) { $("#hide-show-div-" + id).toggle(); var button = $("#hide-show-button-" + id); var label = button.prop('value'); if (label == 'Hide Solution') { button.prop("value", "Show Solution"); } else { button.prop("value", "Hide Solution"); } } In an earlier article on data modeling we promised to give you a set of exercises to practice finding entities. Well, here they are. Have fun! Problem 1: Language School Mr. Trotter, the proprietor of a rapidly-growing language school, wants to introduce a new system in his company.

Using Different MySQL Storage Engines in Database Design

Any database architect designing a MySQL database faces the issue of selecting the proper storage engine. Usually, an application uses only one engine: MyISAM or InnoDB. But let’s try to be a little more flexible and imagine how different storage engines can be used. The Initial Data Model To begin, let’s build a simplified data model for a CRM (customer relationship management) system that we’ll use to illustrate the point.

Database Modeling

I wrote a song about dental floss but did anyone’s teeth get cleaner? Frank Zappa When we think of the dental office, our first associations are the drill, the pain, and the fear. OK, that sounds bad. Besides taking care of teeth, a dentist has many other obligations that are professional, legal, or both. All of them require proper data management. To meet this documentation requirement, many dental and medical offices use paper records.

An Unemotional Logical Look at SQL Server Naming Conventions

In the database world, there are some things that are universally agreed upon. Increased RAM is largely beneficial to DMBS systems. Spreading out data and log files on RAID improves performance. Naming conventions are not one of those things. This is a surprisingly polarizing topic, with the proponents of various methodologies firmly entrenched in their positions. And very vocal and passionate in their defense of the same. This article will delve into some of the specific conventions and the arguments on both sides, while attempting to present a reasonable conclusion for each point.

How Does Database Design Help Organize Teachers, Lessons, and Students?

An investment in knowledge pays the best interest. Benjamin Franklin In the modern world, education is omnipresent. Now more than ever before, it plays an important role in our society. It’s so important, in fact, that many of us continue our education well after finishing school or college. We have all heard of lifelong learning, non-formal education, and workshops for all ages. These methods differ from formal education in many ways, but they also have things in common.

50 Shades of NULL – The Different Meanings of NULL in SQL

Tony Hoare, who is mostly referred to as the inventor of the NULL reference, now calls it a billion-dollar mistake which pretty much all languages are now “suffering” from, including SQL. Quoting Tony (from his Wikipedia article): I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W).

Database Model for a Messaging System

People love to communicate. We often joke that any software system always evolves into a messaging system. This article will explain the system requirements and step by step approach to design a data model for a messaging system. Requirements in Nutshell The core functionality of a messaging system in an application is to send notifications/messages to a user or a set of users. Our system also allows one to send messages to a user group.

Modeling a Database for Recording Sales. Part 1

Storing sales data properly and later combining it can lead to creating a predictive model with a high rate of accuracy. In this and the next few articles we’ll analyze a database design for recording sales. Everyone lives by selling something. Robert Louis Stevenson In today’s world, selling products is ubiquitous. And salespeople who have access to robust tools that leverage historical data to analyze trends and enable an enterprise to adjust business strategies accordingly have an advantage over their competitors.

Tips for Better Database Design

Over the years, working as a data modeler and database architect, I have noticed that there are a couple rules that should be followed during data modeling and development. Here I describe some tips in the hope that they might help you. I have listed the tips in the order that they occur during the project lifecycle rather than listing them by importance or by how common they are.

Managing Roles and Statuses in a System

There are many ways to solve a problem, and that’s the case with administering roles and user statuses in software systems. In this article you’ll find a simple evolution of that idea as well some useful tips and code samples. Basic Idea In most systems, there is usually a need to have roles and user statuses. Roles are related to rights that users have while using a system after successfully logging in.

Database Model for a Driving School’s Reservation System. Part 2

Let’s build further changes into the data model, which I created in my earlier blog post, such as having an automated approach to assigning an instructor and vehicle to a lesson, invoicing to customers and tracking of them. First off, I need to build logic on the application side to assign an instructor and vehicle to lessons before they actually take place. The main thing to ensure here is availability, i.

How to Keep Track of What the Users Do

In several of the projects we have worked on, customers have asked us to log more user actions in the database. They want to know all of the actions the users perform in the application, but capturing and recording all human interactions can be challenging. We had to log all modifications of data performed via the system. This article describes some of the pitfalls we encountered and the approaches that we used to overcome them.

Designing a Data Model for a Hotel Room Booking System

It’s common knowledge that the best way to learn something is to practice it in a real-life scenario. Obviously, the same applies to database modeling. Therefore, in this article I decided to teach you how to create a simple database structure, taking a textbook example of a hotel room reservation system. I will show you how to get started and give you some ideas for extending the model.

Database Model for a Driving School’s Reservation System. Part 1

I need to design a data model for a reservation system for a driving school. The subject area looks quite straightforward, but complexities are still involved. You have to track all requests from clients and keep track of resources (vehicle, time and instructor) consumed during lessons. Introduction I like to use a domain driven approach for designing a data model. It makes me put technology obsession aside and concentrate primarily on modeling the subject area revolving around its associated entities and relationships amongst themselves.

How to Design a Database Model for a Movie Theater Reservation System

Do you like going to the movies? Have you ever considered what the database design behind their reservation system looks like? In this article we’ll prepare an example database model for a movie theater. There are a few assumptions we have to bear in mind: contemporary multiplex movie theaters can have one or more auditoriums within a larger complex, each auditorium can have a different number of seats, seats are numerated with row number and seat position within a row, a movie can have multiple screenings at different times, or it can be screened simultaneously in a different auditorium, for each screening a seat can be reserved/sold only once, we want to track who entered each reservation/sale into the system.

Adding More Advanced Features Like Managing Categories and Voting on Threads and Posts

In my second article about an online forum, I mentioned that there might be several more advanced features to be added: Forum categories and sub-categories where each category has a subject, several moderators and additional information like creation date of the category. A post might have a subject in addition to the content. We might want to allow users to vote up and vote down on threads and posts.

Making a More Advanced Model With User, Thread, and Post Statuses

In my first article about an online forum, I mentioned that there might be several more advanced features to add: More formal details about the user instead of a single “name” field. You may want the user’s first name, last name and username or nickname. A nice forum would also allow users to have a profile picture, email, roles, status (to allow users to be blocked), and other information like when they last visited the forum.

A Database Model for an Online Survey. Part 4

In this final article in a four-part series, I complete the design for an online survey database to provide flexibility for multiple surveys, question re-use, multiple choice answers, ordering of questions, conditional jumps in the survey based on responses, and control over the users’ access to surveys via groups of survey owners. Introduction In the conclusion to Part 3 of this series of articles, I mentioned that I would be adding more advanced features in this article.

Basing Database Models in Reality: A Blogger’s Challenge

When writing a blog post on database modeling, you must be prepared that your abstract model doesn’t meet the needs of most readers. The reason is simple. Real-life database models are usually created in close relation to specific business and development requirements while the blog models are not. For the last few weeks, I have been writing blog posts about creating database models. Topics ranged from a general approach to database modeling through a simple online forum to a model for a more complex online survey.

A Database Model for an Online Survey. Part 3

In the conclusion to Part 2 of this series of articles, I mentioned that I would be adding more advanced features, such as: Conditional ordering of questions in a survey or, in other words, the possibility for a conditional path through the survey Administration of the survey Reports and analytics In this third article related to an online survey, I will extend the functionality to support conditional ordering of questions.

A Database Model for an Online Survey. Part 2

In part 1 of this article series, we discussed a basic design for an online survey. In the conclusion to that article, I mentioned part 2 would cover more advanced features for our survey such as: Different types of questions such as multiple choice questions Conditional order of questions in a survey or, in other words, the possibility for a conditional path through the survey Administration of the surveys Reports and analytics Let’s start by extending the functionality to support different types of questions.

A Database Model for an Online Survey. Part 1

I need to create the design for a new database which will be the data layer for an application; the application will be an online survey or polling like Survey Monkey. My challenge is that the functionality that I require is not supported by existing survey sites, so I need to build my own. What I need is a conditional survey (if the answer to question 4 is “yes,” then we ask question 5 and skip question 6; but if the answer to question 4 is “no,” then we skip question 5 and ask question 6).

Modeling a Basic Data Structure to Manage Users, Threads, and Posts

An online discussion forum is a site where people can hold conversations in the form of posted messages. Discussion forums allow conversations to take place when people are not on-line, and messages may be temporarily archived. Also, depending on the forum set-up, a message might need to be approved by a moderator before it becomes visible to other users. Forums have a specific set of terms, for example, a single conversation is generally referred to as a “thread”.

How to Store Employees’ Schedules in a Database

Level: Beginner So many organizations face the common problem of storing employee schedules. No matter what institution: a company, a university or simply an individual, many entities need an application to view schedules. Therefore, I will try to come up with a database model and then, in a future article, we’ll talk about a simple application to store employees’ schedules in a database. Currently the design looks as follows:

How Do You Make Your Database Speak Many Languages?

The Scenario You are the owner of an online store, located in Poland. The majority of your customers are from Poland and they speak Polish. But you want to sell your products abroad too and your international customers mainly speak English. So you want your online store to be available in both Polish and English. You also expect that your products will sell well in France, so you anticipate that you’ll have to prepare a French version of the store as well (and maybe Spanish too, because why not?

UML Notation

UML is popular for its notations. We all know that UML is for visualizing, specifying, and documenting the components of software and non software systems. What’s more, UML has many types of diagrams which are divided into two categories. Some types represent structural information, others general types of behaviors. Among these, there is one that is commonly used for entity relationship diagrams. In UML, an entity is represented by a rectangle:

Arrow Notation

Arrow notation has become one of the less recognized notations in entity relationships diagrams in recent years. Let’s discuss its elements. Entity and relationships As you can see below, an entity is always represented by a rectangle, which is common to most notations (there isn’t a distinction if it is dependent or independent entity). Relationships and cardinality are represented by various combinations of arrows as the diagram below presents.

IDEF1X Notation

IDEF1X (Integration DEFinition for Information Modeling) is a method for designing relational databases with a syntax that supports constructs in developing conceptual schema. Not everyone knows that this notation has an interesting history. Indeed, the need for semantic data models was first recognized by the U.S. Air Force in the mid-1970s. As a result, the ICAM Program came into being (It identified a need for better analysis and communication techniques for people involved in improving manufacturing productivity), that later developed a series of techniques known as the IDEF; IDEF1X being one of them.

Chen Notation

Continuing our trip through different ERD notations, let’s review the Chen ERD notation. Peter Chen, who developed entity-relationship modeling and published his work in 1976, was one of the pioneers of using the entity relationship concepts in software and information system modeling and design. The Chen ERD notation is still used and is considered to present a more detailed way of representing entities and relationships. Entities An entity is represented by a rectangle which contains the entity’s name.

Barker’s Notation

When looking at different kinds of ERD notations, it is hard not to come across Barker’s ERD notation, which is commonly used to describe data for Oracle. Richard Barker and his coworkers developed this ERD notation while working at the British consulting firm CACI around 1981, and when Barker joined Oracle, his notation was adopted. Let’s take a closer look at Barker’s syntax. The most important components in the ERD diagram are:

ERD Notations in Data Modeling

An entity relationship diagram (ERD) is a diagram that defines the structure of database instances. Choosing which notation to use is typically left up to personal preference or conventions. Here, you can find some useful information about each notation: Part 1 – Barker’s Notation Part 2 – Chen Notation Part 3 – IDEF1X Notation Part 4 – Arrow Notation Part 5 – UML Notation Part 6 – Crow’s Foot Notation Which ERD notation are you using?

Online tools for trying out SQL design and queries

In this article I’m going to show you how to design a database, pour in some data, and finally execute queries. Everything will be done using only a ... web browser. That’s right, no installation, no license keys, no de-installation. Just switch to Google Chrome and follow along. Database design To design a database I will use Vertabelo. Since this is a Vertabelo product blog, the choice is obvious :)

How to Create a Database Model From Scratch

So you want to create your first database model but you don’t know how to start? Read on! I assume you already know a little about tables, columns, and relationships. If you don’t, watch our video tutorials before you continue. Start With a System Description You should always start creating a database model with a description of a system. In a classroom situation, a system description is given to you by a teacher.

Database Design 101

A good data modeling exercise for beginners is to create a data model of an online store. Every time I give this exercise to my students, I’m surprised at how difficult it is for them. Find the Concepts... Let’s see how it can be done. We know we have to create a table for every concept in the domain. Think about the nouns and noun phrases you would use to describe the domain.